Ejemplo n.º 1
0
    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
Ejemplo n.º 3
0
    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 
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
  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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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)
Ejemplo n.º 10
0
 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 )
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
    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()
Ejemplo n.º 13
0
 def widgetFactory(self, *args, **kwds):
     return swing.JCheckBox()
Ejemplo n.º 14
0
    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)))
Ejemplo n.º 17
0
	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))
				))
Ejemplo n.º 18
0
    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()
Ejemplo n.º 19
0
    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))
        )
Ejemplo n.º 20
0
    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)
Ejemplo n.º 21
0
 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 )