title "Exploited"
""";
+script_timevccrange="""
+plot "< sqlite3 glitch.db 'select time,vcc,glitchcount from glitches where count=0;'" \
+with dots \
+title "Scanned", \
+"< sqlite3 glitch.db 'select time,vcc,count from glitches where count>0;'" \
+with dots \
+title "Success", \
+"< sqlite3 glitch.db 'select time,max(vcc),count from glitches where count=0 group by time ;'" with lines title "Max", \
+"< sqlite3 glitch.db 'select time,min(vcc),count from glitches where count>0 group by time ;'" with lines title "Min"
+""";
+
class GoodFETGlitch(GoodFET):
def __init__(self, *args, **kargs):
g('set datafile separator "|"');
g(script_timevcc);
+ print "^C to exit.";
while 1==1:
time.sleep(30);
- g('replot');
+ # g('replot');
def graph(self):
print "Usage: %s chip verb [objects]\n" % sys.argv[0];
print "%s avr learn" % sys.argv[0];
print "%s avr graph" % sys.argv[0];
+ print "%s avr graphx11" % sys.argv[0];
print """
This populates a database, glitch.db, with a record of all attempted
glitches. Graphs can then be generated from the results, allowing
if(sys.argv[2]=="learn"):
glitcher.learn();
+
+if(sys.argv[2]=="graphx11"):
+ glitcher.graphx11();
+
if(sys.argv[2]=="graph"):
glitcher.graph();