Example #1
0
    def __init__(self):
        self.size = ABOUT_WINDOW_SIZE
        self.title = ABOUT_TITLE
        self.setLocationRelativeTo(None)
        self.contentPane.setLayout(
            swing.BoxLayout(self.contentPane, swing.BoxLayout.Y_AXIS))

        copyrightInfoArea = swing.JTextPane()
        copyrightInfoArea.setEditable(0)

        #Load copyright information from the JES copyright file
        copyrightFile = open(COPYRIGHT_FILE, 'r')
        copyrightInfoArea.text = copyrightFile.read()
        copyrightInfoArea.setCaretPosition(0)
        copyrightFile.close()

        okButton = swing.JButton(OK_BUTTON_CAPTION, actionListener=self)

        topPane = swing.JScrollPane(copyrightInfoArea)
        topPane.setPreferredSize(
            awt.Dimension(lang.Short.MAX_VALUE, lang.Short.MAX_VALUE))
        bottomPanel = swing.JPanel()
        bottomPanel.add(okButton)
        self.contentPane.add(topPane)
        self.contentPane.add(bottomPanel)
    def addSectionReferences(self, parent, editor, sec_references):

        pstring = parent.bodyString()
        rejects = []
        for z in sec_references:
            hs = z.headString().strip()
            spot = pstring.find(hs)
            if spot != -1:
                jp = swing.JPanel(java.awt.BorderLayout())
                jp.setOpaque(0)
                jb = swing.JCheckBox()
                jb.setToolTipText("hide/show")
                jb.setOpaque(0)
                jb.setSelected(1)
                jp.add(jb, java.awt.BorderLayout.NORTH)
                jtp = swing.JTextPane()
                jp.add(jtp)
                jb.actionPerformed = lambda event, jtp=jtp, jp=jp: self.add_remove(
                    jtp, jp)
                jtp.addKeyListener(self.swingmacs.kcb)
                doc = jtp.getDocument()
                jtp.setText(z.bodyString())
                doc.addDocumentListener(
                    self.NodeSyncher(z.copy(), jtp, self.swingmacs, self))
                self.addBorder(jp, z.headString())
                #jtp.setText( z.bodyString() )
                self.scanNode(z, jtp)
                sas = text.SimpleAttributeSet()
                text.StyleConstants.setComponent(sas, jp)
                doc = editor.getDocument()
                doc.setCharacterAttributes(spot, len(hs), sas, 1)
                #self.scanNode( z, jtp )
            else:
                rejects.append(z)
        return rejects
    def __init__(self, c, parent=None):

        self.c = c
        self.parent = parent
        p = c.currentPosition()
        self.p = p
        self.ignore_insert = 0
        self.pattern = pattern = java.util.regex.Pattern.compile("<" + "<" +
                                                                 "[^<>]*" +
                                                                 ">" + ">")

        self.jtp = jtp = swing.JTextPane()
        #self.jtp.addFocusListener( self )
        jtf = swing.JTextField()
        mlabel = swing.JLabel()
        jp = swing.JPanel(java.awt.BorderLayout())
        jp.add(mlabel, java.awt.BorderLayout.WEST)
        jp.add(jtf, java.awt.BorderLayout.CENTER)

        self.swingmacs = SwingMacs.SwingMacs(jtp, jtf, mlabel, p.c)
        self.swingmacs.kcb.addTabForColon(1)
        self._nodesyncher = self.NodeSyncher(p.copy(), jtp, self.swingmacs,
                                             self)
        doc = jtp.getDocument()
        doc.addDocumentListener(self._nodesyncher)
        bt = p.bodyString()
        if bt == "":
            bt = " "
            p.v.t._bodyString.insert(0, bt)
        self._nodesyncher.ignore = 1
        self.ignore_insert = 1
        jtp.setText(bt)
        self._nodesyncher.ignore = 0
        #s = time.time()
        self.scanNode(p, jtp)
        self.ignore_insert = 0
        #s2 = time.time()
        #print "Time was %s" %( s2 - s )
        jtp.setCaretPosition(0)
        jsp = swing.JScrollPane(jtp)
        if parent:
            parent.add(jsp)
            parent.add(jp, java.awt.BorderLayout.SOUTH)
        else:
            jf = swing.JFrame()
            cp = jf.getContentPane()
            cp.setLayout(java.awt.BorderLayout())
            cp.add(jsp)
            #jtf = swing.JTextField()
            cp.add(jp, java.awt.BorderLayout.SOUTH)
            jf.pack()
            jf.visible = 1

        wm1 = WeakMethod(self, "sync")
        leoPlugins.registerHandler("select1", wm1)
