import sqlite3;
-glitcher=GoodFETGlitch();
-
if(len(sys.argv)==1):
print "Usage: %s chip verb [objects]\n" % sys.argv[0];
print "%s avr learn" % sys.argv[0];
print "%s avr explore" % sys.argv[0];
print "%s avr graph" % sys.argv[0];
print "%s avr graphx11" % sys.argv[0];
+ print "%s avr points" % sys.argv[0];
+ print "%s avr npoints" % 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
On a sample chip for the same model as the target,
1) Run 'goodfet $chip learn' in order to learn the glitching voltages.
-2) Run 'goodfet $chip explore' to find a time at which to glitch.
+2) Run 'goodfet $chip crunch' in order to precompute glitching ranges.
+3) Run 'goodfet $chip explore [tstart tstop]' to find a time at which to glitch.
Then on a chip to be extracted,
3) Run 'goodfet $chip exploit' to exploit a chip and recover its firmware."""
sys.exit();
+glitcher=GoodFETGlitch();
+
+if(sys.argv[2]=="graphx11"):
+ glitcher.graphx11();
+ exit();
+if(sys.argv[2]=="graph"):
+ glitcher.graph();
+ exit();
+if(sys.argv[2]=="points"):
+ glitcher.points();
+ exit();
+if(sys.argv[2]=="rangepoints"):
+ glitcher.rpoints();
+ exit();
+
+if(sys.argv[2]=="crunch"):
+ glitcher.crunch();
+ exit();
glitcher.setup(sys.argv[1]);
if(sys.argv[2]=="learn"):
glitcher.learn();
if(sys.argv[2]=="explore"):
- glitcher.explore();
+ times=None;
+ if(len(sys.argv)>=4):
+ times=range(int(sys.argv[3]),
+ int(sys.argv[4]));
+ glitcher.explore(times);
if(sys.argv[2]=="exploit"):
print "Coming soon.";
-if(sys.argv[2]=="graphx11"):
- glitcher.graphx11();
-
-if(sys.argv[2]=="graph"):
- glitcher.graph();