X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETGlitch.py;h=61dc65b95d24879e127d899cbc1497ef7c3a23f8;hp=637b2d1564c65d2b93df357d9d456d0deb8137b2;hb=58aa5342f8dc846471ee94a6675e842d6abbc17c;hpb=500045b9c7757d4bf0fea912f4acdef5ee47c6f6 diff --git a/client/GoodFETGlitch.py b/client/GoodFETGlitch.py index 637b2d1..61dc65b 100644 --- a/client/GoodFETGlitch.py +++ b/client/GoodFETGlitch.py @@ -127,7 +127,7 @@ class GoodFETGlitch(GoodFET): g('set term png'); g('set output "timevcc.png"'); g(script_timevcc); - def explore(self,tstart=0,tstop=-1, trials=5): + def explore(self,tstart=0,tstop=-1, trials=1): """Exploration phase. Uses thresholds to find exploitable points.""" gnd=0; self.scansetup(1); #Lock the chip, place key in eeprom. @@ -142,6 +142,8 @@ class GoodFETGlitch(GoodFET): c=self.db.cursor(); c.execute("select time,min,max from glitchrange where max-min>0;"); rows=c.fetchall(); + c.close(); + random.shuffle(rows); for r in rows: t=r[0]; min=r[1]; @@ -215,10 +217,10 @@ class GoodFETGlitch(GoodFET): rows=c.fetchall(); for a in rows: return True; + c.close(); return False; def scanat(self,lock,trials,vcc,gnd,time): client=self.client; - db=self.db; client.glitchRate(time); client.glitchVoltages(gnd, vcc); #drop voltage target gcount=0; @@ -243,11 +245,13 @@ class GoodFETGlitch(GoodFET): scount+=1; #print "values (%i,%i,%i,%i,%i);" % ( # time,vcc,gnd,gcount,scount); - if(lock>0): + if(lock==0): self.db.execute("insert into glitches(time,vcc,gnd,trials,glitchcount,count,lock)" "values (%i,%i,%i,%i,%i,%i,%i);" % ( time,vcc,gnd,trials,gcount,scount,lock)); - else: + elif scount>0: + print "INSERTING AN EXPLOIT point, t=%i and vcc=%i" % (time,vcc); self.db.execute("insert into exploits(time,vcc,gnd,trials,count)" "values (%i,%i,%i,%i,%i);" % ( time,vcc,gnd,trials,scount)); + self.db.commit(); #Don't leave a lock open.