Example #4
0
    def __init__(self,
                 scrapbook,
                 locals={},
                 fullColoringLimit=sys.maxint,
                 *args,
                 **kwargs):
        swing.JScrollPane.__init__(self, *args, **kwargs)
        self.fullColoringLimit = fullColoringLimit
        self.text_pane = swing.JTextPane(keyPressed=self.OnKeyPressed)
        self.model = self.text_pane.getStyledDocument()
        self.psc = PySyntaxColorizer(self.model)
        self.scrapbook = scrapbook
        self.doc_event_pending = None
        self.set_styles()
        self.model.addDocumentListener(self)

        self.setViewportView(self.text_pane)
Example #5
0
    def __init__(self, *args, **kwargs):
        swing.JScrollPane.__init__(self, *args, **kwargs)
        self.text_pane = swing.JTextPane()

        ds = swing.text.StyleContext.getDefaultStyleContext().getStyle(
            swing.text.StyleContext.DEFAULT_STYLE)

        self.text_pane.addStyle("stdout", ds)
        self.text_pane.addStyle("stderr", ds)

        model = self.text_pane.getStyledDocument()
        stdout_style = model.getStyle("stdout")
        stderr_style = model.getStyle("stderr")

        swing.text.StyleConstants.setForeground(stdout_style,
                                                java.awt.Color.blue)
        swing.text.StyleConstants.setForeground(stderr_style,
                                                java.awt.Color.red)

        self.setViewportView(self.text_pane)
Example #6
0
    def __init__(self):
        self.tab = swing.JPanel(BorderLayout())

        box = swing.Box.createHorizontalBox()
        box.add(swing.JLabel("Regular Expression"))
        self.re_box = swing.JTextField(100, actionPerformed=self._update_rex)
        box.add(self.re_box)
        box.add(swing.JButton('Update', actionPerformed=self._update_rex))
        box.add(swing.JButton('?', actionPerformed=self._help))

        self.tab.add(box, BorderLayout.NORTH)

        box = swing.Box.createHorizontalBox()
        self.results = swing.JTextPane()  # JEditorPane()
        self.results.setContentType("text/html")
        self.results.setEditable(False)
        self._render("<em>Loading...</em>")

        scroller = swing.JScrollPane(self.results)
        box.add(scroller)
        self.tab.add(box, BorderLayout.CENTER)
    def __init__(self):
        self.size = ABOUT_WINDOW_SIZE
        self.title = ABOUT_TITLE
        self.setLocationRelativeTo(None)
        self.contentPane.setLayout(
            swing.BoxLayout(self.contentPane, swing.BoxLayout.Y_AXIS))

        introductionInfoArea = swing.JTextPane()
        introductionInfoArea.setEditable(0)

        #Load information from the JES introduction file
        introductionFile = open(INTRODUCTION_FILE, 'r')
        introductionInfoArea.text = introductionFile.read()
        introductionFile.close()

        okButton = swing.JButton(OK_BUTTON_CAPTION, actionListener=self)

        topPane = swing.JScrollPane(introductionInfoArea)
        topPane.setPreferredSize(
            awt.Dimension(lang.Short.MAX_VALUE, lang.Short.MAX_VALUE))
        bottomPanel = swing.JPanel()
        bottomPanel.add(okButton)
        self.contentPane.add(topPane)
        self.contentPane.add(bottomPanel)
