X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETAVR.py;h=d950b53df659976902c61e44cd43d2c241f780ff;hp=2f06722601892e1157189b3e98c038b32884e9eb;hb=a6afe092f45e72e65198bf6fbe07e8da40706970;hpb=eddb0eb08f187dc156a6cb51878104df67d97436 diff --git a/client/GoodFETAVR.py b/client/GoodFETAVR.py index 2f06722..d950b53 100644 --- a/client/GoodFETAVR.py +++ b/client/GoodFETAVR.py @@ -67,6 +67,21 @@ class GoodFETAVR(GoodFET): def start(self): """Start the connection.""" self.writecmd(self.AVRAPP,0x20,0,None); + def glitchstart(self): + """Glitch into the AVR application.""" + self.glitchVerb(self.AVRAPP,0x20,None); + def glitchstarttime(self): + """Measure the timer of the START verb.""" + return self.glitchTime(self.AVRAPP,0x20,None); + def forcestart(self): + """Forcibly start a connection.""" + + for i in range(0x880,0xfff): + #self.glitchVoltages(0x880, i); + self.start(); + bits=self.lockbits(); + print "At %04x, Lockbits: %02x" % (i,bits); + if(bits==0xFF): return; def erase(self): """Erase the target chip.""" self.writecmd(self.AVRAPP,0xF0,0,None); @@ -74,6 +89,11 @@ class GoodFETAVR(GoodFET): """Read the target's lockbits.""" self.writecmd(self.AVRAPP,0x82,0,None); return ord(self.data[0]); + def setlockbits(self,bits=0x00): + """Read the target's lockbits.""" + self.writecmd(self.AVRAPP,0x92,1,[bits]); + return self.lockbits(); + def eeprompeek(self, adr): """Read a byte of the target's EEPROM.""" self.writecmd(self.AVRAPP,0x81 ,2,