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)
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)
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)
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)
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
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)
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
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)