Example #8
0
    def __init__(self, title, host, port, service):
        # create window
        win = swing.JFrame(title, size=(800, 480))
        win.setDefaultCloseOperation(swing.JFrame.EXIT_ON_CLOSE)
        win.contentPane.layout = awt.BorderLayout(10, 10)

        # add scrollable textfield
        status = swing.JTextPane(preferredSize=(780, 400))
        status.setAutoscrolls(True)
        status.setEditable(False)
        status.setBorder(swing.BorderFactory.createEmptyBorder(20, 20, 20, 20))
        paneScrollPane = swing.JScrollPane(status)
        paneScrollPane.setVerticalScrollBarPolicy(
            swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED)
        win.contentPane.add(paneScrollPane, awt.BorderLayout.CENTER)

        # add server button
        self.started = "Start Server"
        self.stopped = "Stop Server"
        self.serverButton = swing.JButton(self.started,
                                          preferredSize=(150, 20),
                                          actionPerformed=self.controlServer)

        # add client button
        self.clientButton = swing.JButton("Invoke Method",
                                          preferredSize=(150, 20),
                                          actionPerformed=self.runClient)
        self.clientButton.enabled = False

        # position buttons
        buttonPane = swing.JPanel()
        buttonPane.setLayout(
            swing.BoxLayout(buttonPane, swing.BoxLayout.X_AXIS))
        buttonPane.setBorder(
            swing.BorderFactory.createEmptyBorder(0, 10, 10, 10))
        buttonPane.add(swing.Box.createHorizontalGlue())
        buttonPane.add(self.serverButton)
        buttonPane.add(swing.Box.createRigidArea(awt.Dimension(10, 0)))
        buttonPane.add(self.clientButton)
        win.contentPane.add(buttonPane, awt.BorderLayout.SOUTH)

        # add handler that writes log messages to the status textfield
        txtHandler = TextFieldLogger(status)
        logger = logging.getLogger("")
        logger.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(asctime)s - %(message)s')
        txtHandler.setFormatter(formatter)
        logger.addHandler(txtHandler)

        # setup server
        self.service_name = service
        self.url = "http://%s:%d" % (host, port)
        self.server = ThreadedAmfServer(host, port, self.service_name)

        # center and display window on the screen
        win.pack()
        us = win.getSize()
        them = awt.Toolkit.getDefaultToolkit().getScreenSize()
        newX = (them.width - us.width) / 2
        newY = (them.height - us.height) / 2
        win.setLocation(newX, newY)
        win.show()
    def registerExtenderCallbacks(self, callbacks):
        print "Name: \t\t" + BurpExtender.EXT_NAME
        print "Description: \t" + BurpExtender.EXT_DESC
        print "Authors: \t" + BurpExtender.EXT_AUTHOR
        # Required for easier debugging:
        # https://github.com/securityMB/burp-exceptions
        sys.stdout = callbacks.getStdout()
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.setExtensionName(BurpExtender.EXT_NAME)

        #Create Burp Collaborator Instance
        self.burpCollab = self._callbacks.createBurpCollaboratorClientContext()
        self.collaboratorDomain = self.burpCollab.generatePayload(True)

        #Create panels used for layout; we must stack and layer to get the desired GUI
        self.tab = swing.Box(swing.BoxLayout.Y_AXIS)
        self.tabbedPane = swing.JTabbedPane()
        self.tab.add(self.tabbedPane)

        # First tab
        self.collabfiltratorTab = swing.Box(swing.BoxLayout.Y_AXIS)
        self.tabbedPane.addTab("Collabfiltrator", self.collabfiltratorTab)

        # Second tab
        #self.configurationTab = swing.Box(swing.BoxLayout.Y_AXIS)
        #self.tabbedPane.addTab("Configuration", self.configurationTab)

        # Create objects for the first tab's GUI
        # These rows will add top to bottom on the Y Axis
        self.t1r1 = swing.JPanel(FlowLayout())
        self.t1r2 = swing.JPanel(FlowLayout())
        self.t1r3 = swing.JPanel(FlowLayout())
        self.t1r4 = swing.JPanel(FlowLayout())
        self.t1r5 = swing.JPanel(FlowLayout())
        self.t1r6 = swing.JPanel(FlowLayout())
        self.t1r7 = swing.JPanel(FlowLayout())

        # Now add content to the first tab's GUI objects
        self.osComboBox = swing.JComboBox(
            ["Windows", "Linux_ping", "Linux_nslookup", "Linux_dig"])
        #self.commandTxt = swing.JTextField("ls -lah", 35)
        self.commandTxt = swing.JTextField("dir C:\inetpub\wwwroot", 25)
        self.payloadTxt = swing.JTextArea(10, 50)
        self.payloadTxt.setBackground(Color.lightGray)
        self.payloadTxt.setEditable(
            False)  # So you can't messup the generated payload
        self.payloadTxt.setLineWrap(True)  #Wordwrap the output of payload box
        self.outputTxt = swing.JTextArea(10, 50)
        self.outputScroll = swing.JScrollPane(
            self.outputTxt)  # Make the output scrollable

        self.progressBar = swing.JProgressBar(5, 15)
        self.progressBar.setVisible(False)  # Progressbar is hiding

        self.outputTxt.setBackground(Color.lightGray)
        self.outputTxt.setEditable(False)
        self.outputTxt.setLineWrap(True)
        self.burpCollaboratorDomainTxt = swing.JTextPane(
        )  # burp collaboratorTextPane
        self.burpCollaboratorDomainTxt.setText(
            " ")  #burp collaborator domain goes here
        self.burpCollaboratorDomainTxt.setEditable(False)
        self.burpCollaboratorDomainTxt.setBackground(None)
        self.burpCollaboratorDomainTxt.setBorder(None)
        self.t1r1.add(
            swing.JLabel(
                "<html><center><h2>Collabfiltrator</h2>Exfiltrate blind remote code execution output over DNS via Burp Collaborator.</center></html>"
            ))
        self.t1r2.add(swing.JLabel("Platform"))
        self.t1r2.add(self.osComboBox)
        self.t1r2.add(swing.JLabel("Command"))
        self.t1r2.add(self.commandTxt)
        self.t1r2.add(
            swing.JButton("Execute", actionPerformed=self.executePayload))
        self.t1r3.add(swing.JLabel("Payload"))
        self.t1r3.add(self.payloadTxt)
        self.t1r6.add(
            self.burpCollaboratorDomainTxt)  #burp Collab Domain will go here
        self.t1r4.add(
            swing.JButton("Copy Payload to Clipboard",
                          actionPerformed=self.copyToClipboard))
        self.t1r4.add(
            swing.JButton("Start poll results",
                          actionPerformed=self.startPollResults))
        self.t1r4.add(
            swing.JButton("Stop listener",
                          actionPerformed=self.stopPollResults))
        self.t1r4.add(swing.JButton("Show logs",
                                    actionPerformed=self.showLogs))
        self.t1r5.add(swing.JLabel("Output"))
        self.t1r5.add(self.outputScroll)  #add output scroll bar to page
        self.t1r7.add(self.progressBar)

        # Add the GUI objects into the first tab
        self.collabfiltratorTab.add(self.t1r1)
        self.collabfiltratorTab.add(self.t1r2)
        self.collabfiltratorTab.add(self.t1r3)
        self.collabfiltratorTab.add(self.t1r6)
        self.collabfiltratorTab.add(self.t1r4)
        self.collabfiltratorTab.add(self.t1r7)
        self.collabfiltratorTab.add(self.t1r5)

        # Create objects for the second tab's GUI
        self.dummylabel = swing.JLabel(
            "Burp Collaborator Config options will go here.")

        # Add the GUI objects into the second tab
        ########self.configurationTab.add(self.dummylabel)

        # Now that the GUI objects are added, we can resize them to fit snug in the UI
        self.t1r1.setMaximumSize(Dimension(800, 100))
        self.t1r2.setMaximumSize(Dimension(800, 50))
        self.t1r3.setMaximumSize(Dimension(800, 200))
        self.t1r4.setMaximumSize(Dimension(800, 200))
        self.t1r6.setMaximumSize(Dimension(800, 50))
        self.t1r7.setMaximumSize(Dimension(800, 50))

        #Register the panel in the Burp GUI
        callbacks.addSuiteTab(self)
        return
