X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.glitch;h=6750c8fcbedef6cfc64559b770beaea72fe5e6b6;hp=aee0d490bd96c46f89cc70ec5a48035c31b3a51a;hb=671771f8909b6821de8aef5b90f9390ffb648988;hpb=3abb4b2ac781cca9fbf0d44eaaae7238edf99ce8 diff --git a/client/goodfet.glitch b/client/goodfet.glitch index aee0d49..6750c8f 100755 --- a/client/goodfet.glitch +++ b/client/goodfet.glitch @@ -11,14 +11,14 @@ from intelhex import IntelHex16bit, IntelHex; 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 @@ -27,12 +27,14 @@ sequence for a new chip is as follows. 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(); @@ -40,13 +42,27 @@ if(sys.argv[2]=="graphx11"): 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.";