def __init__(self, api): try: self.analyzer_app = cwa.makeApplication(doDeleteLater=False) except RuntimeError as e: if 'QApplication instance already exists' in str(e): pass else: raise # Create and show the GUI self.gui = cwa.CWAnalyzerGUI(api) self.gui.show() self.gui.execute = ExecWithParentAsSelf(parent=self.gui)
# This is what the API will execute self.api.openProject("projects/tut_descpa.cwp") self.initPreprocessing() # Setup the analysis, widgets, and do the attack self.initAnalysis() self.initReporting() self.attack.processTraces() # Delete all pending scripts executions (that are observing the api be available again), # otherwise the current setup would be overridden self.api.executingScripts.disconnectAll() if __name__ == '__main__': from chipwhisperer.common.api.CWCoreAPI import CWCoreAPI import chipwhisperer.capture.ui.CWCaptureGUI as cwc import chipwhisperer.analyzer.ui.CWAnalyzerGUI as cwa from chipwhisperer.common.utils.parameter import Parameter app = cwc.makeApplication(doDeleteLater=False) Parameter.usePyQtGraph = True api = CWCoreAPI() # Instantiate the API gui = cwc.CWCaptureGUI(api) # Instantiate the Capture GUI api.runScriptClass(Capture) gui.deleteLater() gui.reset() gui = cwa.CWAnalyzerGUI(api) # Instantiate the Analyzer GUI api.runScriptClass(Attack) # Run the script (default is the "run" method) app.exec_()
# Calculate the POIs self.cwagui = CWAnalyzerGUI.getInstance() ted = self.cwagui.attackScriptGen.utilList[0].exampleScripts[0] return ted.poi.calcPOI(numMax=3, pointRange=(0, 3000), minSpace=5)['poi'] def generateTemplates(self): # Generate the templates and save to the project self.TraceExplorerDialog_PartitionDisplay_displayPartitionStats() tRange = (0, 1499) poiList = self.TraceExplorerDialog_PartitionDisplay_findPOI() partMethod = PartitionHWIntermediate() templatedata = chipwhisperer.analyzer.attacks.profiling_algorithms.template.TemplateUsingMVS.generate( self.attack.getTraceSource(), tRange, poiList, partMethod) tfname = self.attack.attack.saveTemplatesToProject( tRange, templatedata) if __name__ == '__main__': import sys from chipwhisperer.common.api.CWCoreAPI import CWCoreAPI import chipwhisperer.analyzer.ui.CWAnalyzerGUI as cwa from chipwhisperer.common.utils.parameter import Parameter app = cwa.makeApplication() Parameter.usePyQtGraph = True api = CWCoreAPI() # Instantiate the API api.runScriptClass(Capture) gui = cwa.CWAnalyzerGUI(api) # Instantiate the Analyzer GUI api.runScriptClass(Attack) # Run the script (default is the "run" method) sys.exit(app.exec_())
ted.displayPartitions(differences={"partclass":PartitionHWIntermediate, "diffs":partDiffs}) ted.poi.setDifferences(partDiffs) def TraceExplorerDialog_PartitionDisplay_findPOI(self): # Calculate the POIs self.cwagui = CWAnalyzerGUI.getInstance() ted = self.cwagui.attackScriptGen.utilList[0].exampleScripts[0] return ted.poi.calcPOI(numMax=3, pointRange=(0, 3000), minSpace=5)['poi'] def generateTemplates(self): # Generate the templates and save to the project self.TraceExplorerDialog_PartitionDisplay_displayPartitionStats() tRange = (0, 1499) poiList = self.TraceExplorerDialog_PartitionDisplay_findPOI() partMethod = PartitionHWIntermediate() templatedata = chipwhisperer.analyzer.attacks.profiling_algorithms.template.TemplateUsingMVS.generate(self.attack.getTraceSource(), tRange, poiList, partMethod) tfname = self.attack.attack.saveTemplatesToProject(tRange, templatedata) if __name__ == '__main__': import sys from chipwhisperer.common.api.CWCoreAPI import CWCoreAPI import chipwhisperer.analyzer.ui.CWAnalyzerGUI as cwa from chipwhisperer.common.utils.parameter import Parameter app = cwa.makeApplication() Parameter.usePyQtGraph = True api = CWCoreAPI() # Instantiate the API api.runScriptClass(Capture) gui = cwa.CWAnalyzerGUI(api) # Instantiate the Analyzer GUI api.runScriptClass(Attack) # Run the script (default is the "run" method) sys.exit(app.exec_())
self.attack.setTargetSubkeys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) self.attack.setTraceSource(self.traces) self.attack.setPointRange((0,3000)) def initReporting(self): # Configures the attack observers (usually a set of GUI widgets) self.api.getResults("Attack Settings").setAnalysisSource(self.attack) self.api.getResults("Correlation vs Traces in Attack").setAnalysisSource(self.attack) self.api.getResults("Output vs Point Plot").setAnalysisSource(self.attack) self.api.getResults("PGE vs Trace Plot").setAnalysisSource(self.attack) self.api.getResults("Results Table").setAnalysisSource(self.attack) self.api.getResults("Save to Files").setAnalysisSource(self.attack) self.api.getResults("Trace Output Plot").setTraceSource(self.traces) self.api.getResults("Trace Recorder").setTraceSource(self.traces) def run(self): self.attack.processTraces() if __name__ == '__main__': import sys from chipwhisperer.common.api.CWCoreAPI import CWCoreAPI import chipwhisperer.analyzer.ui.CWAnalyzerGUI as cwa from chipwhisperer.common.utils.parameter import Parameter app = cwa.makeApplication() # Comment if you don't need the GUI Parameter.usePyQtGraph = True # Comment if you don't need the GUI api = CWCoreAPI() # Instantiate the API gui = cwa.CWAnalyzerGUI(api) # Comment if you don't need the GUI api.runScriptClass(UserScript) # Run UserScript through the API sys.exit(app.exec_()) # Comment if you don't need the GUI
self.attack.setTargetBytes([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) self.attack.setTraceSource(self.traces) self.attack.setPointRange((0,3000)) def initReporting(self): # Configures the attack observers (usually a set of GUI widgets) self.api.resultWidgets["Correlation vs Traces in Attack"].setAnalysisSource(self.attack) self.api.resultWidgets["Knownkey Source"].setAnalysisSource(self.attack) self.api.resultWidgets["Output vs Point Plot"].setAnalysisSource(self.attack) self.api.resultWidgets["PGE vs Trace Plot"].setAnalysisSource(self.attack) self.api.resultWidgets["Results Table"].setAnalysisSource(self.attack) self.api.resultWidgets["Save to Files"].setAnalysisSource(self.attack) self.api.resultWidgets["Trace Output Plot"].setTraceSource(self.traces) def run(self): self.attack.processTraces() if __name__ == '__main__': import sys from chipwhisperer.common.api.CWCoreAPI import CWCoreAPI import chipwhisperer.analyzer.ui.CWAnalyzerGUI as cwa from chipwhisperer.common.utils.parameter import Parameter app = cwa.makeApplication() # Comment this line if you don't want to use the GUI Parameter.usePyQtGraph = True # Comment this line if you don't want to use the GUI api = CWCoreAPI() # Instantiate the API # app.setApplicationName("Capture Scripted") # If you DO NOT want to overwrite settings from the GUI gui = cwa.CWAnalyzerGUI(api) # Comment this line if you don't want to use the GUI gui.show() # Comment this line if you don't want to use the GUI api.runScriptClass(UserScript) # Run the User Script sys.exit(app.exec_()) # Comment this line if you don't want to use the GUI
self.attack.setPointRange((0, 3000)) def initReporting(self): # Configures the attack observers (usually a set of GUI widgets) self.api.getResults("Attack Settings").setAnalysisSource(self.attack) self.api.getResults("Correlation vs Traces in Attack").setAnalysisSource(self.attack) self.api.getResults("Output vs Point Plot").setAnalysisSource(self.attack) self.api.getResults("PGE vs Trace Plot").setAnalysisSource(self.attack) self.api.getResults("Results Table").setAnalysisSource(self.attack) self.api.getResults("Save to Files").setAnalysisSource(self.attack) self.api.getResults("Trace Output Plot").setTraceSource(self.traces) self.api.getResults("Trace Recorder").setTraceSource(self.traces) def run(self): self.attack.processTraces() if __name__ == "__main__": import sys from chipwhisperer.common.api.CWCoreAPI import CWCoreAPI import chipwhisperer.analyzer.ui.CWAnalyzerGUI as cwa from chipwhisperer.common.utils.parameter import Parameter app = cwa.makeApplication() # Comment if you don't need the GUI Parameter.usePyQtGraph = True # Comment if you don't need the GUI api = CWCoreAPI() # Instantiate the API gui = cwa.CWAnalyzerGUI(api) # Comment if you don't need the GUI api.runScriptClass(UserScript) # Run UserScript through the API sys.exit(app.exec_()) # Comment if you don't need the GUI