Example #10
0
import javax.swing as swing
import javax.swing.text as stext
import javax.swing.event as sevent
import java.awt.event as aevent

jf = swing.JFrame()
jtp = swing.JTextPane()
jsp = swing.JScrollPane(jtp)
jf.add(jsp)


class doc1(sevent.DocumentListener):
    def removeUpdate(self, event):

        print stext.Utilities.getRowStart(jtp, event.getOffset())

    def changeUpdate(self, event):
        #print event
        pass

    def insertUpdate(self, event):
        #print event
        pass


class kp(aevent.KeyAdapter):
    def __init__(self):
        aevent.KeyAdapter.__init__(self)

    def keyPressed(self, event):
    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)
Example #12
0
    def createWidgets(self):

        blayout = java.awt.BorderLayout()
        self.setLayout(blayout)
        #hbox = swing.JPanel( java.awt.GridLayout( 1, 2 ) )
        #tcontainer = swing.JPanel( java.awt.BorderLayout() )
        #self.slist = slist = swing.JTable()
        #slist.getSelectionModel().setSelectionMode( swing.ListSelectionModel.SINGLE_SELECTION )
        #rh = slist.getRowHeight()
        #pvs = slist.getPreferredScrollableViewportSize()
        #pvs2 = pvs.clone()
        #pvs2.height = rh * 5
        #slist.setPreferredScrollableViewportSize( pvs2 )
        #lsp = swing.JScrollPane( slist )
        #tcontainer.add( lsp, java.awt.BorderLayout.CENTER )
        #hbox.add( tcontainer )

        self.commentarea = commentarea = swing.JTextPane()
        #self.__configureEditor()
        CutCopyPaste(commentarea)
        self.csp = csp = swing.JScrollPane(commentarea)
        self.backdrop = swing.JPanel()
        overlay = swing.OverlayLayout(self.backdrop)
        self.backdrop.setLayout(overlay)
        self.backdrop.add(csp)
        mb_ca = swing.JPanel(java.awt.BorderLayout())
        mb_ca.add(self.backdrop, java.awt.BorderLayout.CENTER)
        mb = swing.JMenuBar()
        #jm = swing.JMenu( "Options" )
        #mb.add( jm )
        #jmi = swing.JCheckBoxMenuItem( "Show Comments In Outline" )
        #jm.add( jmi )
        #jmi.setState( 1 )
        #jmi.actionPerformed = self.__showCommentsInOutline
        mb_ca.add(mb, java.awt.BorderLayout.NORTH)
        #hbox.add( mb_ca )
        #self.add( hbox, java.awt.BorderLayout.CENTER )
        self.add(mb_ca)
        self.__configureEditor()
        #jm.add( tcontainer )
        #jm2 = swing.JMenu( "Commentaries" )

        #jm2.add( tcontainer )
        #mb.add( jm2 )

        aballoon = swing.ImageIcon(
            g.os_path_join(g.app.loadDir, "..", "Icons", "AddTBalloon.gif"))
        sballoon = swing.ImageIcon(
            g.os_path_join(g.app.loadDir, "..", "Icons",
                           "SubtractTBalloon.gif"))
        #bpanel = swing.JPanel()
        add = swing.JMenuItem("Add Comment", aballoon)
        add.setToolTipText("Add Comment")
        add.actionPerformed = self.addComment
        remove = swing.JMenuItem("Remove Comment", sballoon)
        remove.setToolTipText("Remove Comment")
        remove.actionPerformed = self.removeComment
        #bpanel.add( add )
        #bpanel.add( remove )
        #tcontainer.add( bpanel, java.awt.BorderLayout.SOUTH )
        jm2 = swing.JMenu("Commentaries")
        jmi = swing.JCheckBoxMenuItem("Show Comments In Outline")
        jm2.add(jmi)
        jmi.setState(1)
        jmi.actionPerformed = self.__showCommentsInOutline
        jm2.add(add)
        jm2.add(remove)
        #jm2.add( tcontainer )
        mb.add(jm2)

        self.ccbmodel = self.CommentCBModel(self)
        self.jcb = jcb = swing.JComboBox(self.ccbmodel)
        #print jcb.getEditor().getEditorComponent().__class__.__bases__
        self.jcb.getEditor().getEditorComponent().getDocument(
        ).addDocumentListener(self.ccbmodel)
        jcb.addItemListener(self)
        jcb.setEditable(1)
        mb.add(jcb)
    def registerExtenderCallbacks(self, callbacks):
        print("Name: \t\t" + BurpExtender.EXT_NAME)
        print("Description: \t" + BurpExtender.EXT_DESC)
        print("Authors: \t" + BurpExtender.EXT_AUTHOR)
        print("Version: \t" + BurpExtender.EXT_VERSION + "\n")
        # Required for easier debugging:
        # https://github.com/securityMB/burp-exceptions
        sys.stdout = callbacks.getStdout()
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.setExtensionName(BurpExtender.EXT_NAME)

        self.killDanglingThreadsOnUnload = callbacks.registerExtensionStateListener(
            self.killDanglingThreads)

        #Create Burp Collaborator Instance
        self.burpCollab = self._callbacks.createBurpCollaboratorClientContext()
        self.collaboratorDomain = self.burpCollab.generatePayload(True)

        #Create panels used for layout; we must stack and layer to get the desired GUI
        self.tab = swing.Box(swing.BoxLayout.Y_AXIS)
        self.tabbedPane = swing.JTabbedPane()
        self.tab.add(self.tabbedPane)

        # First tab
        self.collabfiltratorTab = swing.Box(swing.BoxLayout.Y_AXIS)
        self.tabbedPane.addTab("Collabfiltrator", self.collabfiltratorTab)

        # Second tab
        #self.configurationTab = swing.Box(swing.BoxLayout.Y_AXIS)
        #self.tabbedPane.addTab("Configuration", self.configurationTab)

        # Create objects for the first tab's GUI
        # These rows will add top to bottom on the Y Axis
        self.t1r1 = swing.JPanel(FlowLayout())  # title and description frame
        self.t1r2 = swing.JPanel(FlowLayout())  #platform and command box frame
        self.t1r3 = swing.JPanel(FlowLayout())  #payload box frame
        self.t1r5 = swing.JPanel(
            FlowLayout())  #copy payload to clipboard frame
        self.t1r7 = swing.JPanel(FlowLayout())  #output box frame
        self.t1r4 = swing.JPanel(FlowLayout())  # collaborator domainname frame
        self.t1r6 = swing.JPanel(
            FlowLayout()
        )  # hidden stop listener frame that only appears upon payload generation
        self.t1r8 = swing.JPanel(FlowLayout())  #clearOutput box frame

        # Now add content to the first tab's GUI objects
        self.osComboBox = swing.JComboBox(
            ["Windows PowerShell", "Linux (sh + ping)"])
        self.commandTxt = swing.JTextField("hostname", 35)
        #self.commandTxt = swing.JTextField("dir c:\inetpub\wwwroot", 35)
        self.payloadTxt = swing.JTextArea(10, 55)
        self.payloadTxt.setEditable(
            False)  # So you can't messup the generated payload
        self.payloadTxt.setLineWrap(True)  #Wordwrap the output of payload box
        self.outputTxt = swing.JTextArea(10, 55)
        self.outputScroll = swing.JScrollPane(
            self.outputTxt)  # Make the output scrollable
        self.payloadScroll = swing.JScrollPane(
            self.payloadTxt)  # Make the payloadText scrollable

        self.progressBar = swing.JProgressBar(5, 15)
        self.progressBar.setVisible(False)  # Progressbar is hiding

        self.outputTxt.setEditable(False)
        self.outputTxt.setLineWrap(True)
        self.burpCollaboratorDomainTxt = swing.JTextPane(
        )  # burp collaboratorTextPane
        self.burpCollaboratorDomainTxt.setText(
            " ")  #burp collaborator domain goes here
        self.burpCollaboratorDomainTxt.setEditable(False)
        self.burpCollaboratorDomainTxt.setBackground(None)
        self.burpCollaboratorDomainTxt.setBorder(None)
        titleLabel = swing.JLabel(
            "<html><center><h2>Collabfiltrator</h2>Exfiltrate blind remote code execution output over DNS via Burp Collaborator.</center></html>"
        )
        titleLabel.putClientProperty("html.disable", None)
        self.t1r1.add(titleLabel)
        self.t1r2.add(swing.JLabel("Platform"))
        self.t1r2.add(self.osComboBox)
        self.t1r2.add(swing.JLabel("Command"))
        self.t1r2.add(self.commandTxt)
        self.t1r2.add(
            swing.JButton("Execute", actionPerformed=self.executePayload))
        self.t1r3.add(swing.JLabel("Payload"))
        self.t1r3.add(self.payloadScroll)
        self.t1r4.add(
            self.burpCollaboratorDomainTxt)  #burp Collab Domain will go here
        self.t1r5.add(
            swing.JButton("Copy Payload to Clipboard",
                          actionPerformed=self.copyToClipboard))
        self.t1r6.add(self.progressBar)
        self.stopListenerButton = swing.JButton(
            "Stop Listener", actionPerformed=self.stopListener)
        self.stopListenerButton.setVisible(False)  # hide stopListenerButton
        self.t1r6.add(self.stopListenerButton)
        self.t1r7.add(swing.JLabel("Output"))
        self.t1r7.add(self.outputScroll)  #add output scroll bar to page
        self.t1r8.add(
            swing.JButton("Clear Output", actionPerformed=self.clearOutput))

        # Add the GUI objects into the first tab
        self.collabfiltratorTab.add(self.t1r1)
        self.collabfiltratorTab.add(self.t1r2)
        self.collabfiltratorTab.add(self.t1r3)
        self.collabfiltratorTab.add(self.t1r4)
        self.collabfiltratorTab.add(self.t1r5)
        self.collabfiltratorTab.add(self.t1r6)
        self.collabfiltratorTab.add(self.t1r7)
        self.collabfiltratorTab.add(self.t1r8)

        # Create objects for the second tab's GUI
        self.dummylabel = swing.JLabel(
            "Burp Collaborator Config options will go here.")

        # Add the GUI objects into the second tab
        ########self.configurationTab.add(self.dummylabel)

        #Register the panel in the Burp GUI
        callbacks.addSuiteTab(self)
        return
