Changes

Glitch Explorer

194 bytes added, 12:59, 6 September 2018
Using the Glitch Explorer - The Basics
{{Warningbox|For the older V3.x tools, see [[V3:Glitch_Explorer]]}}
<br>
{{Warningbox|This page is under construction }}
The Glitch Explorer allows an automatic exploration of a range of one or more parameter values. It means that the user can test multiple glitch setups at the same time and see the result in a nice scatterplot, highlighting the successful attempts.
[[File:glitch explorer overviewglitch_explorer_overview_v4.pngPNG|1100px]]
== The Glitch Explorer Window ==
The main window of the glitch explorer looks like this:
[[File:Screen Shot 2016-07-15 at 10.24.13 AMglitch_explorer_window_v4.png|400px]]
In top, the output of the system combined with the parameters of the glitch is displayed (the 'output window').
In bottom, you can adjust general parameters of the glitching system, such as what counts as a successful glitch or not and how many parameters the ability to fiddle withload existing data into the glitch explorer table.
== Using the Glitch Explorer - The Basic Basics ==To start Here are a few steps that should be done before using the Glitch Explorer, you should first switch to glitch explorer (example uses the "Target Settings" tab ChipWhisperer Lite):<ol><li> Connect the ChipWhisperer Scope and set Target (example: run the "Output Format" to be $GLITCH$<code>connect_cwlite_simpleserial. This will mean data is no longer sent to py</code> script)[[File: run_connect_script.png|800px]]</li><br><li>Set up the terminal emulator when using the capture 1 or capture M buttons, but instead, is logged in parameters for glitching (example: run the glitch explorer window<code>setup_cwlite_glitch.py</code> script)[[File: run_glitch_script.png|800px]]Then, you should define what is a Normal and a Successful Response</li><br><li>Setup the automatic reset aux module (example: run the <code>aux_reset_cw1173. py</code> script)[[ File: run_reset_aux_script.png|800px]]<br><b>Note: This information is used file may have to highlight the individual attacksbe edited if you later have issues with trigger timeouts. You should use Python expressions here, where 's' is a str-type variable which contains The trigger timeouts can usually be fixed by switching the response appropriate lines in a copy of the system script</b><syntaxhighlight lang=python># Reset before arming - more stableaux_list.register(exResetter.: sresetThenDelay, "before_trace")# Reset after arming - scope can catch entire reset#aux_list.endswithregister(Resetter.delayThenReset, "123456after_arm")</syntaxhighlight>to <syntaxhighlight lang=python># Reset before arming - more stable#aux_list.register(Resetter.resetThenDelay, "before_trace")# Reset after arming - scope can catch entire resetaux_list.register(Resetter.delayThenReset, "after_arm")</syntaxhighlight>The next step is <b> Another note: Remember to set run this script and disable the number of tuning parametersother aux module inside the "Aux Settings" tab. You may want to start with 1 (0 is used to just record </b></li><br><li>Change the glitch trigger source from manual exploration attempts to external single. Run this command in the tablepython console:<code>self.scope.glitch.trigger_src = "ext_single"</code></li><br><li>Register the change_glitch_parameters function as the glitch explorer iterator (example: run the <code>ge_widthoffset_vary.py</code> script) and then increment it to 2 or more later. This will generate another group in Changes to the list where you step size and range that the glitch explorer covers can tune be customized by changing variables within this script and running the settings for each parameterchanged script.[[File:register_ge_iterator.png | 800px]]</li><br><li>Set the normal and successful outputs (example: using the firmware in glitch-simple, after editing the c to use the glitch1() function rather than the glitch_infinite() function)[[File:Screen Shot 2016-07-15 at 10.30.53 AMset_responses.png|400px]]* Name - is just a reminder of what we are tuning</li><br><li>Open the glitch explorer graph widget by pressing the <b>Plot Widget</b> button inside the Glitch Explorer Window.</li></ol>
* Parameter Path - defines what will be modified. This string can simply be copied from the Script Commands, provided that you remove the last element first (which is the value).
* Data Format - defines what type of data will be inserted into the parameter.
* Range - defines the range from the minimum to maximum that will be swept for the parameter.
* Value - defines the current/start value of the sweep. This is NOT automatically set to the minimum value of your sweep since you may want to stop and continue later or attack a smaller number of traces. If you want to perform the full sweep, you must manually set this to the minimum of the range or click reset.
* Step - defines the incremented on each glitch attempt. When the value reaches the maximum defined by the range, it will loop around to the minimum and continue incrementing.
* Repeat - defines how many times to perform the same value. This can be used to determine the reliability of each glitch value.
The last step is to set the "Generic Settings"->"Acquisition Settings"->"Number of Traces" to a value high enough to loop trough all the value combinations. It can be performed automatically clicking in the "Glitch Explorer"->"Traces Required"->"Use this value" button.
Now you are ready to click the "Capture M" to start the exploration.</b>If you run into forced trigger issues go back to the previous steps where it was mentioned how to fix the issue.</b>
== Using the Glitch Explorer - Advanced ==
To get more detailed information of how to use the Glitch Explorer, follow the [[Tutorial A2 Introduction to Glitch Attacks (including Glitch Explorer)|A2]] and [[Tutorial A3 VCC Glitch Attacks|A3]] tutorials.
If you want to create a script to fully automate this attack, check out the example in <code> chipwhisperer/software/scripting-examples/glitch_explorer_simple.py </code>.
Approved_users, administrator
366
edits