def addOptions(self): self.optpanel = swing.JPanel(layout=awt.BorderLayout()) self.add(self.optpanel, awt.BorderLayout.EAST) self.commentcheck = swing.JCheckBox( COMMENTS, horizontalTextPosition=swing.SwingConstants.LEFT) self.commentcheck.setSelected(SHOWCOMMENTS) self.optpanel.add(self.commentcheck, awt.BorderLayout.EAST) # self.grbcheck = swing.JCheckBox('Gurobi:', horizontalTextPosition = swing.SwingConstants.LEFT)#w# # self.grbcheck.setSelected(False)#w# self.LPbox = swing.Box(swing.BoxLayout.LINE_AXIS) self.LPbox.add( swing.Box.createRigidArea(awt.Dimension(2 * BORDERWIDTH, 0))) self.LPbox.add(swing.JLabel(SOLVER)) self.solverbox = swing.JComboBox(Data.Problem.SOLVERS) self.solverbox.addActionListener(self.SolverSwitcher(self)) self.LPbox.add(self.solverbox) self.LPbox.add(swing.Box.createRigidArea(awt.Dimension(BORDERWIDTH, 0))) self.trimcheck = swing.JCheckBox( REDUCE, horizontalTextPosition=swing.SwingConstants.LEFT) self.LPbox.add(self.trimcheck) self.LPbox.add(swing.Box.createRigidArea(awt.Dimension(BORDERWIDTH, 0))) self.optpanel.add(self.LPbox, awt.BorderLayout.WEST) #CENTER->WEST
def addSectionReferences(self, parent, editor, sec_references): pstring = parent.bodyString() rejects = [] for z in sec_references: hs = z.headString().strip() spot = pstring.find(hs) if spot != -1: jp = swing.JPanel(java.awt.BorderLayout()) jp.setOpaque(0) jb = swing.JCheckBox() jb.setToolTipText("hide/show") jb.setOpaque(0) jb.setSelected(1) jp.add(jb, java.awt.BorderLayout.NORTH) jtp = swing.JTextPane() jp.add(jtp) jb.actionPerformed = lambda event, jtp=jtp, jp=jp: self.add_remove( jtp, jp) jtp.addKeyListener(self.swingmacs.kcb) doc = jtp.getDocument() jtp.setText(z.bodyString()) doc.addDocumentListener( self.NodeSyncher(z.copy(), jtp, self.swingmacs, self)) self.addBorder(jp, z.headString()) #jtp.setText( z.bodyString() ) self.scanNode(z, jtp) sas = text.SimpleAttributeSet() text.StyleConstants.setComponent(sas, jp) doc = editor.getDocument() doc.setCharacterAttributes(spot, len(hs), sas, 1) #self.scanNode( z, jtp ) else: rejects.append(z) return rejects
def initGui(self): self.sigv4ConfigurationTab = swing.JPanel() layout = swing.GroupLayout(self.sigv4ConfigurationTab) self.sigv4ConfigurationTab.setLayout(layout) self.addDomainInfo = swing.JLabel("Domain to test:") self.addDomainInfo.setFont(Font("Tahoma", 1, 12)) self.configurationLoadedInfo = swing.JLabel("") self.configurationLoadedInfo.setFont(Font("Tahoma", 1, 12)) self.isJsonCheck = swing.JCheckBox("JSON") self.isJsonCheck.setFont(Font("Tahoma", 1, 12)) self.parseCredsBtn = swing.JButton('Load configuration', actionPerformed=self.parseCreds) self.credsPanel = swing.JScrollPane() self.credsText = swing.JTextArea("Paste Creds Here.") self.credsText.setLineWrap(True) self.credsPanel.setViewportView(self.credsText) self.scopeUrlField = swing.JTextField("api.example.io") layout.setHorizontalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(15) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.isJsonCheck) .addComponent(self.credsPanel, swing.GroupLayout.PREFERRED_SIZE, 525, swing.GroupLayout.PREFERRED_SIZE) .addComponent(self.addDomainInfo) .addComponent(self.scopeUrlField, swing.GroupLayout.PREFERRED_SIZE, 350, swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.TRAILING) .addComponent(self.parseCredsBtn)) .addComponent(self.configurationLoadedInfo) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED)) .addComponent(self.addDomainInfo)) .addContainerGap(26, lang.Short.MAX_VALUE))) layout.setVerticalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(10) .addComponent(self.isJsonCheck) .addGap(10) .addComponent(self.credsPanel, swing.GroupLayout.PREFERRED_SIZE, 125, swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(10) .addComponent(self.addDomainInfo) .addGap(10) .addComponent(self.scopeUrlField, swing.GroupLayout.PREFERRED_SIZE, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(10) .addComponent(self.parseCredsBtn) .addGap(10) .addComponent(self.configurationLoadedInfo) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addContainerGap(swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE))))))) return
def run(self, server, name, *passw): self.as400 = acc.AS400(server, name, *passw) # Get user profile descriptions==> usrDct rUsrLst = rsc.RUserList(self.as400) rUsrLst.open() rUsrLst.waitForComplete() self.usrDct = {} for idx in range(rUsrLst.getListLength()): tmp_rUsr = rUsrLst.resourceAt(idx) key_usr = tmp_rUsr.getAttributeValue(rsc.RUser.USER_PROFILE_NAME) if key_usr.startswith('Q') or key_usr == 'FAXSTAR': continue tmp_usrText = tmp_rUsr.getAttributeValue( rsc.RUser.TEXT_DESCRIPTION) self.usrDct[key_usr] = tmp_usrText rUsrLst.close() # Interactive job list self.jobLst = rsc.RJobList(self.as400) self.jobLst.setSelectionValue(rsc.RJobList.PRIMARY_JOB_STATUSES, \ rsc.RJob.JOB_STATUS_ACTIVE) self.jobLst.setSelectionValue(rsc.RJobList.JOB_TYPE, \ rsc.RJob.JOB_TYPE_INTERACTIVE) self.jobLst.setSortValue([rsc.RJob.USER_NAME, rsc.RJob.JOB_NAME]) # Thread of execution to receive instant messages self.polchat = Thread(Poller(self)) # Form GUI self.contentPane.setLayout(awt.GridBagLayout()) self.addWindowListener(self) self.chkActive = swing.JCheckBox("Show only Active Users", 1) self.chatTxt = swing.JTextArea(5, 30, lineWrap=1, wrapStyleWord=1) self.rpyTxt = swing.JTextArea(10, 30, lineWrap=1, wrapStyleWord=1) self.users = swing.JComboBox(preferredSize=(250, 25), minimumSize=(250, 25)) self.showGui()
def registerExtenderCallbacks(self, callbacks): # Print information about the plugin, set extension name, setup basic stuff self.printHeader() callbacks.setExtensionName("SQLiPy") self._callbacks = callbacks self._helpers = callbacks.getHelpers() callbacks.registerContextMenuFactory(self) # Create SQLMap API configuration JPanel self._jPanel = swing.JPanel() self._jPanel.setLayout(awt.GridBagLayout()) self._jPanelConstraints = awt.GridBagConstraints() # Create panel for IP info self._jLabelIPListen = swing.JLabel("Listen on IP:") self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 0 self._jPanelConstraints.gridy = 0 self._jPanel.add(self._jLabelIPListen, self._jPanelConstraints) self._jTextFieldIPListen = swing.JTextField("",15) self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 1 self._jPanelConstraints.gridy = 0 self._jPanel.add(self._jTextFieldIPListen, self._jPanelConstraints) # Create panel for Port info self._jLabelPortListen = swing.JLabel("Listen on Port:") self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 0 self._jPanelConstraints.gridy = 1 self._jPanel.add(self._jLabelPortListen, self._jPanelConstraints) self._jTextFieldPortListen = swing.JTextField("",3) self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 1 self._jPanelConstraints.gridy = 1 self._jPanel.add(self._jTextFieldPortListen, self._jPanelConstraints) # Create panel to contain Python button self._jLabelPython = swing.JLabel("Select Python:") self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 0 self._jPanelConstraints.gridy = 2 self._jPanel.add(self._jLabelPython, self._jPanelConstraints) self._jButtonSetPython = swing.JButton('Python', actionPerformed=self.setPython) self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 1 self._jPanelConstraints.gridy = 2 self._jPanel.add(self._jButtonSetPython, self._jPanelConstraints) # Create panel to contain API button self._jLabelAPI = swing.JLabel("Select API:") self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 0 self._jPanelConstraints.gridy = 3 self._jPanel.add(self._jLabelAPI, self._jPanelConstraints) self._jButtonSetAPI = swing.JButton('SQLMap API', actionPerformed=self.setAPI) self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 1 self._jPanelConstraints.gridy = 3 self._jPanel.add(self._jButtonSetAPI, self._jPanelConstraints) # Create panel to execute API self._jButtonStartAPI = swing.JButton('Start API', actionPerformed=self.startAPI) self._jPanelConstraints.fill = awt.GridBagConstraints.HORIZONTAL self._jPanelConstraints.gridx = 0 self._jPanelConstraints.gridy = 4 self._jPanelConstraints.gridwidth = 2 self._jPanel.add(self._jButtonStartAPI, self._jPanelConstraints) # Create SQLMap scanner panel # Combobox Values levelValues = [1,2,3,4,5] riskValues = [0,1,2,3] threadValues = [1,2,3,4,5,6,7,8,9,10] delayValues = [0,1,2,3,4,5] timeoutValues = [1,5,10,15,20,25,30,35,40,45,50,55,60] retryValues = [1,2,3,4,5,6,7,8,9,10] dbmsValues = ['Any', 'MySQL', 'Oracle', 'PostgreSQL', 'Microsoft SQL Server', 'Microsoft Access', 'SQLite', 'Firebird', 'Sybase', 'SAP MaxDB', 'DB2'] osValues = ['Any', 'Linux', 'Windows'] timeSecValues = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] torTypes = ['HTTP', 'SOCKS4', 'SOCKS5'] # GUI components self._jLabelScanText = swing.JLabel() self._jLabelScanIPListen = swing.JLabel() self._jLabelScanPortListen = swing.JLabel() self._jTextFieldScanIPListen = swing.JTextField() self._jTextFieldScanPortListen = swing.JTextField() self._jSeparator1 = swing.JSeparator() self._jLabelURL = swing.JLabel() self._jTextFieldURL = swing.JTextField() self._jLabelData = swing.JLabel() self._jTextData = swing.JTextArea() self._jScrollPaneData = swing.JScrollPane(self._jTextData) self._jLabelCookie = swing.JLabel() self._jTextFieldCookie = swing.JTextField() self._jLabelReferer = swing.JLabel() self._jTextFieldReferer = swing.JTextField() self._jLabelUA = swing.JLabel() self._jTextFieldUA = swing.JTextField() self._jSeparator2 = swing.JSeparator() self._jLabelParam = swing.JLabel() self._jTextFieldParam = swing.JTextField() self._jCheckTO = swing.JCheckBox() self._jSeparator3 = swing.JSeparator() self._jComboLevel = swing.JComboBox(levelValues) self._jLabelLevel = swing.JLabel() self._jLabelRisk = swing.JLabel() self._jComboRisk = swing.JComboBox(riskValues) self._jSeparator4 = swing.JSeparator() self._jCheckHPP = swing.JCheckBox('Param Pollution') self._jCheckCU = swing.JCheckBox('Current User') self._jCheckDB = swing.JCheckBox('Current DB') self._jCheckHost = swing.JCheckBox('Hostname') self._jCheckDBA = swing.JCheckBox('Is DBA?') self._jCheckUsers = swing.JCheckBox('List Users') self._jCheckPrivs = swing.JCheckBox('List Privs') self._jCheckPswds = swing.JCheckBox('List Passwords') self._jCheckRoles = swing.JCheckBox('List Roles') self._jCheckDBs = swing.JCheckBox('List DBs') self._jSeparator5 = swing.JSeparator() self._jLabelThreads = swing.JLabel() self._jLabelDelay = swing.JLabel() self._jLabelTimeout = swing.JLabel() self._jLabelRetry = swing.JLabel() self._jLabelTimeSec = swing.JLabel() self._jComboThreads = swing.JComboBox(threadValues) self._jComboDelay = swing.JComboBox(delayValues) self._jComboTimeout = swing.JComboBox(timeoutValues) self._jComboRetry = swing.JComboBox(retryValues) self._jComboTimeSec = swing.JComboBox(timeSecValues) self._jSeparator6 = swing.JSeparator() self._jLabelDBMS = swing.JLabel() self._jComboDBMS = swing.JComboBox(dbmsValues) self._jLabelOS = swing.JLabel() self._jComboOS = swing.JComboBox(osValues) self._jSeparator7 = swing.JSeparator() self._jLabelProxy = swing.JLabel() self._jTextFieldProxy = swing.JTextField() self._jSeparator8 = swing.JSeparator() self._jLabelTamper = swing.JLabel() self._jTextFieldTamper = swing.JTextField() self._jButtonStartScan = swing.JButton('Start Scan', actionPerformed=self.startScan) self._jLabelScanAPI = swing.JLabel() self._jSeparator9 = swing.JSeparator() self._jSeparator10 = swing.JSeparator() self._jCheckTor = swing.JCheckBox('Enable Tor') self._jLabelTorType = swing.JLabel() self._jComboTorType = swing.JComboBox(torTypes) self._jLabelTorPort = swing.JLabel() self._jTextFieldTorPort = swing.JTextField() # Configure GUI self._jLabelScanText.setText('API Listening On:') self._jLabelScanIPListen.setText('SQLMap API IP:') self._jLabelScanPortListen.setText('SQLMap API Port:') self._jLabelURL.setText('URL:') self._jLabelData.setText('Post Data:') self._jTextData.setColumns(20) self._jTextData.setRows(5) self._jTextData.setLineWrap(True) self._jScrollPaneData.setVerticalScrollBarPolicy(swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) self._jLabelCookie.setText('Cookies:') self._jLabelReferer.setText('Referer:') self._jLabelUA.setText('User-Agent:') self._jLabelParam.setText('Test Parameter(s):') self._jCheckTO.setText('Text Only') self._jLabelLevel.setText('Level:') self._jLabelRisk.setText('Risk:') self._jComboLevel.setSelectedIndex(2) self._jComboRisk.setSelectedIndex(1) self._jComboThreads.setSelectedIndex(0) self._jComboDelay.setSelectedIndex(0) self._jComboTimeout.setSelectedIndex(6) self._jComboRetry.setSelectedIndex(2) self._jComboTimeSec.setSelectedIndex(4) self._jComboDBMS.setSelectedIndex(0) self._jComboOS.setSelectedIndex(0) self._jComboTorType.setSelectedIndex(2) self._jLabelThreads.setText('Threads:') self._jLabelDelay.setText('Delay:') self._jLabelTimeout.setText('Timeout:') self._jLabelRetry.setText('Retries:') self._jLabelTimeSec.setText('Time-Sec:') self._jLabelDBMS.setText('DBMS Backend:') self._jLabelOS.setText('Operating System:') self._jLabelProxy.setText('Proxy (HTTP://IP:Port):') self._jLabelTamper.setText('Tamper Scripts:') self._jLabelTorType.setText('Tor Type:') self._jLabelTorPort.setText('Tor Port:') self._jTextFieldTorPort.setText('9050') # Configure locations self._jLabelScanText.setBounds(15, 16, 126, 20) self._jLabelScanIPListen.setBounds(15, 58, 115, 20) self._jLabelScanPortListen.setBounds(402, 55, 129, 20) self._jTextFieldScanIPListen.setBounds(167, 52, 206, 26) self._jTextFieldScanPortListen.setBounds(546, 52, 63, 26) self._jSeparator1.setBounds(15, 96, 790, 10) self._jLabelURL.setBounds(15, 117, 35, 20) self._jTextFieldURL.setBounds(166, 114, 535, 26) self._jLabelData.setBounds(15, 156, 73, 20) self._jTextData.setColumns(20) self._jTextData.setRows(5) self._jScrollPaneData.setBounds(166, 156, 535, 96) self._jLabelCookie.setBounds(15, 271, 61, 20) self._jTextFieldCookie.setBounds(166, 271, 535, 26) self._jLabelReferer.setBounds(15, 320, 57, 20) self._jTextFieldReferer.setBounds(166, 320, 535, 26) self._jLabelUA.setBounds(15, 374, 86, 20) self._jTextFieldUA.setBounds(166, 371, 535, 26) self._jSeparator2.setBounds(15, 459, 790, 10) self._jLabelParam.setBounds(15, 483, 132, 20) self._jTextFieldParam.setBounds(165, 480, 366, 26) self._jCheckTO.setBounds(584, 479, 101, 29) self._jSeparator3.setBounds(15, 526, 790, 10) self._jComboLevel.setBounds(165, 544, 180, 26) self._jLabelLevel.setBounds(15, 547, 42, 20) self._jLabelRisk.setBounds(430, 547, 35, 20) self._jComboRisk.setBounds(518, 544, 180, 26) self._jSeparator4.setBounds(15, 588, 790, 10) self._jCheckHPP.setBounds(15, 608, 145, 29) self._jCheckCU.setBounds(191, 608, 123, 29) self._jCheckDB.setBounds(340, 608, 111, 29) self._jCheckHost.setBounds(469, 608, 103, 29) self._jCheckDBA.setBounds(599, 608, 105, 29) self._jCheckUsers.setBounds(15, 655, 101, 29) self._jCheckPswds.setBounds(191, 655, 135, 29) self._jCheckPrivs.setBounds(344, 655, 95, 29) self._jCheckRoles.setBounds(469, 655, 99, 29) self._jCheckDBs.setBounds(599, 655, 89, 29) self._jSeparator5.setBounds(15, 696, 790, 10) self._jLabelThreads.setBounds(15, 719, 63, 20) self._jLabelDelay.setBounds(173, 719, 45, 20) self._jLabelTimeout.setBounds(326, 719, 65, 20) self._jLabelRetry.setBounds(484, 719, 48, 20) self._jLabelTimeSec.setBounds(642, 719, 65, 20) self._jComboThreads.setBounds(80, 716, 78, 26) self._jComboDelay.setBounds(233, 716, 78, 26) self._jComboTimeout.setBounds(391, 716, 78, 26) self._jComboRetry.setBounds(549, 716, 78, 26) self._jComboTimeSec.setBounds(717, 716, 78, 26) self._jSeparator6.setBounds(15, 758, 790, 10) self._jLabelDBMS.setBounds(15, 781, 110, 20) self._jComboDBMS.setBounds(143, 778, 191, 26) self._jLabelOS.setBounds(352, 781, 132, 20) self._jComboOS.setBounds(502, 778, 191, 26) self._jSeparator7.setBounds(15, 820, 790, 10) self._jLabelProxy.setBounds(15, 844, 171, 20) self._jTextFieldProxy.setBounds(204, 841, 256, 26) self._jSeparator8.setBounds(15, 887, 790, 10) self._jCheckTor.setBounds(15, 911, 171, 20) self._jLabelTorType.setBounds(206, 908, 65, 26) self._jComboTorType.setBounds(291, 908, 100, 26) self._jLabelTorPort.setBounds(460, 908, 129, 26) self._jTextFieldTorPort.setBounds(545, 908, 65, 26) self._jSeparator9.setBounds(15, 954, 790, 10) self._jLabelTamper.setBounds(15, 979, 171, 20) self._jTextFieldTamper.setBounds(204, 976, 256, 26) self._jSeparator10.setBounds(15, 1024, 790, 10) self._jButtonStartScan.setBounds(346, 1047, 103, 29) self._jLabelScanAPI.setBounds(167, 16, 275, 20) # Create main panel self._jScanPanel = swing.JPanel() self._jScanPanel.setLayout(None) self._jScanPanel.setPreferredSize(awt.Dimension(1010,1010)) self._jScanPanel.add(self._jLabelScanText) self._jScanPanel.add(self._jLabelScanIPListen) self._jScanPanel.add(self._jLabelScanPortListen) self._jScanPanel.add(self._jTextFieldScanIPListen) self._jScanPanel.add(self._jTextFieldScanPortListen) self._jScanPanel.add(self._jSeparator1) self._jScanPanel.add(self._jLabelURL) self._jScanPanel.add(self._jTextFieldURL) self._jScanPanel.add(self._jLabelData) self._jScanPanel.add(self._jScrollPaneData) self._jScanPanel.add(self._jLabelCookie) self._jScanPanel.add(self._jTextFieldCookie) self._jScanPanel.add(self._jLabelReferer) self._jScanPanel.add(self._jTextFieldReferer) self._jScanPanel.add(self._jLabelUA) self._jScanPanel.add(self._jTextFieldUA) self._jScanPanel.add(self._jSeparator2) self._jScanPanel.add(self._jLabelParam) self._jScanPanel.add(self._jTextFieldParam) self._jScanPanel.add(self._jCheckTO) self._jScanPanel.add(self._jSeparator3) self._jScanPanel.add(self._jComboLevel) self._jScanPanel.add(self._jLabelLevel) self._jScanPanel.add(self._jLabelRisk) self._jScanPanel.add(self._jComboRisk) self._jScanPanel.add(self._jSeparator4) self._jScanPanel.add(self._jCheckHPP) self._jScanPanel.add(self._jCheckCU) self._jScanPanel.add(self._jCheckDB) self._jScanPanel.add(self._jCheckHost) self._jScanPanel.add(self._jCheckDBA) self._jScanPanel.add(self._jCheckUsers) self._jScanPanel.add(self._jCheckPswds) self._jScanPanel.add(self._jCheckPrivs) self._jScanPanel.add(self._jCheckRoles) self._jScanPanel.add(self._jCheckDBs) self._jScanPanel.add(self._jSeparator5) self._jScanPanel.add(self._jLabelThreads) self._jScanPanel.add(self._jLabelDelay) self._jScanPanel.add(self._jLabelTimeout) self._jScanPanel.add(self._jLabelRetry) self._jScanPanel.add(self._jLabelTimeSec) self._jScanPanel.add(self._jComboThreads) self._jScanPanel.add(self._jComboDelay) self._jScanPanel.add(self._jComboTimeout) self._jScanPanel.add(self._jComboRetry) self._jScanPanel.add(self._jComboTimeSec) self._jScanPanel.add(self._jSeparator6) self._jScanPanel.add(self._jLabelDBMS) self._jScanPanel.add(self._jComboDBMS) self._jScanPanel.add(self._jLabelOS) self._jScanPanel.add(self._jComboOS) self._jScanPanel.add(self._jSeparator7) self._jScanPanel.add(self._jLabelProxy) self._jScanPanel.add(self._jTextFieldProxy) self._jScanPanel.add(self._jSeparator8) self._jScanPanel.add(self._jCheckTor) self._jScanPanel.add(self._jLabelTorType) self._jScanPanel.add(self._jComboTorType) self._jScanPanel.add(self._jLabelTorPort) self._jScanPanel.add(self._jTextFieldTorPort) self._jScanPanel.add(self._jSeparator9) self._jScanPanel.add(self._jLabelTamper) self._jScanPanel.add(self._jTextFieldTamper) self._jScanPanel.add(self._jSeparator10) self._jScanPanel.add(self._jButtonStartScan) self._jScanPanel.add(self._jLabelScanAPI) self._jScrollPaneMain = swing.JScrollPane(self._jScanPanel) self._jScrollPaneMain.setViewportView(self._jScanPanel) self._jScrollPaneMain.setPreferredSize(awt.Dimension(999,999)) # Create SQLMap log JPanel self._jLogPanel = swing.JPanel() self._jLogPanel.setLayout(None) # Create label, combobox, and button to get logs and textarea to display them self._jLabelLog = swing.JLabel("Logs for Scan ID:") self._jComboLogs = swing.JComboBox(self.scantasks) self._jButtonGetLogs = swing.JButton('Get', actionPerformed=self.getLogs) self._jButtonRemoveLogs = swing.JButton('Remove', actionPerformed=self.removeLogs) self._jTextLogs = swing.JTextArea() self._jTextLogs.setColumns(50) self._jTextLogs.setRows(50) self._jTextLogs.setLineWrap(True) self._jTextLogs.setEditable(False) self._jScrollPaneLogs = swing.JScrollPane(self._jTextLogs) self._jScrollPaneLogs.setVerticalScrollBarPolicy(swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) self._jLabelLog.setBounds(15, 16, 126, 20) self._jComboLogs.setBounds(167, 16, 535, 20) self._jButtonGetLogs.setBounds(718, 16, 50, 20) self._jButtonRemoveLogs.setBounds(783, 16, 80, 20) self._jScrollPaneLogs.setBounds(15, 58, 846, 400) self._jLogPanel.add(self._jLabelLog) self._jLogPanel.add(self._jComboLogs) self._jLogPanel.add(self._jButtonGetLogs) self._jLogPanel.add(self._jButtonRemoveLogs) self._jLogPanel.add(self._jScrollPaneLogs) # Create SQLMap stop scan JPanel self._jStopScanPanel = swing.JPanel() self._jStopScanPanel.setLayout(None) # Create label, combobox, and button to stop scans and textfield to display success self._jLabelStopScan = swing.JLabel("Stop Scan ID:") self._jComboStopScan = swing.JComboBox(self.scantasks) self._jButtonStopScan = swing.JButton('Stop', actionPerformed=self.stopScan) self._jButtonRemoveScan = swing.JButton('Remove', actionPerformed=self.removeScan) self._jLabelStopStatus = swing.JLabel() self._jLabelStopScan.setBounds(15, 16, 126, 20) self._jComboStopScan.setBounds(167, 16, 535, 20) self._jButtonStopScan.setBounds(718, 16, 55, 20) self._jButtonRemoveScan.setBounds(783, 16, 80, 20) self._jLabelStopStatus.setBounds(167, 58, 846, 20) self._jStopScanPanel.add(self._jLabelStopScan) self._jStopScanPanel.add(self._jComboStopScan) self._jStopScanPanel.add(self._jButtonStopScan) self._jStopScanPanel.add(self._jButtonRemoveScan) self._jStopScanPanel.add(self._jLabelStopStatus) # Setup Tabs self._jConfigTab = swing.JTabbedPane() self._jConfigTab.addTab("SQLMap API", self._jPanel) self._jConfigTab.addTab("SQLMap Scanner", self._jScrollPaneMain) self._jConfigTab.addTab("SQLMap Logs", self._jLogPanel) self._jConfigTab.addTab("SQLMap Scan Stop", self._jStopScanPanel) callbacks.customizeUiComponent(self._jConfigTab) callbacks.addSuiteTab(self) return
def registerExtenderCallbacks(self, callbacks): self._helpers = callbacks.getHelpers() self._jDecoderPanel = swing.JPanel() self._jDecoderPanel.setLayout(None) # Combobox Values self._decodeType = ['Convert to chniese', 'Str to Unicode', 'Str To UTF-8', 'Base64 Eecode', 'Base64 Decode'] self._decodeTypeFunc = [self.convertToChinese, self.strToUnicode, self.strToUtf8, self.base64Encode, self.base64Decode] # GUI components self._jLabelInput = swing.JLabel() self._jLabelOutput = swing.JLabel() self._jLabelExample = swing.JLabel() self._jLabelOputFormat = swing.JLabel() self._jCheckBoxOutputFormat = swing.JCheckBox() self._jTextAreaInputData = swing.JTextArea() self._jTextAreaOutputData = swing.JTextArea() self._jScrollPaneIntput = swing.JScrollPane(self._jTextAreaInputData) self._jScrollPaneOutput = swing.JScrollPane(self._jTextAreaOutputData) self._jButtonDecoder = swing.JButton('Execute', actionPerformed=self.decode) self._jComboDecodeType = swing.JComboBox(self._decodeType, actionListener=self.change_decode) # Configure GUI self._jLabelInput.setText('Input:') self._jLabelOutput.setText('Output:') self._jLabelExample.setText('Example: ') self._jLabelOputFormat.setText(r'Replace % with \ ') self._jLabelExample.setFont(Font("Consolas", Font.PLAIN, 14)) self._jDecoderPanel.add(self._jLabelInput) self._jDecoderPanel.add(self._jLabelOutput) self._jScrollPaneIntput.setVerticalScrollBarPolicy(swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED) self._jScrollPaneOutput.setVerticalScrollBarPolicy(swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED) self._jLabelExample.setText(self._decodeTypeFunc[0]()) # Configure locations self._jLabelInput.setBounds(20, 15, self.LABEL_WIDTH, self.LABEL_HEIGHT) self._jLabelOutput.setBounds(20, 225, self.LABEL_WIDTH, self.LABEL_HEIGHT) self._jLabelExample.setBounds(20, 190, self.TEXTAREA_WIDTH, 30) self._jLabelOputFormat.setBounds(self.TEXTAREA_WIDTH + 80, 117, 150, 30) self._jCheckBoxOutputFormat.setBounds(self.TEXTAREA_WIDTH + 50, 120, 20, 20) self._jScrollPaneIntput.setBounds(20 ,40, self.TEXTAREA_WIDTH, self.TEXTAREA_HEIGHT) self._jScrollPaneOutput.setBounds(20, 250, self.TEXTAREA_WIDTH, self.TEXTAREA_HEIGHT) self._jButtonDecoder.setBounds(self.TEXTAREA_WIDTH + 50, 40, 150, 30) self._jComboDecodeType.setBounds(self.TEXTAREA_WIDTH + 50, 80, 150,30) self._jDecoderPanel.add(self._jLabelInput) self._jDecoderPanel.add(self._jLabelOutput) self._jDecoderPanel.add(self._jLabelExample) self._jDecoderPanel.add(self._jLabelOputFormat) self._jDecoderPanel.add(self._jCheckBoxOutputFormat) self._jDecoderPanel.add(self._jComboDecodeType) self._jDecoderPanel.add(self._jScrollPaneIntput) self._jDecoderPanel.add(self._jScrollPaneOutput) self._jDecoderPanel.add(self._jButtonDecoder) # Setup Tabs self._jConfigTab = swing.JTabbedPane() self._jConfigTab.addTab("Decoder", self._jDecoderPanel) callbacks.customizeUiComponent(self._jConfigTab) callbacks.addSuiteTab(self) callbacks.registerContextMenuFactory(self) return
def initGui(self): self.tab = swing.JPanel() self.titleLabel = swing.JLabel("Burp Importer") self.titleLabel.setFont(Font("Tahoma", 1, 16)) self.titleLabel.setForeground(Color(235, 136, 0)) self.infoLabel = swing.JLabel( "Burp Importer loads a list of URLs or parses output from various automated scanners and populates the sitemap with each successful connection." ) self.infoLabel.setFont(Font("Tahoma", 0, 12)) self.fileOptionLabel = swing.JLabel("File Load Option") self.fileOptionLabel.setFont(Font("Tahoma", 1, 12)) self.fileDescLabel = swing.JLabel( "This option is only used when loading a file to be parsed for http(s) connections. You can disregard this option and paste a list of URLs in the box below." ) self.fileDescLabel.setFont(Font("Tahoma", 0, 12)) self.fileDescLabel2 = swing.JLabel( "Supported files: .gnamp, .nessus, .txt") self.fileDescLabel2.setFont(Font("Tahoma", 0, 12)) self.parseFileButton = swing.JButton("Load File to Parse", actionPerformed=self.loadFile) self.urlLabel = swing.JLabel("URL List") self.urlLabel.setFont(Font("Tahoma", 1, 12)) self.urlDescLabel = swing.JLabel( "URLs in this list should be in the format: protocol://host:port/optional-path" ) self.urlDescLabel.setFont(Font("Tahoma", 0, 12)) self.urlDescLabel2 = swing.JLabel( "Example: https://127.0.0.1:443/index. Port is optional, 80 or 443 will be assumed." ) self.urlDescLabel2.setFont(Font("Tahoma", 0, 12)) self.pasteButton = swing.JButton("Paste", actionPerformed=self.paste) self.loadButton = swing.JButton("Copy List", actionPerformed=self.setClipboardText) self.removeButton = swing.JButton("Remove", actionPerformed=self.remove) self.clearButton = swing.JButton("Clear", actionPerformed=self.clear) self.urlListModel = swing.DefaultListModel() self.urlList = swing.JList(self.urlListModel) self.urlListPane = swing.JScrollPane(self.urlList) self.addButton = swing.JButton("Add", actionPerformed=self.addURL) self.runLabel = swing.JLabel( "<html>Click the <b>RUN</b> button to attempt a connection to each URL in the URL List. Successful connections will be added to Burp's sitemap.</html>" ) self.runLabel.setFont(Font("Tahoma", 0, 12)) self.redirectsCheckbox = swing.JCheckBox( "Enable: Follow Redirects (301 or 302 Response)") self.runButton = swing.JButton("RUN", actionPerformed=self.runClicked) self.runButton.setFont(Font("Tahoma", 1, 12)) self.addUrlField = swing.JTextField("New URL...", focusGained=self.clearField, focusLost=self.fillField) self.logLabel = swing.JLabel("Log:") self.logLabel.setFont(Font("Tahoma", 1, 12)) self.logPane = swing.JScrollPane() self.logArea = swing.JTextArea( "Burp Importer Log - Parsing and Run details will be appended here.\n" ) self.logArea.setLineWrap(True) self.logPane.setViewportView(self.logArea) self.webPortDict = {'80':'http','81':'http','82':'http','83':'http','443':'https','2301':'http','2381':'https','8000':'http','8008':'http','8080':'http','8083':'https','8180':'http','8400':'http',\ '8443':'https','8834':'https','8888':'http','9001':'http','9043':'https','9080':'http','9090':'http','9100':'http','9443':'https'} self.bar = swing.JSeparator(swing.SwingConstants.HORIZONTAL) self.bar2 = swing.JSeparator(swing.SwingConstants.HORIZONTAL) layout = swing.GroupLayout(self.tab) self.tab.setLayout(layout) # Credit to Antonio Sánchez and https://github.com/Dionach/HeadersAnalyzer/ layout.setHorizontalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING). addGroup(layout.createSequentialGroup().addGap(15).addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.LEADING).addComponent( self.titleLabel).addComponent( self.infoLabel).addComponent( self.fileOptionLabel).addComponent( self.fileDescLabel).addComponent( self.fileDescLabel2).addComponent( self.parseFileButton).addComponent( self.bar).addComponent( self.urlLabel). addComponent(self.urlDescLabel).addComponent( self.urlDescLabel2).addComponent(self.bar2).addComponent( self.runLabel).addComponent( self.redirectsCheckbox).addComponent( self.runButton).addComponent( self.logPane, swing.GroupLayout.PREFERRED_SIZE, 525, swing.GroupLayout.PREFERRED_SIZE). addGroup(layout.createSequentialGroup().addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.TRAILING). addComponent(self.addButton).addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.LEADING).addComponent( self.logLabel).addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.TRAILING, False).addComponent( self.removeButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE).addComponent( self.pasteButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE). addComponent( self.loadButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE).addComponent( self.clearButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.PREFERRED_SIZE, lang.Short.MAX_VALUE))) ).addPreferredGap( swing.LayoutStyle.ComponentPlacement.UNRELATED).addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.LEADING).addComponent( self.urlListPane, swing.GroupLayout.PREFERRED_SIZE, 350, swing.GroupLayout.PREFERRED_SIZE).addComponent( self.addUrlField, swing.GroupLayout.PREFERRED_SIZE, 350, swing.GroupLayout.PREFERRED_SIZE)))). addContainerGap(26, lang.Short.MAX_VALUE))) layout.setVerticalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING). addGroup( layout.createSequentialGroup().addGap(15).addComponent( self.titleLabel).addGap(10).addComponent( self.infoLabel).addGap(10).addComponent( self.fileOptionLabel).addGap(10).addComponent( self.fileDescLabel).addGap(10).addComponent( self.fileDescLabel2).addGap(10). addComponent(self.parseFileButton).addGap(10).addComponent( self.bar).addComponent( self.urlLabel).addGap(10).addComponent( self.urlDescLabel).addGap(10). addComponent(self.urlDescLabel2).addPreferredGap( swing.LayoutStyle.ComponentPlacement.UNRELATED).addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.LEADING). addGroup(layout.createSequentialGroup().addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.LEADING). addGroup(layout.createSequentialGroup( ).addComponent(self.pasteButton).addPreferredGap( swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent(self.loadButton).addPreferredGap( swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent(self.removeButton).addPreferredGap( swing.LayoutStyle.ComponentPlacement.RELATED ).addComponent(self.clearButton)).addComponent( self.urlListPane, swing.GroupLayout.PREFERRED_SIZE, 138, swing.GroupLayout.PREFERRED_SIZE)).addGap(10). addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.BASELINE). addComponent(self.addButton).addComponent( self.addUrlField, swing.GroupLayout.PREFERRED_SIZE, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.PREFERRED_SIZE))) ).addGap(10).addComponent(self.bar2).addComponent( self.runLabel).addGap(10).addComponent( self.redirectsCheckbox).addGap(10).addComponent( self.runButton).addGap(10). addComponent(self.logLabel).addPreferredGap( swing.LayoutStyle.ComponentPlacement.RELATED).addGap( 8, 8, 8).addComponent( self.logPane, swing.GroupLayout.PREFERRED_SIZE, 125, swing.GroupLayout.PREFERRED_SIZE).addPreferredGap( swing.LayoutStyle.ComponentPlacement.RELATED ).addContainerGap(swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE))) return
def drawUI(self): self.tab = swing.JPanel() self.uiLabel = swing.JLabel('Site Map Extractor Options') self.uiLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiLabel.setForeground(Color(235, 136, 0)) self.uiScopeOnly = swing.JRadioButton('In-scope only', True) self.uiScopeAll = swing.JRadioButton('Full site map', False) self.uiScopeButtonGroup = swing.ButtonGroup() self.uiScopeButtonGroup.add(self.uiScopeOnly) self.uiScopeButtonGroup.add(self.uiScopeAll) self.uipaneA = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT) self.uipaneA.setMaximumSize(Dimension(900, 125)) self.uipaneA.setDividerSize(2) self.uipaneB = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT) self.uipaneB.setDividerSize(2) self.uipaneA.setRightComponent(self.uipaneB) self.uipaneA.setBorder(BorderFactory.createLineBorder(Color.black)) # UI for Export <a href Links self.uiLinksPanel = swing.JPanel() self.uiLinksPanel.setPreferredSize(Dimension(200, 75)) self.uiLinksPanel.setBorder(EmptyBorder(10, 10, 10, 10)) self.uiLinksPanel.setLayout(BorderLayout()) self.uiLinksLabel = swing.JLabel("Extract '<a href=' Links") self.uiLinksLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiLinksAbs = swing.JCheckBox('Absolute ', True) self.uiLinksRel = swing.JCheckBox('Relative ', True) # create a subpanel so Run button will be centred self.uiLinksRun = swing.JButton('Run', actionPerformed=self.extractLinks) self.uiLinksSave = swing.JButton('Save Log to CSV File', actionPerformed=self.savetoCsvFile) self.uiLinksClear = swing.JButton('Clear Log', actionPerformed=self.clearLog) self.uiLinksButtonPanel = swing.JPanel() self.uiLinksButtonPanel.add(self.uiLinksRun) self.uiLinksButtonPanel.add(self.uiLinksSave) self.uiLinksButtonPanel.add(self.uiLinksClear) # add all elements to main Export Links panel self.uiLinksPanel.add(self.uiLinksLabel, BorderLayout.NORTH) self.uiLinksPanel.add(self.uiLinksAbs, BorderLayout.WEST) self.uiLinksPanel.add(self.uiLinksRel, BorderLayout.CENTER) self.uiLinksPanel.add(self.uiLinksButtonPanel, BorderLayout.SOUTH) self.uipaneA.setLeftComponent( self.uiLinksPanel) # add Export Links panel to splitpane # UI for Export Response Codes self.uiCodesPanel = swing.JPanel() self.uiCodesPanel.setPreferredSize(Dimension(200, 75)) self.uiCodesPanel.setBorder(EmptyBorder(10, 10, 10, 10)) self.uiCodesPanel.setLayout(BorderLayout()) self.uiCodesLabel = swing.JLabel('Extract Response Codes') self.uiCodesLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiRcodePanel = swing.JPanel() self.uiRcodePanel.setLayout(GridLayout(1, 1)) self.uiRcode1xx = swing.JCheckBox('1XX ', False) self.uiRcode2xx = swing.JCheckBox('2XX ', True) self.uiRcode3xx = swing.JCheckBox('3XX ', True) self.uiRcode4xx = swing.JCheckBox('4XX ', True) self.uiRcode5xx = swing.JCheckBox('5XX ', True) self.uiCodesRun = swing.JButton('Run', actionPerformed=self.exportCodes) self.uiCodesSave = swing.JButton('Save Log to CSV File', actionPerformed=self.savetoCsvFile) self.uiCodesClear = swing.JButton('Clear Log', actionPerformed=self.clearLog) self.uiCodesButtonPanel = swing.JPanel() self.uiCodesButtonPanel.add(self.uiCodesRun) self.uiCodesButtonPanel.add(self.uiCodesSave) self.uiCodesButtonPanel.add(self.uiCodesClear) self.uiRcodePanel.add(self.uiRcode1xx) self.uiRcodePanel.add(self.uiRcode2xx) self.uiRcodePanel.add(self.uiRcode3xx) self.uiRcodePanel.add(self.uiRcode4xx) self.uiRcodePanel.add(self.uiRcode5xx) self.uiCodesPanel.add(self.uiCodesLabel, BorderLayout.NORTH) self.uiCodesPanel.add(self.uiRcodePanel, BorderLayout.WEST) self.uiCodesPanel.add(self.uiCodesButtonPanel, BorderLayout.SOUTH) self.uipaneB.setLeftComponent(self.uiCodesPanel) # Option 3 UI for Export Sitemap self.uiExportPanel = swing.JPanel() self.uiExportPanel.setPreferredSize(Dimension(200, 75)) self.uiExportPanel.setBorder(EmptyBorder(10, 10, 10, 10)) self.uiExportPanel.setLayout(BorderLayout()) self.uiExportLabel = swing.JLabel('Export Site Map to File') self.uiExportLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiMustHaveResponse = swing.JRadioButton( 'Must have a response ', True) self.uiAllRequests = swing.JRadioButton('All ', False) self.uiResponseButtonGroup = swing.ButtonGroup() self.uiResponseButtonGroup.add(self.uiMustHaveResponse) self.uiResponseButtonGroup.add(self.uiAllRequests) self.uiExportRun = swing.JButton('Run', actionPerformed=self.exportSiteMap) self.uiExportClear = swing.JButton('Clear Log', actionPerformed=self.clearLog) self.uiExportButtonPanel = swing.JPanel() self.uiExportButtonPanel.add(self.uiExportRun) self.uiExportButtonPanel.add(self.uiExportClear) self.uiExportPanel.add(self.uiExportLabel, BorderLayout.NORTH) self.uiExportPanel.add(self.uiMustHaveResponse, BorderLayout.WEST) self.uiExportPanel.add(self.uiAllRequests, BorderLayout.CENTER) self.uiExportPanel.add(self.uiExportButtonPanel, BorderLayout.SOUTH) self.uipaneB.setRightComponent(self.uiExportPanel) # UI Common Elements self.uiLogLabel = swing.JLabel('Log:') self.uiLogLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiLogPane = swing.JScrollPane() layout = swing.GroupLayout(self.tab) self.tab.setLayout(layout) # Thank you to Smeege (https://github.com/SmeegeSec/Burp-Importer/) for helping me figure out how this works. # He in turn gave credit to Antonio Sanchez (https://github.com/Dionach/HeadersAnalyzer/) layout.setHorizontalGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.LEADING).addGroup( layout.createSequentialGroup().addGap(10, 10, 10).addGroup( layout.createParallelGroup( swing.GroupLayout.Alignment.LEADING).addComponent( self.uiLabel).addGroup( layout.createSequentialGroup().addGap( 10, 10, 10).addComponent( self.uiScopeOnly).addGap( 10, 10, 10).addComponent( self.uiScopeAll)). addGap(15, 15, 15).addComponent(self.uipaneA).addComponent( self.uiLogLabel).addComponent( self.uiLogPane)).addContainerGap( 26, lang.Short.MAX_VALUE))) layout.setVerticalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING). addGroup(layout.createSequentialGroup().addGap( 15, 15, 15).addComponent(self.uiLabel).addGap(15, 15, 15).addGroup( layout.createParallelGroup().addComponent( self.uiScopeOnly).addComponent( self.uiScopeAll)).addGap( 20, 20, 20).addComponent(self.uipaneA).addGap( 20, 20, 20).addComponent(self.uiLogLabel).addGap( 5, 5, 5).addComponent(self.uiLogPane).addGap( 20, 20, 20)))
def addOthers(self, parent, editor, others): if others: bs = parent.bodyString() spot = bs.find("@" + "others") whitespace = 0 if spot == -1 and bs.strip() == "": spot = 0 #if len( bs ) == 0: # bs = " " # #editor.setText( bs ) whitespace = 1 if spot != -1: opanel = swing.JPanel(java.awt.BorderLayout()) jp = swing.Box.createVerticalBox() jp.setOpaque(0) opanel.setOpaque(0) jcb = swing.JCheckBox("@others") jcb.setToolTipText("hide/show") jcb.setOpaque(0) jcb.setSelected(1) opanel.add(jcb, java.awt.BorderLayout.NORTH) opanel.add(jp) jcb.actionPerformed = lambda event, jp=jp, opanel=opanel: self.add_remove( jp, opanel) sas = text.SimpleAttributeSet() text.StyleConstants.setComponent(sas, opanel) #doc = editor.getDocument() #if not whitespace: # doc.setCharacterAttributes( spot, 7, sas, 1 ) #else: # doc.setCharacterAttributes( spot, 1, sas , 1 ) for z in others: jp2 = swing.JPanel(java.awt.BorderLayout()) jp2.setOpaque(0) jb = swing.JCheckBox() jb.setToolTipText("hide/show") jb.setOpaque(0) jb.setSelected(1) jp2.add(jb, java.awt.BorderLayout.NORTH) tp = swing.JTextPane() jb.actionPerformed = lambda event, tp=tp, jp2=jp2: self.add_remove( tp, jp2) jp2.add(tp) tp.addKeyListener(self.swingmacs.kcb) bs = z.bodyString() if bs == "": bs = " " p.v.t._bodyString.insert(0, bs) tp.setText(bs) doc = tp.getDocument() doc.addDocumentListener( self.NodeSyncher(z.copy(), tp, self.swingmacs, self)) self.addBorder(jp2, z.headString()) bs = z.bodyString() jp.add(jp2) self.scanNode(z, tp) doc = editor.getDocument() if not whitespace: doc.setCharacterAttributes(spot, 7, sas, 1) else: doc.setCharacterAttributes(spot, 1, sas, 1)
def createFrame (self): # Create the find panel... #outer = Tk.Frame(self.frame,relief="groove",bd=2) #outer.pack(padx=2,pady=2) self.top = swing.JFrame() g.app.gui.addLAFListener( self.top ) #self.top.setDefaultCloseOperation( swing.JFrame.EXIT_ON_CLOSE ) self.top.title = self.title jtab = swing.JTabbedPane() self.top.add( jtab ) cpane = swing.JPanel() jtab.addTab( "regular search", cpane ) clnsearch = swing.JPanel() clnsearch.setName( "Leodialog" ) jtab.addTab( "node search", clnsearch ) #cpane = outer.getContentPane() cpane.setName( "Leodialog" ) cpane.setLayout( awt.GridLayout( 3, 1 ) ) #@ << Create the Find and Change panes >> #@+node:mork.20050127121143.6:<< Create the Find and Change panes >> #fc = Tk.Frame(outer, bd="1m") #fc.pack(anchor="n", fill="x", expand=1) findPanel = self.findPanel = swing.JTextArea() self.CutCopyPaste( findPanel ) fspane = swing.JScrollPane( findPanel ) self.changePanel = changePanel = swing.JTextArea() self.CutCopyPaste( changePanel ) cpane2 = swing.JScrollPane( changePanel ) splitpane = swing.JSplitPane( swing.JSplitPane.VERTICAL_SPLIT, fspane, cpane2 ) splitpane.setDividerLocation( .5 ) #outer.getContentPane().add( splitpane ) cpane.add( splitpane ) #outer.pack() # Removed unused height/width params: using fractions causes problems in some locales! #fpane = Tk.Frame(fc, bd=1) #cpane = Tk.Frame(fc, bd=1) #fpane.pack(anchor="n", expand=1, fill="x") #cpane.pack(anchor="s", expand=1, fill="x") # Create the labels and text fields... #flab = Tk.Label(fpane, width=8, text="Find:") #clab = Tk.Label(cpane, width=8, text="Change:") # Use bigger boxes for scripts. #self.find_text = ftxt = Tk.Text(fpane,bd=1,relief="groove",height=4,width=20) #3self.change_text = ctxt = Tk.Text(cpane,bd=1,relief="groove",height=4,width=20) #fBar = Tk.Scrollbar(fpane,name='findBar') #cBar = Tk.Scrollbar(cpane,name='changeBar') # Add scrollbars. #for bar,txt in ((fBar,ftxt),(cBar,ctxt)): # txt['yscrollcommand'] = bar.set # bar['command'] = txt.yview # bar.pack(side="right", fill="y") #flab.pack(side="left") #clab.pack(side="left") #ctxt.pack(side="right", expand=1, fill="both") #ftxt.pack(side="right", expand=1, fill="both") #@nonl #@-node:mork.20050127121143.6:<< Create the Find and Change panes >> #@nl #@ << Create four columns of radio and checkboxes >> #@+node:mork.20050127121143.7:<< Create four columns of radio and checkboxes >> #columnsFrame = Tk.Frame(outer,relief="groove",bd=2) #columnsFrame.pack(anchor="e",expand=1,padx="7p",pady="2p") # Don't fill. columnsFrame = swing.JPanel() columnsFrame.setLayout( swing.BoxLayout( columnsFrame, swing.BoxLayout.X_AXIS ) ) cpane.add( columnsFrame, awt.BorderLayout.SOUTH ) numberOfColumns = 4 # Number of columns columns = [] ; radioLists = [] ; checkLists = []; buttonGroups = [] for i in xrange(numberOfColumns): #columns.append(Tk.Frame(columnsFrame,bd=1)) jp = swing.JPanel() jp.setLayout( swing.BoxLayout( jp, swing.BoxLayout.Y_AXIS ) ) columns.append( jp ) radioLists.append([]) checkLists.append([]) buttonGroups.append( swing.ButtonGroup() ) for i in xrange(numberOfColumns): columnsFrame.add( columns[ i ] ) #columns[i].pack(side="left",padx="1p") # fill="y" Aligns to top. padx expands columns. radioLists[0] = [ (self.dict["radio-find-type"],"Plain Search","plain-search"), (self.dict["radio-find-type"],"Pattern Match Search","pattern-search"), (self.dict["radio-find-type"],"Script Search","script-search")] checkLists[0] = [ ("Script Change",self.dict["script_change"])] checkLists[1] = [ ("Whole Word", self.dict["whole_word"]), ("Ignore Case", self.dict["ignore_case"]), ("Wrap Around", self.dict["wrap"]), ("Reverse", self.dict["reverse"])] radioLists[2] = [ (self.dict["radio-search-scope"],"Entire Outline","entire-outine"), (self.dict["radio-search-scope"],"Suboutline Only","suboutline-only"), (self.dict["radio-search-scope"],"Node Only","node-only"), # I don't know what selection-only is supposed to do. (self.dict["radio-search-scope"],"Selection Only","selection-only")] checkLists[2] = [] checkLists[3] = [ ("Search Headline Text", self.dict["search_headline"]), ("Search Body Text", self.dict["search_body"]), ("Mark Finds", self.dict["mark_finds"]), ("Mark Changes", self.dict["mark_changes"])] class rAction( swing.AbstractAction ): def __init__( self, name, var , val ): swing.AbstractAction.__init__( self, name ) self.name = name self.var = var self.val = val def actionPerformed( self, aE ): self.var.set( self.val ) class jcbAction( swing.AbstractAction ): def __init__( self, name, var ): swing.AbstractAction.__init__( self, name ) self.var = var def actionPerformed( self, ae ): val = self.var.get() if val: self.var.set( 0 ) else: self.var.set( 1 ) for i in xrange(numberOfColumns): for var,name,val in radioLists[i]: aa = rAction( name, var, val ) but = swing.JRadioButton( aa ) columns[ i ].add( but ) buttonGroups[ i ].add( but ) #box = Tk.Radiobutton(columns[i],anchor="w",text=name,variable=var,value=val) #box.pack(fill="x") #box.bind("<1>", self.resetWrap) #if val == None: box.configure(state="disabled") for name, var in checkLists[i]: cbut = swing.JCheckBox( jcbAction( name, var ) ) columns[ i ].add( cbut ) #box = Tk.Checkbutton(columns[i],anchor="w",text=name,variable=var) #box.pack(fill="x") #box.bind("<1>", self.resetWrap) #if var is None: box.configure(state="disabled") for z in buttonGroups: elements = z.getElements() for x in elements: x.setSelected( True ) break #@-node:mork.20050127121143.7:<< Create four columns of radio and checkboxes >> #@nl #@ << Create two rows of buttons >> #@+node:mork.20050127121143.8:<< Create two rows of buttons >> # Create the button panes secondGroup = swing.JPanel() secondGroup.setLayout( awt.GridLayout( 2, 3 , 10, 10 ) ) cpane.add( secondGroup ) #buttons = Tk.Frame(outer,bd=1) #buttons2 = Tk.Frame(outer,bd=1) #buttons.pack (anchor="n",expand=1,fill="x") #buttons2.pack(anchor="n",expand=1,fill="x") class commandAA( swing.AbstractAction ): def __init__( self, name, command ): swing.AbstractAction.__init__( self, name ) self.command = command def actionPerformed( self, aE ): self.command() # Create the first row of buttons #findButton=Tk.Button(buttons,width=8,text="Find",bd=4,command=self.findButton) # The default. #contextBox=Tk.Checkbutton(buttons,anchor="w",text="Show Context",variable=self.dict["batch"]) #findAllButton=Tk.Button(buttons,width=8,text="Find All",command=self.findAllButton) findButton = swing.JButton( commandAA( "Find", self.findButton ) ) contextBox = swing.JCheckBox( "Show Context" ) findAllButton = swing.JButton( commandAA( "Find All", self.findAllButton ) ) secondGroup.add( findButton ) secondGroup.add( contextBox ) secondGroup.add( findAllButton ) #findButton.pack (pady="1p",padx="25p",side="left") #contextBox.pack (pady="1p", side="left",expand=1) #findAllButton.pack(pady="1p",padx="25p",side="right",fill="x",) # Create the second row of buttons #changeButton =Tk.Button(buttons2,width=8,text="Change",command=self.changeButton) #changeFindButton=Tk.Button(buttons2, text="Change, Then Find",command=self.changeThenFindButton) #changeAllButton =Tk.Button(buttons2,width=8,text="Change All",command=self.changeAllButton) changeButton = swing.JButton( commandAA( "Change", self.changeButton ) ) changeFindButton = swing.JButton( commandAA( "Change, Then Find", self.changeThenFindButton ) ) changeAllButton = swing.JButton( commandAA( "Change All", self.changeAllButton ) ) secondGroup.add( changeButton ) secondGroup.add( changeFindButton ) secondGroup.add( changeAllButton ) #changeButton.pack (pady="1p",padx="25p",side="left") #changeFindButton.pack(pady="1p", side="left",expand=1) #changeAllButton.pack (pady="1p",padx="25p",side="right") #@nonl #@-node:mork.20050127121143.8:<< Create two rows of buttons >> #@nl self.createNodeSearchFrame( clnsearch ) #self.top.setSize( 500, 500 ) self.top.pack() size = self.top.getSize() size.width = size.width + 50 self.top.setSize( size ) splitpane.setDividerLocation( .5 )
def registerExtenderCallbacks(self, callbacks): # keep a reference to our callbacks object self._callbacks = callbacks # obtain an extension helpers object self._helpers = callbacks.getHelpers() # set our extension name self._callbacks.setExtensionName("NMAP Parser") # Variable to store Location of .xml self._fileLocation = None # build UI self._jPanel = swing.JPanel() boxVertical = swing.Box.createVerticalBox() boxHorizontal = swing.Box.createHorizontalBox() getFileButton = swing.JButton('Open Nmap .xml File',actionPerformed=self.getFile) self._fileText = swing.JTextArea("", 1, 50) boxHorizontal.add(getFileButton) boxHorizontal.add(self._fileText) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() boxHorizontal.add(swing.JLabel("Enter Ports to Parse (Ex: 80, 443)")) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() boxHorizontal.add(swing.JLabel("Multiple queries can be added, seperated by a space.")) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() self._portField = swing.JTextField('',30) boxHorizontal.add(self._portField) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() boxHorizontal.add(swing.JLabel("Enter Keywords in Service Name to Parse (Ex: web, http)")) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() boxHorizontal.add(swing.JLabel("Multiple queries can be added, seperated by a space.")) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() self._serviceField = swing.JTextField('',30) boxHorizontal.add(self._serviceField) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() self._spiderCheckBox = swing.JCheckBox('Spider Found Hosts') boxHorizontal.add(self._spiderCheckBox) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() self._hostNameCheckBox = swing.JCheckBox('Use Hostname if Found') boxHorizontal.add(self._hostNameCheckBox) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() submitQueryButton = swing.JButton('Parse NMAP File',actionPerformed=self.nmapParse) boxHorizontal.add(submitQueryButton) clearSearchButton = swing.JButton('Clear Output',actionPerformed=self.clearOutput) boxHorizontal.add(clearSearchButton) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() boxHorizontal.add(swing.JLabel("Output")) boxVertical.add(boxHorizontal) boxHorizontal = swing.Box.createHorizontalBox() self._resultsTextArea = swing.JTextArea() resultsOutput = swing.JScrollPane(self._resultsTextArea) resultsOutput.setPreferredSize(Dimension(500,200)) boxHorizontal.add(resultsOutput) boxVertical.add(boxHorizontal) self._jPanel.add(boxVertical) # add the custom tab to Burp's UI self._callbacks.addSuiteTab(self) return
def createFrame(self): gui = g.app.gui top = self.top #@ << create the organizer frames >> #@+node:zorcanda!.20050409134025.6:<< create the organizer frames >> #outer = Tk.Frame(self.frame, bd=2,relief="groove") #outer.pack(pady=4) sl = swing.SpringLayout() outer = self.top.getContentPane() #swing.JPanel() outer.setLayout(sl) #self.frame.add( outer ) #row1 = Tk.Frame(outer) #row1.pack(pady=4) row1 = swing.JPanel(awt.GridLayout(3, 4)) outer.add(row1) sl.putConstraint(sl.NORTH, row1, 5, sl.NORTH, outer) row4 = swing.JPanel() outer.add(row4) sl.putConstraint(sl.NORTH, row4, 5, sl.SOUTH, row1) sl2 = swing.SpringLayout() options = swing.JPanel( sl2) #swing.Box.createHorizontalBox() #swing.JPanel( sl2 ); outer.add(options) sl.putConstraint(sl.NORTH, options, 5, sl.SOUTH, row4) #ws = Tk.Frame(options) #ws.pack(side="left",padx=4) ws = swing.JPanel() ws.setLayout(awt.GridLayout(1, 1)) options.add(ws) sl2.putConstraint(sl2.NORTH, ws, 2, sl2.NORTH, options) sl2.putConstraint(sl2.WEST, ws, 5, sl2.WEST, options) pr = swing.JPanel() pr.setLayout(awt.GridLayout(1, 1)) options.add(pr) sl2.putConstraint(sl2.NORTH, pr, 2, sl2.NORTH, options) sl2.putConstraint(sl2.WEST, pr, 10, sl2.EAST, ws) sl2.putConstraint(sl2.SOUTH, options, 5, sl2.SOUTH, pr) sl2.putConstraint(sl2.EAST, options, 5, sl2.EAST, pr) lower = swing.JPanel() outer.add(lower) sl.putConstraint(sl.NORTH, lower, 5, sl.SOUTH, options) sl.putConstraint(sl.EAST, lower, 0, sl.EAST, options) sl.putConstraint(sl.SOUTH, outer, 5, sl.SOUTH, lower) sl.putConstraint(sl.EAST, outer, 5, sl.EAST, row1) #@-node:zorcanda!.20050409134025.6:<< create the organizer frames >> #@nl #@ << create the browser rows >> #@+node:zorcanda!.20050409134025.7:<< create the browser rows >> for row, text, text2, command, var in ((row1, "Compare path 1:", "Ignore first line", self.onBrowse1, self.ignoreFirstLine1Var), (row1, "Compare path 2:", "Ignore first line", self.onBrowse2, self.ignoreFirstLine2Var), (row1, "Output file:", "Use output file", self.onBrowse3, self.useOutputFileVar)): #lab = Tk.Label(row,anchor="e",text=text,width=13) #lab.pack(side="left",padx=4) lab = swing.JLabel(text) row.add(lab) #e = Tk.Entry(row) #e.pack(side="left",padx=2) e = swing.JTextField(15) row.add(e) self.browseEntries.append(e) #b = Tk.Button(row,text="browse...",command=command) #b.pack(side="left",padx=6) b = swing.JButton("browse...") b.actionPerformed = lambda event, command=command: command() row.add(b) #b = Tk.Checkbutton(row,text=text2,anchor="w",variable=var,width=15) #b.pack(side="left") b = swing.JCheckBox(text2) b.actionPerformed = lambda event, b=b, var=var: var.set(b.getModel( ).isSelected()) row.add(b) #@nonl #@-node:zorcanda!.20050409134025.7:<< create the browser rows >> #@nl #@ << create the extension row >> #@+node:zorcanda!.20050409134025.8:<< create the extension row >> #b = Tk.Checkbutton(row4,anchor="w",var=self.limitToExtensionVar, # text="Limit directory compares to type:") #b.pack(side="left",padx=4) b = swing.JCheckBox("Limit directory compares to type:") b.actionPerformed = lambda event, b=b, var=self.limitToExtensionVar: var.set( b.getModel().isSelected()) row4.add(b) #self.extensionEntry = e = Tk.Entry(row4,width=6) #e.pack(side="left",padx=2) self.extensionEntry = e = swing.JTextField(5) row4.add(e) #b = Tk.Checkbutton(row4,anchor="w",var=self.appendOutputVar, # text="Append output to output file") #b.pack(side="left",padx=4) b = swing.JCheckBox("Append output to outputfile") b.actionPerformed = lambda event, b=b, var=self.appendOutputVar: var.set( b.getModel().isSelected()) row4.add(b) #@-node:zorcanda!.20050409134025.8:<< create the extension row >> #@nl #@ << create the whitespace options frame >> #@+node:zorcanda!.20050409134025.9:<< create the whitespace options frame >> w, f = gui.create_labeled_frame(ws, caption="Whitespace options", relief="groove") f.setLayout(awt.GridLayout(5, 1)) for text, var in (("Ignore Leo sentinel lines", self.ignoreSentinelLinesVar), ("Ignore blank lines", self.ignoreBlankLinesVar), ("Ignore leading whitespace", self.ignoreLeadingWhitespaceVar), ("Ignore interior whitespace", self.ignoreInteriorWhitespaceVar), ("Make whitespace visible", self.makeWhitespaceVisibleVar)): #b = Tk.Checkbutton(f,text=text,variable=var) #b.pack(side="top",anchor="w") b = swing.JCheckBox(text) b.actionPerformed = lambda event, b=b, var=var: var.set(b.getModel( ).isSelected()) f.add(b) #@-node:zorcanda!.20050409134025.9:<< create the whitespace options frame >> #@nl #@ << create the print options frame >> #@+node:zorcanda!.20050409134025.10:<< create the print options frame >> w, f = gui.create_labeled_frame(pr, caption="Print options", relief="groove") f.setLayout(awt.GridLayout(5, 1)) #row = Tk.Frame(f) #row.pack(expand=1,fill="x") row = swing.JPanel() sl3 = swing.SpringLayout() row.setLayout(sl3) f.add(row) pwidth = 0 #b = Tk.Checkbutton(row,text="Stop after",variable=self.stopAfterMismatchVar) #b.pack(side="left",anchor="w") b = swing.JCheckBox("Stop after") b.actionPerformed = lambda event, var=self.stopAfterMismatchVar, b=b: var.set( b.getModel().isSelected()) row.add(b) sl3.putConstraint(sl3.NORTH, b, 1, sl3.NORTH, row) sl3.putConstraint(sl3.WEST, b, 1, sl3.WEST, row) #self.countEntry = e = Tk.Entry(row,width=4) #e.pack(side="left",padx=2) #e.insert(01,"1") self.countEntry = e = swing.JTextField(5) row.add(e) sl3.putConstraint(sl3.NORTH, e, 1, sl3.NORTH, row) sl3.putConstraint(sl3.WEST, e, 1, sl3.EAST, b) #lab = Tk.Label(row,text="mismatches") #lab.pack(side="left",padx=2) lab = swing.JLabel("mismatches") row.add(lab) sl3.putConstraint(sl3.NORTH, lab, 1, sl3.NORTH, row) sl3.putConstraint(sl3.WEST, lab, 1, sl3.EAST, e) sl3.putConstraint(sl3.SOUTH, row, 1, sl3.SOUTH, e) sl3.putConstraint(sl3.EAST, row, 1, sl3.EAST, lab) for padx, text, var in ((0, "Print matched lines", self.printMatchesVar), (20, "Show both matching lines", self.printBothMatchesVar), (0, "Print mismatched lines", self.printMismatchesVar), (0, "Print unmatched trailing lines", self.printTrailingMismatchesVar)): #b = Tk.Checkbutton(f,text=text,variable=var) #b.pack(side="top",anchor="w",padx=padx) b = swing.JCheckBox(text) b.actionPerformed = lambda event, b=b, var=var: var.set(b.getModel( ).isSelected()) f.add(b) self.printButtons.append(b) # To enable or disable the "Print both matching lines" button. b = self.printButtons[0] #b.configure(command=self.onPrintMatchedLines) #spacer = Tk.Frame(f) #spacer.pack(padx="1i") #@nonl #@-node:zorcanda!.20050409134025.10:<< create the print options frame >> #@nl #@ << create the compare buttons >> #@+node:zorcanda!.20050409134025.11:<< create the compare buttons >> for text, command in (("Compare files", self.onCompareFiles), ("Compare directories", self.onCompareDirectories)): #b = Tk.Button(lower,text=text,command=command,width=18) #b.pack(side="left",padx=6) b = swing.JButton(text) b.actionPerformed = lambda event, command=command: command() lower.add(b) #@-node:zorcanda!.20050409134025.11:<< create the compare buttons >> #@nl top.pack() gui.center_dialog(top) # Do this _after_ building the dialog! self.finishCreate()
def widgetFactory(self, *args, **kwds): return swing.JCheckBox()
def arrange_request_tab(self): self._jRequestPanel = swing.JPanel() self._jRequestPanel.setLayout(None) self._jRequestPanel.setPreferredSize(awt.Dimension(1368,1368)) self._jLabelDecpription1 = swing.JLabel("Command Injection") self._jLabelDecpription1.setFont(Font(Font.DIALOG, Font.BOLD, 40)) self._jLabelDecpription1.setForeground(Color.PINK) self._jLabelDecpription1.setBounds(10, 10, 800, 50) self._jRequestPanel.add(self._jLabelDecpription1) self._jLabelDecpription2 = swing.JLabel() self._jLabelDecpription2.setText("Input a request information and your settings.") self._jLabelDecpription2.setBounds(10, 70, 300, 20) self._jRequestPanel.add(self._jLabelDecpription2) self._jLabelScanIPListen = swing.JLabel() self._jLabelScanIPListen.setText('URL:') self._jLabelScanIPListen.setBounds(10, 100, 150, 30) self._jRequestPanel.add(self._jLabelScanIPListen) self._jTextFieldScanURL = swing.JTextField() self._jTextFieldScanURL.setBounds(120, 100, 500, 30) self._jRequestPanel.add(self._jTextFieldScanURL) # Method self._jLabelScanMethod = swing.JLabel() self._jLabelScanMethod.setText('Set method:') self._jLabelScanMethod.setBounds(10, 140, 150, 30) self._jRequestPanel.add(self._jLabelScanMethod) self._jComboScanMethod = swing.JComboBox(METHODS) self._jComboScanMethod.setSelectedIndex(0) self._jComboScanMethod.setBounds(120, 140, 500, 30) self._jRequestPanel.add(self._jComboScanMethod) # Payloads self._jLabelScanPayload = swing.JLabel() self._jLabelScanPayload.setText('Post Data:') self._jLabelScanPayload.setBounds(10, 180, 150, 30) self._jRequestPanel.add(self._jLabelScanPayload) self._jTextAreaScanPayload = swing.JTextArea() self._jTextAreaScanPayload.setLineWrap(True) self._jTextAreaScanPayload.setEditable(True) self._jScrollPanePayload = swing.JScrollPane(self._jTextAreaScanPayload) self._jScrollPanePayload.setVerticalScrollBarPolicy(swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) self._jScrollPanePayload.setBounds(120, 180, 500, 100) self._jRequestPanel.add(self._jScrollPanePayload) # Headers Area self._jLabelScanCookies = swing.JLabel() self._jLabelScanCookies.setText('Cookies:') self._jLabelScanCookies.setBounds(10, 290, 150, 30) self._jRequestPanel.add(self._jLabelScanCookies) self._jTextFieldCookies = swing.JTextField() self._jTextFieldCookies.setBounds(120, 290, 500, 30) self._jRequestPanel.add(self._jTextFieldCookies) self._jCheckCookies = swing.JCheckBox('Test this header.') self._jCheckCookies.setBounds(620, 290, 150, 30) self._jRequestPanel.add(self._jCheckCookies) self._jLabelScanReferer = swing.JLabel() self._jLabelScanReferer.setText('Referer:') self._jLabelScanReferer.setBounds(10, 330, 150, 30) self._jRequestPanel.add(self._jLabelScanReferer) self._jTextFieldReferer = swing.JTextField() self._jTextFieldReferer.setBounds(120, 330, 500, 30) self._jRequestPanel.add(self._jTextFieldReferer) self._jCheckReferer = swing.JCheckBox('Test this header.') self._jCheckReferer.setBounds(620, 330, 150, 30) self._jRequestPanel.add(self._jCheckReferer) self._jLabelScanUserAgent = swing.JLabel() self._jLabelScanUserAgent.setText('User-Agent:') self._jLabelScanUserAgent.setBounds(10, 370, 150, 30) self._jRequestPanel.add(self._jLabelScanUserAgent) self._jTextFieldUserAgent = swing.JTextField() self._jTextFieldUserAgent.setBounds(120, 370, 500, 30) self._jRequestPanel.add(self._jTextFieldUserAgent) self._jCheckUserAgent = swing.JCheckBox('Test this header.') self._jCheckUserAgent.setBounds(620, 370, 150, 30) self._jRequestPanel.add(self._jCheckUserAgent) self._jLabelScanHeader = swing.JLabel() self._jLabelScanHeader.setText('Custom headers:') self._jLabelScanHeader.setBounds(10, 410, 150, 30) self._jRequestPanel.add(self._jLabelScanHeader) self._jTextAreaScanHeader = swing.JTextArea() self._jTextAreaScanHeader.setLineWrap(True) self._jTextAreaScanHeader.setEditable(True) self._jScrollPaneHeader = swing.JScrollPane(self._jTextAreaScanHeader) self._jScrollPaneHeader.setVerticalScrollBarPolicy(swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) self._jScrollPaneHeader.setBounds(120, 410, 500, 100) self._jRequestPanel.add(self._jScrollPaneHeader) self._jButtonTestConnection = swing.JButton('Test Connection', actionPerformed=self.test_connection) self._jButtonTestConnection.setBounds(90, 560, 150, 30) self._jRequestPanel.add(self._jButtonTestConnection) self._jButtonStartScan = swing.JButton('Send', actionPerformed=self.thread_run_scan) self._jButtonStartScan.setBounds(240, 560, 150, 30) self._jRequestPanel.add(self._jButtonStartScan) self._jButtonStartScan = swing.JButton('Clear', actionPerformed=self.clear) self._jButtonStartScan.setBounds(390, 560, 150, 30) self._jRequestPanel.add(self._jButtonStartScan) ''' self._jLabelScanHeader = swing.JLabel() self._jLabelScanHeader.setText('Debug level:') self._jLabelScanHeader.setBounds(10, 520, 150, 30) self._jRequestPanel.add(self._jLabelScanHeader) self._JComboDebugLevel = swing.JComboBox(debug_level) self._JComboDebugLevel.setSelectedIndex(0) self._JComboDebugLevel.setBounds(120, 520, 150, 30) self._jRequestPanel.add(self._JComboDebugLevel) # TODO: remove this testing button after developement self._jButtonTestData = swing.JButton('Test Data', actionPerformed=self.add_test_data) self._jButtonTestData.setBounds(90, 600, 150, 30) self._jRequestPanel.add(self._jButtonTestData) ''' #self._JBarProgress = swing.JProgressBar(0, 100, value=50, stringPainted=True) #self._JBarProgress.setBounds(10, 580, 600, 20) self._jConfigTab.addTab("Request", self._jRequestPanel)
def generateUI(file_list): # window frame = swing.JFrame("Marcksl1 prescreen tool") frame.setDefaultCloseOperation(swing.JFrame.DISPOSE_ON_CLOSE) frame.setPreferredSize(Dimension(700, 500)) frame.setSize(Dimension(700, 500)) frame.setLocationByPlatform(True) layout = GridBagLayout() frame.setLayout(layout) # image list lst_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0, 0, 0.5, 0.33) lst_constraints.fill = GridBagConstraints.BOTH lst = swing.JList(file_list) lst_scrollpane = swing.JScrollPane(lst) layout.setConstraints(lst_scrollpane, lst_constraints) frame.add(lst_scrollpane) # radio buttons radio_panel_constraints = quickSetGridBagConstraints( GridBagConstraints(), 1, 0, 0.25, 0.33) radio_panel_constraints.fill = GridBagConstraints.HORIZONTAL isvButton = swing.JRadioButton("ISV", True) dlavButton = swing.JRadioButton("DLAV") radio_group = swing.ButtonGroup() radio_group.add(isvButton) radio_group.add(dlavButton) radio_panel = swing.JPanel() radio_panel_layout = GridLayout(2, 1) radio_panel.setLayout(radio_panel_layout) radio_panel.add(isvButton) radio_panel.add(dlavButton) radio_panel.setBorder( swing.BorderFactory.createTitledBorder( swing.BorderFactory.createEtchedBorder(), "Vessel type")) layout.setConstraints(radio_panel, radio_panel_constraints) frame.add(radio_panel) # checkboxes chk_constraints = quickSetGridBagConstraints(GridBagConstraints(), 2, 0, 0.25, 0.33) chk_constraints.fill = GridBagConstraints.HORIZONTAL chkbox = swing.JCheckBox("Is lumenised?", True) layout.setConstraints(chkbox, chk_constraints) frame.add(chkbox) # add ROI button roi_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0, 1, 1, 0.16) roi_but_constraints.gridwidth = 3 roi_but_constraints.fill = GridBagConstraints.BOTH roi_but = swing.JButton("Add current ROI") layout.setConstraints(roi_but, roi_but_constraints) frame.add(roi_but) # metadata display table mdtbl_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0, 2, 1, 0.33) mdtbl_constraints.gridwidth = 3 mdtbl_constraints.fill = GridBagConstraints.BOTH mdtbl_colnames = [ 'Experiment', 'Embryo', 'Imaged region index', 'ROI index', 'Vessel type', 'Lumenised?' ] mdtbl_model = swing.table.DefaultTableModel(mdtbl_colnames, 10) mdtbl = swing.JTable() mdtbl_scrollpane = swing.JScrollPane(mdtbl) layout.setConstraints(mdtbl_scrollpane, mdtbl_constraints) frame.add(mdtbl_scrollpane) # buttons del_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 1, 3, 0.25, 0.16) del_but_constraints.fill = GridBagConstraints.BOTH del_but = swing.JButton("Delete selected ROI") layout.setConstraints(del_but, del_but_constraints) frame.add(del_but) save_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 2, 3, 0.25, 0.16) save_but_constraints.fill = GridBagConstraints.BOTH save_but = swing.JButton("Save...") layout.setConstraints(save_but, save_but_constraints) frame.add(save_but) # show window frame.setVisible(True) frame.pack()
def drawUI(self): # Make a whole Burp Suite tab just for this plugin self.tab = swing.JPanel() # Draw title area self.uiLabel = swing.JLabel('Site Map to CSV Options') self.uiLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiLabel.setForeground(Color(235,136,0)) # UI for high-level options self.uiScopeOnly = swing.JRadioButton('In-scope only', True) self.uiScopeAll = swing.JRadioButton('All (disregard scope)', False) self.uiScopeButtonGroup = swing.ButtonGroup() self.uiScopeButtonGroup.add(self.uiScopeOnly) self.uiScopeButtonGroup.add(self.uiScopeAll) # Draw areas in the tab to keep different UI commands separate self.uipaneA = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT) self.uipaneA.setMaximumSize(Dimension(900,125)) self.uipaneA.setDividerSize(2) self.uipaneB = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT) self.uipaneB.setDividerSize(2) self.uipaneA.setRightComponent(self.uipaneB) self.uipaneA.setBorder(BorderFactory.createLineBorder(Color.black)) # Fill in UI area for response code filters self.uiCodesPanel = swing.JPanel() self.uiCodesPanel.setPreferredSize(Dimension(200, 75)) self.uiCodesPanel.setBorder(EmptyBorder(10,10,10,10)) self.uiCodesPanel.setLayout(BorderLayout()) self.uiCodesLabel = swing.JLabel('Response code filters') self.uiCodesLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiRcodePanel = swing.JPanel() self.uiRcodePanel.setLayout(GridLayout(1,1)) self.uiRcode1xx = swing.JCheckBox('1XX ', False) self.uiRcode2xx = swing.JCheckBox('2XX ', True) self.uiRcode3xx = swing.JCheckBox('3XX ', True) self.uiRcode4xx = swing.JCheckBox('4XX ', True) self.uiRcode5xx = swing.JCheckBox('5XX ', True) self.uiRcodePanel.add(self.uiRcode1xx) self.uiRcodePanel.add(self.uiRcode2xx) self.uiRcodePanel.add(self.uiRcode3xx) self.uiRcodePanel.add(self.uiRcode4xx) self.uiRcodePanel.add(self.uiRcode5xx) self.uiCodesPanel.add(self.uiCodesLabel,BorderLayout.NORTH) self.uiCodesPanel.add(self.uiRcodePanel,BorderLayout.WEST) self.uipaneA.setLeftComponent(self.uiCodesPanel) # Fill in UI area for initiating export to CSV self.uiExportPanel = swing.JPanel() self.uiExportPanel.setPreferredSize(Dimension(200, 75)) self.uiExportPanel.setBorder(EmptyBorder(10,10,10,10)) self.uiExportPanel.setLayout(BorderLayout()) self.uiExportLabel = swing.JLabel('Export') self.uiExportLabel.setFont(Font('Tahoma', Font.BOLD, 14)) self.uiMustHaveResponse = swing.JRadioButton('Must have a response ', True) self.uiAllRequests = swing.JRadioButton('All (overrides response code filters) ', False) self.uiResponseButtonGroup = swing.ButtonGroup() self.uiResponseButtonGroup.add(self.uiMustHaveResponse) self.uiResponseButtonGroup.add(self.uiAllRequests) self.uiExportRun = swing.JButton('Export',actionPerformed=self.exportAndSaveCsv) self.uiExportButtonPanel = swing.JPanel() self.uiExportButtonPanel.add(self.uiExportRun) self.uiExportPanel.add(self.uiExportLabel,BorderLayout.NORTH) self.uiExportPanel.add(self.uiMustHaveResponse,BorderLayout.WEST) self.uiExportPanel.add(self.uiAllRequests,BorderLayout.CENTER) self.uiExportPanel.add(self.uiExportButtonPanel,BorderLayout.SOUTH) self.uipaneB.setLeftComponent(self.uiExportPanel) # Common UI stuff layout = swing.GroupLayout(self.tab) self.tab.setLayout(layout) # Thank you to Smeege (https://github.com/SmeegeSec/Burp-Importer/) for helping me figure out how this works. # He in turn gave credit to Antonio Sanchez (https://github.com/Dionach/HeadersAnalyzer/) layout.setHorizontalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.uiLabel) .addGroup(layout.createSequentialGroup() .addGap(10,10,10) .addComponent(self.uiScopeOnly) .addGap(10,10,10) .addComponent(self.uiScopeAll)) .addGap(15,15,15) .addComponent(self.uipaneA)) .addContainerGap(26, lang.Short.MAX_VALUE))) layout.setVerticalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(15,15,15) .addComponent(self.uiLabel) .addGap(15,15,15) .addGroup(layout.createParallelGroup() .addComponent(self.uiScopeOnly) .addComponent(self.uiScopeAll)) .addGap(20,20,20) .addComponent(self.uipaneA) .addGap(20,20,20) .addGap(5,5,5) .addGap(20,20,20)))
def initGui(self): self.tab = swing.JPanel() layout = swing.GroupLayout(self.tab) self.tab.setLayout(layout) self.titleLabel = swing.JLabel("RSA Plugin") self.titleLabel.setFont(Font("Tahoma", 1, 16)) self.titleLabel.setForeground(Color(235,136,0)) self.infoLabel = swing.JLabel("Try to use eazier by use custom cotext menu button for RSA en/decode.") self.infoLabel.setFont(Font("Tahoma", 0, 12)) self.attentionLabel = swing.JLabel("[*] ONlY SUPPORT PKCS#1, you could trans PKCS#8 to PKCS#1 for use this extension.") self.attentionLabel.setFont(Font("Tahoma", 1, 12)) self.attentionLabel.setForeground(Color(255,0,0)) self.keyLabel = swing.JLabel("RSA keys") self.keyLabel.setFont(Font("Tahoma", 1, 12)) self.rsapublickeyLabel = swing.JLabel("PublicKey") self.rsapublickeyTextArea = swing.JTextArea("") self.rsaprivatekeyLabel = swing.JLabel("PrivateKey") self.rsaprivatekeyTextArea = swing.JTextArea("") self.setkeyButton = swing.JButton("Set", actionPerformed=self.setOptions) self.generateButton = swing.JButton("Generate", actionPerformed=self.generateKeys) self.settingLabel = swing.JLabel("Settings") self.settingLabel.setFont(Font("Tahoma", 1, 12)) self.autoreplaceCheckBox = swing.JCheckBox("Auto Replace (auto replace the words selected with the RSA result)", actionPerformed=self.autoReplaceCheck) self.urlcodeenableCheckBox = swing.JCheckBox("Urlcode Enable (for the data needs to be base64 en/decoded before/after RSA)", actionPerformed=self.urlcodeEnableCheck) self.logLabel = swing.JLabel("Log") self.logLabel.setFont(Font("Tahoma", 1, 12)) self.logPane = swing.JScrollPane() self.logArea = swing.JTextArea("RSA Log - Every action's info will be appended here.\n") self.logArea.setLineWrap(True) self.logPane.setViewportView(self.logArea) self.logClearButton = swing.JButton("Clear", actionPerformed=self.logClear) self.bar = swing.JSeparator(swing.SwingConstants.HORIZONTAL) self.bar2 = swing.JSeparator(swing.SwingConstants.HORIZONTAL) self.bar3 = swing.JSeparator(swing.SwingConstants.HORIZONTAL) # 设置水平布局 layout.setHorizontalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(15) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.titleLabel) .addComponent(self.infoLabel) .addComponent(self.attentionLabel) .addComponent(self.bar) .addComponent(self.keyLabel) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup() .addComponent(self.setkeyButton) .addComponent(self.generateButton)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup() .addComponent(self.rsapublickeyLabel) .addComponent(self.rsapublickeyTextArea, swing.GroupLayout.PREFERRED_SIZE, 500, swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup() .addComponent(self.rsaprivatekeyLabel) .addComponent(self.rsaprivatekeyTextArea, swing.GroupLayout.PREFERRED_SIZE, 500, swing.GroupLayout.PREFERRED_SIZE))) .addComponent(self.bar2) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup() .addComponent(self.settingLabel)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup() .addComponent(self.autoreplaceCheckBox) .addComponent(self.urlcodeenableCheckBox))) .addComponent(self.bar3) .addComponent(self.logLabel) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup() .addComponent(self.logClearButton)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup() .addComponent(self.logPane, swing.GroupLayout.PREFERRED_SIZE, 1100, swing.GroupLayout.PREFERRED_SIZE))) ))) # 设置垂直布局 layout.setVerticalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(15) .addComponent(self.titleLabel) .addGap(10) .addComponent(self.infoLabel) .addGap(10) .addComponent(self.attentionLabel) .addGap(10) .addComponent(self.bar) .addGap(10) .addComponent(self.keyLabel) .addGap(10) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup() .addComponent(self.rsapublickeyLabel) .addComponent(self.rsaprivatekeyLabel)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup() .addGroup(layout.createSequentialGroup() .addComponent(self.setkeyButton) .addGap(20) .addComponent(self.generateButton)) .addComponent(self.rsapublickeyTextArea, swing.GroupLayout.PREFERRED_SIZE, 250, swing.GroupLayout.PREFERRED_SIZE) .addComponent(self.rsaprivatekeyTextArea, swing.GroupLayout.PREFERRED_SIZE, 250, swing.GroupLayout.PREFERRED_SIZE))) .addGap(10) .addComponent(self.bar2) .addGap(10) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup() .addComponent(self.settingLabel)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createSequentialGroup() .addComponent(self.autoreplaceCheckBox) .addGap(5) .addComponent(self.urlcodeenableCheckBox))) .addGap(10) .addComponent(self.bar3) .addGap(10) .addComponent(self.logLabel) .addGap(10) .addGroup(layout.createParallelGroup() .addComponent(self.logClearButton) .addComponent(self.logPane, swing.GroupLayout.PREFERRED_SIZE, 400, swing.GroupLayout.PREFERRED_SIZE)) ))
def __init__(self): ######################################################### # # set up the overall frame (the window itself) # self.window = swing.JFrame("Swing Sampler!") self.window.windowClosing = self.goodbye self.window.contentPane.layout = awt.BorderLayout() ######################################################### # # under this will be a tabbed pane; each tab is named # and contains a panel with other stuff in it. # tabbedPane = swing.JTabbedPane() self.window.contentPane.add("Center", tabbedPane) ######################################################### # # The first tabbed panel will be named "Some Basic # Widgets", and is referenced by variable 'firstTab' # firstTab = swing.JPanel() firstTab.layout = awt.BorderLayout() tabbedPane.addTab("Some Basic Widgets", firstTab) # # slap in some labels, a list, a text field, etc... Some # of these are contained in their own panels for # layout purposes. # tmpPanel = swing.JPanel() tmpPanel.layout = awt.GridLayout(3, 1) tmpPanel.border = swing.BorderFactory.createTitledBorder( "Labels are simple") tmpPanel.add(swing.JLabel("I am a label. I am quite boring.")) tmpPanel.add( swing.JLabel( "<HTML><FONT COLOR='blue'>HTML <B>labels</B></FONT> are <I>somewhat</I> <U>less boring</U>.</HTML>" )) tmpPanel.add( swing.JLabel("Labels can also be aligned", swing.JLabel.RIGHT)) firstTab.add(tmpPanel, "North") # # Notice that the variable "tmpPanel" gets reused here. # This next line creates a new panel, but we reuse the # "tmpPanel" name to refer to it. The panel that # tmpPanel used to refer to still exists, but we no # longer have a way to name it (but that's ok, since # we don't need to refer to it any more). # tmpPanel = swing.JPanel() tmpPanel.layout = awt.BorderLayout() tmpPanel.border = swing.BorderFactory.createTitledBorder( "Tasty tasty lists") # # Note that here we stash a reference to the list in # "self.list". This puts it in the scope of the object, # rather than this function. This is because we'll be # referring to it later from outside this function, so # it needs to be "bumped up a level." # listData = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] self.list = swing.JList(listData) tmpPanel.add("Center", swing.JScrollPane(self.list)) button = swing.JButton("What's Selected?") button.actionPerformed = self.whatsSelectedCallback tmpPanel.add("East", button) firstTab.add("Center", tmpPanel) tmpPanel = swing.JPanel() tmpPanel.layout = awt.BorderLayout() # # The text field also goes in self, since the callback # that displays the contents will need to get at it. # # Also note that because the callback is a function inside # the SwingSampler object, you refer to it through self. # (The callback could potentially be outside the object, # as a top-level function. In that case you wouldn't # use the 'self' selector; any variables that it uses # would have to be in the global scope. # self.field = swing.JTextField() tmpPanel.add(self.field) tmpPanel.add( swing.JButton("Click Me", actionPerformed=self.clickMeCallback), "East") firstTab.add(tmpPanel, "South") ######################################################### # # The second tabbed panel is next... This shows # how to build a basic web browser in about 20 lines. # secondTab = swing.JPanel() secondTab.layout = awt.BorderLayout() tabbedPane.addTab("HTML Fanciness", secondTab) tmpPanel = swing.JPanel() tmpPanel.add(swing.JLabel("Go to:")) self.urlField = swing.JTextField(40, actionPerformed=self.goToCallback) tmpPanel.add(self.urlField) tmpPanel.add(swing.JButton("Go!", actionPerformed=self.goToCallback)) secondTab.add(tmpPanel, "North") self.htmlPane = swing.JEditorPane("http://www.google.com", editable=0, hyperlinkUpdate=self.followHyperlink, preferredSize=(400, 400)) secondTab.add(swing.JScrollPane(self.htmlPane), "Center") self.statusLine = swing.JLabel("(status line)") secondTab.add(self.statusLine, "South") ######################################################### # # The third tabbed panel is next... # thirdTab = swing.JPanel() tabbedPane.addTab("Other Widgets", thirdTab) imageLabel = swing.JLabel( swing.ImageIcon( net.URL("http://www.gatech.edu/images/logo-gatech.gif"))) imageLabel.toolTipText = "Labels can have images! Every widget can have a tooltip!" thirdTab.add(imageLabel) tmpPanel = swing.JPanel() tmpPanel.layout = awt.GridLayout(3, 2) tmpPanel.border = swing.BorderFactory.createTitledBorder( "Travel Checklist") tmpPanel.add( swing.JCheckBox("Umbrella", actionPerformed=self.checkCallback)) tmpPanel.add( swing.JCheckBox("Rain coat", actionPerformed=self.checkCallback)) tmpPanel.add( swing.JCheckBox("Passport", actionPerformed=self.checkCallback)) tmpPanel.add( swing.JCheckBox("Airline tickets", actionPerformed=self.checkCallback)) tmpPanel.add( swing.JCheckBox("iPod", actionPerformed=self.checkCallback)) tmpPanel.add( swing.JCheckBox("Laptop", actionPerformed=self.checkCallback)) thirdTab.add(tmpPanel) tmpPanel = swing.JPanel() tmpPanel.layout = awt.GridLayout(4, 1) tmpPanel.border = swing.BorderFactory.createTitledBorder("My Pets") # # A ButtonGroup is used to indicate which radio buttons # go together. # buttonGroup = swing.ButtonGroup() radioButton = swing.JRadioButton("Dog", actionPerformed=self.radioCallback) buttonGroup.add(radioButton) tmpPanel.add(radioButton) radioButton = swing.JRadioButton("Cat", actionPerformed=self.radioCallback) buttonGroup.add(radioButton) tmpPanel.add(radioButton) radioButton = swing.JRadioButton("Pig", actionPerformed=self.radioCallback) buttonGroup.add(radioButton) tmpPanel.add(radioButton) radioButton = swing.JRadioButton("Capybara", actionPerformed=self.radioCallback) buttonGroup.add(radioButton) tmpPanel.add(radioButton) thirdTab.add(tmpPanel) self.window.pack() self.window.show()
def initGui(self): # Define elements self.tab = swing.JPanel() self.settingsLabel = swing.JLabel("Settings:") self.settingsLabel.setFont(Font("Tahoma", 1, 12)); self.boringHeadersLabel = swing.JLabel("Boring Headers") self.pasteButton = swing.JButton("Paste", actionPerformed=self.paste) self.loadButton = swing.JButton("Load", actionPerformed=self.load) self.removeButton = swing.JButton("Remove", actionPerformed=self.remove) self.clearButton = swing.JButton("Clear", actionPerformed=self.clear) self.jScrollPane1 = swing.JScrollPane() self.boringHeadersList = swing.JList() self.addButton = swing.JButton("Add", actionPerformed=self.add) self.addTF = swing.JTextField("New item...", focusGained=self.emptyTF, focusLost=self.fillTF) self.interestingHeadersCB = swing.JCheckBox("Check for Interesting Headers") self.securityHeadersCB = swing.JCheckBox("Check for Security Headers", actionPerformed=self.onSelect) self.xFrameOptionsCB = swing.JCheckBox("X-Frame-Options") self.xContentTypeOptionsCB = swing.JCheckBox("X-Content-Type-Options") self.xXssProtectionCB = swing.JCheckBox("X-XSS-Protection") self.HstsCB = swing.JCheckBox("Strict-Transport-Security (HSTS)") self.CorsCB = swing.JCheckBox("Access-Control-Allow-Origin (CORS)") self.contentSecurityPolicyCB = swing.JCheckBox("Content-Security-Policy") self.xPermittedCrossDomainPoliciesCB = swing.JCheckBox("X-Permitted-Cross-Domain-Policies") self.outputLabel = swing.JLabel("Output:") self.outputLabel.setFont(Font("Tahoma", 1, 12)); self.logsLabel = swing.JLabel("Logs") self.jScrollPane2 = swing.JScrollPane() self.logsTA = swing.JTextArea() self.exportButton = swing.JButton("Export in report friendly format", actionPerformed=self.export) self.jScrollPane1.setViewportView(self.boringHeadersList) self.logsTA.setColumns(20) self.logsTA.setRows(7) self.jScrollPane2.setViewportView(self.logsTA) # Configure layout layout = swing.GroupLayout(self.tab) self.tab.setLayout(layout) layout.setHorizontalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(33, 33, 33) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(83, 83, 83) .addComponent(self.boringHeadersLabel)) .addComponent(self.settingsLabel) .addGroup(layout.createSequentialGroup() .addComponent(self.interestingHeadersCB) .addGap(149, 149, 149) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.securityHeadersCB) .addComponent(self.HstsCB) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(self.xFrameOptionsCB) .addGap(83, 83, 83)) .addGroup(layout.createSequentialGroup() .addComponent(self.xContentTypeOptionsCB) .addGap(47, 47, 47))) .addGroup(layout.createSequentialGroup() .addComponent(self.xXssProtectionCB) .addGap(83, 83, 83))) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.xPermittedCrossDomainPoliciesCB) .addComponent(self.contentSecurityPolicyCB) .addComponent(self.CorsCB))))) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.TRAILING) .addComponent(self.addButton) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.outputLabel) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.TRAILING, False) .addComponent(self.removeButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE) .addComponent(self.pasteButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE) .addComponent(self.loadButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE) .addComponent(self.clearButton, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.PREFERRED_SIZE, lang.Short.MAX_VALUE)))) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.jScrollPane1, swing.GroupLayout.PREFERRED_SIZE, 200, swing.GroupLayout.PREFERRED_SIZE) .addComponent(self.addTF, swing.GroupLayout.PREFERRED_SIZE, 200, swing.GroupLayout.PREFERRED_SIZE) .addComponent(self.jScrollPane2, swing.GroupLayout.PREFERRED_SIZE, 450, swing.GroupLayout.PREFERRED_SIZE) .addComponent(self.logsLabel) .addComponent(self.exportButton)))) .addContainerGap(26, lang.Short.MAX_VALUE)) ) layout.setVerticalGroup( layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(41, 41, 41) .addComponent(self.settingsLabel) .addGap(31, 31, 31) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.BASELINE) .addComponent(self.interestingHeadersCB) .addComponent(self.securityHeadersCB)) .addGap(26, 26, 26) .addComponent(self.boringHeadersLabel) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(self.pasteButton) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(self.loadButton) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(self.removeButton) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(self.clearButton)) .addComponent(self.jScrollPane1, swing.GroupLayout.PREFERRED_SIZE, 138, swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.BASELINE) .addComponent(self.addButton) .addComponent(self.addTF, swing.GroupLayout.PREFERRED_SIZE, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.BASELINE) .addComponent(self.xFrameOptionsCB) .addComponent(self.CorsCB)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING) .addComponent(self.xContentTypeOptionsCB) .addComponent(self.contentSecurityPolicyCB, swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.BASELINE) .addComponent(self.xXssProtectionCB) .addComponent(self.xPermittedCrossDomainPoliciesCB)) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(self.HstsCB))) .addGap(30, 30, 30) .addComponent(self.outputLabel) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(self.logsLabel) .addGap(8, 8, 8) .addComponent(self.jScrollPane2, swing.GroupLayout.PREFERRED_SIZE, 250, swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(self.exportButton) .addContainerGap(swing.GroupLayout.DEFAULT_SIZE, lang.Short.MAX_VALUE)) )
def __init__(self, maxSizeY, title, description, requestExecutor, responseExecutor, editBoxLabel=None, editBox=None, browseButton=None, tickBox=None): self.title = title self.descriptionLabel = swing.JLabel(description) self.requestExecutor = requestExecutor self.responseExecutor = responseExecutor self.panel = swing.JPanel() self.panel.setLayout( swing.BoxLayout(self.panel, swing.BoxLayout.Y_AXIS)) self.panel.setBorder(swing.BorderFactory.createTitledBorder(title)) self.panel.setAlignmentX(awt.Component.LEFT_ALIGNMENT) self.panel.setMaximumSize(awt.Dimension(1000, maxSizeY)) descriptionPanel = swing.JPanel() descriptionPanel.setLayout( swing.BoxLayout(descriptionPanel, swing.BoxLayout.X_AXIS)) descriptionPanel.add(self.descriptionLabel) self._setBorder(descriptionPanel, 10, 10) self.panel.add(descriptionPanel) optionPanel = swing.JPanel() optionPanel.setLayout( swing.BoxLayout(optionPanel, swing.BoxLayout.X_AXIS)) if editBox is not None: self.editBox = swing.JTextField(editBox) self.editBox.setMaximumSize(awt.Dimension(1000, 30)) optionPanel.add(swing.JLabel(editBoxLabel)) optionPanel.add(self.editBox) if browseButton is not None: self.browseButton = swing.JButton( 'Browse', actionPerformed=self.openBrowseDialog) optionPanel.add(self.browseButton) if editBox is not None or browseButton is not None: self._setBorder(optionPanel, 10, 10) self.panel.add(optionPanel) if tickBox is not None: self.tickBox = swing.JCheckBox(tickBox) tickBoxPanel = swing.JPanel() tickBoxPanel.setLayout( swing.BoxLayout(tickBoxPanel, swing.BoxLayout.X_AXIS)) tickBoxPanel.add(self.tickBox) self._setBorder(tickBoxPanel, 10, 10) self.panel.add(tickBoxPanel) enableButtonPanel = swing.JPanel() enableButtonPanel.setLayout( swing.BoxLayout(enableButtonPanel, swing.BoxLayout.X_AXIS)) self.enableButton = swing.JToggleButton('Disabled', actionPerformed=self.toggle) enableButtonPanel.add(self.enableButton) self._setBorder(enableButtonPanel, 10, 10) self.panel.add(enableButtonPanel)
def createNodeSearchFrame( self, clnpanel ): clnpanel.setLayout( awt.BorderLayout() ) oclnpanel = clnpanel clnpanel = swing.Box.createHorizontalBox() oclnpanel.add( clnpanel, awt.BorderLayout.CENTER ) jta = swing.JTextArea() self.CutCopyPaste( jta ) tp = swing.JPanel( awt.GridLayout( 1, 1 )) self.nstext = jta sp = swing.JScrollPane( jta ) border = sp.getBorder() tborder = sborder.TitledBorder( border ) tborder.setTitle( "Base Text" ) sp.setBorder( tborder ) tp.add( sp ) clnpanel.add( tp ) bpanel = swing.JPanel() spl = swing.SpringLayout() bpanel.setLayout( spl ) executebox = swing.Box.createHorizontalBox() border = executebox.getBorder() tborder = sborder.TitledBorder( border ) tborder.setTitle( "Searching" ) executebox.setBorder( tborder ) bpanel.add( executebox ) spl.putConstraint( spl.NORTH, executebox, 5, spl.NORTH, bpanel ) clnsearch = swing.JButton( "Clone Search" ) clnsearch.actionPerformed = self.nodeSearch executebox.add( clnsearch ) #spl.putConstraint( spl.NORTH, clnsearch, 5, spl.NORTH, bpanel ) cpysearch = swing.JButton( "Copy Search" ) cpysearch.actionPerformed = lambda event: self.nodeSearch( event, type='copy' ) #bpanel.add( cpysearch ) #spl.putConstraint( spl.NORTH, cpysearch, 5, spl.SOUTH, clnsearch ) executebox.add( cpysearch ) self.all_searches = rb1 = swing.JCheckBox( "Match Searches" ) mtext = """Selecting causes the search system to only recognize a node if all searches match""" rb1.setToolTipText( mtext ) bpanel.add( rb1 ) spl.putConstraint( spl.NORTH, rb1, 5, spl.NORTH, bpanel ) spl.putConstraint( spl.WEST, rb1, 5, spl.EAST, executebox ) self.all_filters = rb2 = swing.JCheckBox( "Match Filters" ) mtext = """Selecting causes the filter system to only filter out a node if all searches match""" rb2.setToolTipText( mtext ) bpanel.add( rb2 ) spl.putConstraint( spl.NORTH, rb2, 5, spl.SOUTH, rb1 ) spl.putConstraint( spl.WEST, rb2, 5, spl.EAST, executebox ) spl2 = swing.SpringLayout() sandf = swing.JPanel( spl2 ) sandf.setPreferredSize( awt.Dimension( 275, 85 ) ) border = sandf.getBorder() tborder = sborder.TitledBorder( border ) tborder.setTitle( "Derive Searches and Filters" ) sandf.setBorder( tborder ) bpanel.add( sandf ) spl.putConstraint( spl.NORTH, sandf, 5, spl.SOUTH, executebox ) b1 = swing.JButton( "+ as Search" ) b1.setActionCommand( "search" ) b1.actionPerformed = self.addAsSearchOrExclude b2 = swing.JButton( "+ as Filter" ) b2.setActionCommand( "filter" ) b2.actionPerformed = self.addAsSearchOrExclude sandf.add( b1 ); sandf.add( b2 ) spl2.putConstraint( spl2.NORTH, b1, 5, spl2.NORTH, executebox ) spl2.putConstraint( spl2.NORTH, b2, 5, spl2.SOUTH, b1 ) b3 = swing.JButton( "+ as Regex-Search" ) b3.setActionCommand( "regex-search" ) b3.actionPerformed = self.addAsSearchOrExclude sandf.add( b3 ) spl2.putConstraint( spl2.NORTH, b3,5, spl2.NORTH, executebox ) spl2.putConstraint( spl2.WEST, b3,5, spl2.EAST, b1 ) #spl2.putConstraint( spl2.EAST, b3, 5, spl2.EAST, executebox ) b4 = swing.JButton( "+ as Regex-Filter" ) b4.setActionCommand( "regex-filter" ) b4.actionPerformed = self.addAsSearchOrExclude sandf.add( b4 ) spl2.putConstraint( spl2.NORTH, b4, 5, spl2.SOUTH, b1 ) spl2.putConstraint( spl2.WEST, b4, 5, spl2.EAST, b2 ) clear = swing.JButton( "Clear Text" ) def clear_txt( event, text = jta ): jta.setText( "" ) clear.actionPerformed = clear_txt bpanel.add( clear ) spl.putConstraint( spl.NORTH, clear, 5, spl.SOUTH, sandf ) clnpanel.add( bpanel ) tp.setPreferredSize( awt.Dimension( 200, 100 ) ) clnpanel.setPreferredSize( awt.Dimension( 200, 100 )) class dtm2( stable.DefaultTableModel ): def __int__( self ): stable.DefaultTableModel.__init__( self ) def isCellEditable( self, a, b ): if b == 1: return False return True self.dtm = dtm = dtm2() dtm.addColumn( "Text" ) dtm.addColumn( "Type" ) jp = swing.JPanel( awt.BorderLayout() ) self.table = jt = swing.JTable( dtm ) jt.getColumn( "Text" ).setCellEditor( self._LeoTableCellEditor() ) jt.getColumn( "Text" ).setCellRenderer( self._LeoTableCellRenderer() ) rmv = swing.JButton( "Remove" ) def rmv_row( event, jt = jt, dtm = dtm ): row = jt.getSelectedRow() if row != -1: dtm.removeRow( row ) rmv.actionPerformed = rmv_row rmva = swing.JButton( "Clear" ) def rmv_all( event, jt = jt, dtm = dtm ): rc = dtm.getRowCount() for z in xrange( rc ): dtm.removeRow( 0 ) rmva.actionPerformed = rmv_all rmvp = swing.Box.createVerticalBox() rmvp.add( rmv ) rmvp.add( rmva ) jp.add( rmvp, awt.BorderLayout.EAST ) jtsp = swing.JScrollPane( jt ) border = jtsp.getBorder() tborder = sborder.TitledBorder( border ) tborder.setTitle( "Searchers and Filters" ) jtsp.setBorder( tborder ) jp.add( jtsp ) jp.setPreferredSize( clnpanel.getPreferredSize() ) oclnpanel.add( jp, awt.BorderLayout.SOUTH )