def loadExtraModules(self): self.aesKeyScheduleDialog = AesKeyScheduleDialog(self) self.desKeyScheduleDialog = DesKeyScheduleDialog(self) self.attackScriptGen = AttackScriptGen(self) self.traceExplorerDialog = TraceExplorerDialog(self) self.traceExplorerDialog.scriptsUpdated.connect(self.attackScriptGen.reloadScripts) self.traceExplorerDialog.runScriptFunction.connect(self.attackScriptGen.runScriptFunction) self.attackScriptGen.utilList = [self.traceExplorerDialog]
def loadExtraModules(self): self.keyScheduleDialog = KeyScheduleDialog(self) self.attackScriptGen = AttackScriptGen(self) self.traceExplorerDialog = TraceExplorerDialog(self) self.traceExplorerDialog.scriptsUpdated.connect(self.attackScriptGen.reloadScripts) self.traceExplorerDialog.runScriptFunction.connect(self.attackScriptGen.runScriptFunction) self.attackScriptGen.utilList = [self.traceExplorerDialog]
class CWAnalyzerGUI(CWMainGUI): """ Main ChipWhisperer Analyzer GUI Window Class. This is a front-end to the CWCoreAPI. """ def __init__(self, api): super(CWAnalyzerGUI, self).__init__(api, name="ChipWhisperer" + u"\u2122" + " Analyzer " + CWCoreAPI.__version__, icon="cwiconA") self.addExampleScripts( pluginmanager.getPluginsInDictFromPackage( "chipwhisperer.analyzer.scripts", False, False, self)) CWAnalyzerGUI.instance = self self.attackScriptGen.reloadScripts() def loadExtraModules(self): self.keyScheduleDialog = KeyScheduleDialog(self) self.attackScriptGen = AttackScriptGen(self) self.traceExplorerDialog = TraceExplorerDialog(self) self.traceExplorerDialog.scriptsUpdated.connect( self.attackScriptGen.reloadScripts) self.traceExplorerDialog.runScriptFunction.connect( self.attackScriptGen.runScriptFunction) self.attackScriptGen.utilList = [self.traceExplorerDialog] def addToolbarItems(self, toolbar): toolbar.addAction( QAction(QIcon(':/images/attack.png'), 'Start Attack', self, triggered=self.doAnalysis)) def addToolMenuItems(self): # self.traceExplorerAct = QAction('Trace Explorer', self, statusTip='Get information on traces', # triggered=self.traceExplorerDialog.show) # self.toolMenu.addAction(self.traceExplorerAct) self.aesScheduleAct = QAction( 'AES Key Schedule', self, statusTip='Show AES Key Schedule calculator', triggered=self.keyScheduleDialog.show) self.toolMenu.addAction(self.aesScheduleAct) def doAnalysis(self): """Called when the 'Do Analysis' button is pressed""" self.clearFocus() if self.api.project().traceManager().numTraces() == 0: ret = QMessageBox.question( self, "Attack Error", "No traces enabled in project.\nOpen Trace Manager?", QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.Yes: self.traceManagerDialog.show() return self.attackScriptGen.flushTimer() logging.info("Executing analysis...") self.api.runScriptModule(self.attackScriptGen.setupScriptModule()) logging.info("Analysis completed") def addSettingsDocks(self): self.settingsScriptDock = self.addSettings(self.attackScriptGen.params) self.settingsPreprocessingDock = self.addSettings( self.attackScriptGen.preprocessingParams) self.settingsAttackDock = self.addSettings( self.attackScriptGen.attackParams) self.settingsTraceExplorer = self.addSettings( self.traceExplorerDialog.params) self.settingsResultsDock = self.addSettings( ResultsBase.getClassParameter()) # Load all ActiveTraceObservers self.windowMenu.addSeparator() for k, v in ResultsBase.getClasses().iteritems(): if issubclass(v, PassiveTraceObserver) or issubclass( v, AttackObserver): ResultsBase.createNew(k) self.tabifyDocks(self.resultDocks) self.tabifyDocks([ self.settingsScriptDock, self.settingsPreprocessingDock, self.settingsAttackDock, self.settingsTraceExplorer, self.settingsResultsDock ]) self.attackScriptGen.editorDocks() def tracesChanged(self): """Traces changed due to loading new project or adjustment in trace manager, so adjust limits displayed and re-plot the new input trace""" self.attackScriptGen.reloadScripts() @staticmethod def getInstance(): return CWAnalyzerGUI.instance
class CWAnalyzerGUI(CWMainGUI): """ Main ChipWhisperer Analyzer GUI Window Class. This is a front-end to the CWCoreAPI. """ def __init__(self, api): super(CWAnalyzerGUI, self).__init__(api, name="ChipWhisperer" + u"\u2122" + " Analyzer " + CWCoreAPI.__version__, icon="cwiconA") self.addExampleScripts(pluginmanager.getPluginsInDictFromPackage("chipwhisperer.analyzer.scripts", False, False, self)) CWAnalyzerGUI.instance = self self.attackScriptGen.reloadScripts() def loadExtraModules(self): self.keyScheduleDialog = KeyScheduleDialog(self) self.attackScriptGen = AttackScriptGen(self) self.traceExplorerDialog = TraceExplorerDialog(self) self.traceExplorerDialog.scriptsUpdated.connect(self.attackScriptGen.reloadScripts) self.traceExplorerDialog.runScriptFunction.connect(self.attackScriptGen.runScriptFunction) self.attackScriptGen.utilList = [self.traceExplorerDialog] def addToolbarItems(self, toolbar): toolbar.addAction(QAction(QIcon(':/images/attack.png'), 'Start Attack', self, triggered=self.doAnalysis)) def addToolMenuItems(self): # self.traceExplorerAct = QAction('Trace Explorer', self, statusTip='Get information on traces', # triggered=self.traceExplorerDialog.show) # self.toolMenu.addAction(self.traceExplorerAct) self.aesScheduleAct = QAction('AES Key Schedule', self, statusTip='Show AES Key Schedule calculator', triggered=self.keyScheduleDialog.show) self.toolMenu.addAction(self.aesScheduleAct) def doAnalysis(self): """Called when the 'Do Analysis' button is pressed""" self.clearFocus() if self.api.project().traceManager().numTraces() == 0: ret = QMessageBox.question(self, "Attack Error", "No traces enabled in project.\nOpen Trace Manager?", QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.Yes: self.traceManagerDialog.show() return self.attackScriptGen.flushTimer() self.updateStatusBar("Executing analyzis...") self.api.runScriptModule(self.attackScriptGen.setupScriptModule()) self.updateStatusBar("Analysis completed") def addSettingsDocks(self): self.settingsScriptDock = self.addSettings(self.attackScriptGen.params) self.settingsPreprocessingDock = self.addSettings(self.attackScriptGen.preprocessingParams) self.settingsAttackDock = self.addSettings(self.attackScriptGen.attackParams) self.settingsTraceExplorer = self.addSettings(self.traceExplorerDialog.params) self.settingsResultsDock = self.addSettings(ResultsBase.getClassParameter()) # Load all ActiveTraceObservers self.windowMenu.addSeparator() for k, v in ResultsBase.getClasses().iteritems(): if issubclass(v, PassiveTraceObserver) or issubclass(v, AttackObserver): ResultsBase.createNew(k) self.tabifyDocks(self.resultDocks) self.tabifyDocks([self.settingsScriptDock, self.settingsPreprocessingDock, self.settingsAttackDock, self.settingsTraceExplorer, self.settingsResultsDock]) self.attackScriptGen.editorDocks() def tracesChanged(self): """Traces changed due to loading new project or adjustment in trace manager, so adjust limits displayed and re-plot the new input trace""" self.attackScriptGen.reloadScripts() @staticmethod def getInstance(): return CWAnalyzerGUI.instance