Example #14
0
    def registerExtenderCallbacks(self, callbacks):
        # for error handling
        sys.stdout = callbacks.getStdout()
        sys.stderr = callbacks.getStderr()

        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()

        jsonFilter = FileNameExtensionFilter("JSON files", ['json'])

        basePath = self._callbacks.loadExtensionSetting(SETTING_LAST_PATH)
        # print("got last path {}".format(basePath))

        self._collectionChooser = swing.JFileChooser(basePath)
        self._collectionChooser.setFileFilter(jsonFilter)

        self._environmentChooser = swing.JFileChooser(basePath)
        self._environmentChooser.setFileFilter(jsonFilter)

        # ### Top "buttons" pane
        controlPane = swing.JPanel()
        controlPane.setBorder(EmptyBorder(10, 20, 0, 10))
        controlPane.setLayout(
            swing.BoxLayout(controlPane, swing.BoxLayout.PAGE_AXIS))
        controlPane.setAlignmentX(swing.Box.LEFT_ALIGNMENT)

        box1 = swing.Box.createHorizontalBox()
        box1.setAlignmentX(swing.Box.LEFT_ALIGNMENT)
        box1.add(
            swing.JButton('Load Collection',
                          actionPerformed=self.loadCollection))
        self._collectionLabel = swing.JLabel("Choose a collection file")
        box1.add(self._collectionLabel)
        controlPane.add(box1)

        box2 = swing.Box.createHorizontalBox()
        box2.setAlignmentX(swing.Box.LEFT_ALIGNMENT)
        box2.add(
            swing.JButton('Load Environment',
                          actionPerformed=self.loadEnvironment))
        self._environmentLabel = swing.JLabel("Choose an environment file")
        box2.add(self._environmentLabel)
        controlPane.add(box2)

        # ### end Top "controls" pane

        # ### instructions
        instructionsPane = swing.JPanel(BorderLayout())
        instructions = swing.JLabel()
        instructions.setText("""<html><body>
<h3>Usage:</h3>
<ol>
<li>Select the Collection Postman JSON file. This should extract all discovered environment variables.</li>
<li>(Optional) Select an Environment Postman JSON file. This can be the same as the Collection file.</li>
<li>Set environment variables below.</li>
<li>Choose 'Create Requests' to create Repeater tabs.</li>
</ol>
</body></html>""")
        instructionsPane.add(instructions, BorderLayout.NORTH)
        # ### end instructions

        # ### environment variables
        envTablePane = swing.JPanel(BorderLayout())
        envLabel = swing.JLabel("Environment Variables")
        envLabel.setBorder(EmptyBorder(5, 5, 5, 5))
        envLabel.setFont(
            Font(envLabel.getFont().getName(), Font.BOLD,
                 envLabel.getFont().getSize() + 2))
        envTablePane.add(envLabel, BorderLayout.NORTH)

        self._envTable = swing.JTable(DefaultTableModel([], self._envCols))
        self._envTable.setAutoCreateRowSorter(True)
        self._envTable.getTableHeader().setReorderingAllowed(False)
        tableMenu = swing.JPopupMenu()
        tableMenu.add(swing.JMenuItem("Add New", actionPerformed=self._addEnv))
        tableMenu.add(
            swing.JMenuItem("Clear All", actionPerformed=self._clearEnv))
        deleteMenuItem = swing.JMenuItem("Delete Row",
                                         actionPerformed=self._deleteEnv)
        deleteMenuItem.setEnabled(False)
        tableMenu.add(deleteMenuItem)
        self._envTable.setComponentPopupMenu(tableMenu)
        listener = self._envTableListener(self)
        self._envTable.addMouseListener(listener)
        renderer = self._envTableRenderer()
        self._envTable.setDefaultRenderer(Class.forName('java.lang.Object'),
                                          renderer)

        envTablePaneMenu = swing.JPopupMenu()
        envTablePaneMenu.add(
            swing.JMenuItem("Add New", actionPerformed=self._addEnv))
        envTablePaneMenu.add(
            swing.JMenuItem("Clear All", actionPerformed=self._clearEnv))
        scrl = swing.JScrollPane(self._envTable)
        scrl.setComponentPopupMenu(envTablePaneMenu)
        envTablePane.add(scrl)
        # ### end environment variables

        # ### requests
        reqTablePane = swing.JPanel(BorderLayout())
        reqLabel = swing.JLabel("Requests")
        reqLabel.setBorder(EmptyBorder(5, 5, 5, 5))
        reqLabel.setFont(envLabel.getFont())
        reqTablePane.add(reqLabel, BorderLayout.NORTH)

        self._reqTable = self._reqTableClass(
            DefaultTableModel([], self._reqCols))
        self._reqTable.setAutoCreateRowSorter(True)
        self._reqTable.getTableHeader().setReorderingAllowed(False)
        self._reqTable.setAutoResizeMode(swing.JTable.AUTO_RESIZE_LAST_COLUMN)
        self._reqTable.getTableHeader().setReorderingAllowed(False)
        self._reqTable.getColumnModel().getColumn(0).setMaxWidth(150)
        self._reqTable.getColumnModel().getColumn(0).setMinWidth(150)
        self._reqTable.getColumnModel().getColumn(2).setMaxWidth(150)
        self._reqTable.getColumnModel().getColumn(2).setMinWidth(150)
        scrl2 = swing.JScrollPane(self._reqTable)
        reqTablePane.add(scrl2)
        # ### end requests

        # ### Logs
        logPane = swing.JPanel(BorderLayout())

        buttonBox = swing.JPanel(FlowLayout(FlowLayout.LEFT, 20, 0))
        requestButtonBox = swing.Box.createHorizontalBox()
        self._selectButtons = [
            swing.JButton('Select All', actionPerformed=self.selectAll),
            swing.JButton('Select None', actionPerformed=self.selectNone),
            swing.JButton('Invert Selection',
                          actionPerformed=self.selectInvert)
        ]
        for btn in self._selectButtons:
            requestButtonBox.add(btn)
            btn.setEnabled(False)

        buttonBox.add(requestButtonBox)

        self._createRequestsButton = swing.JButton(
            'Create Requests', actionPerformed=self.createRequests)
        self._createRequestsButton.setEnabled(False)
        requestButtonBox.add(self._createRequestsButton)

        buttonBox.add(self._createRequestsButton)

        self._logButton = swing.JButton('Clear Log',
                                        actionPerformed=self.clearLog)
        self._logButton.setEnabled(False)
        buttonBox.add(self._logButton)

        logPane.add(buttonBox, BorderLayout.NORTH)

        self._log = swing.JTextPane()
        self._log.setEditable(False)
        self._log.setFont(Font("monospaced", Font.PLAIN, 12))
        logPane.add(swing.JScrollPane(self._log))
        # ### end Logs

        # ### add panels
        self._topControlsPane = swing.JSplitPane(
            swing.JSplitPane.HORIZONTAL_SPLIT, controlPane, instructionsPane)
        p1 = swing.JSplitPane(swing.JSplitPane.VERTICAL_SPLIT,
                              self._topControlsPane, envTablePane)
        p2 = swing.JSplitPane(swing.JSplitPane.VERTICAL_SPLIT, p1,
                              reqTablePane)
        p2.setResizeWeight(0.5)
        self._panel = swing.JSplitPane(swing.JSplitPane.VERTICAL_SPLIT, p2,
                                       logPane)
        self._panel.setResizeWeight(0.6)
        # ### end add panels

        callbacks.setExtensionName(NAME)
        callbacks.addSuiteTab(self)