def showMismatchTable(self): jf = swing.JFrame() jf.setDefaultCloseOperation(jf.DISPOSE_ON_CLOSE) cp = jf.getContentPane() cp.setLayout(awt.BorderLayout()) jt = swing.JTable(self._dtm) jt.setAutoResizeMode(jt.AUTO_RESIZE_ALL_COLUMNS) drend = self._dftcr() jt.setDefaultRenderer(java.lang.Object, drend) count = self._dtm.getRowCount() tmp_label = swing.JLabel(java.lang.String.valueOf(count)) psize = tmp_label.getPreferredSize() column = jt.getColumn("") column.setPreferredWidth(psize.width + 10) column.setMaxWidth(psize.width + 10) sp = swing.JScrollPane(jt) sp.addComponentListener(drend) cp.add(sp, awt.BorderLayout.CENTER) jb = swing.JButton("Close") jb.actionPerformed = lambda event: jf.dispose() cp.add(jb, awt.BorderLayout.SOUTH) jf.pack() g.app.gui.center_dialog(jf) jf.visible = 1
def buildContentPane(self, localVars, globalVars): # TODO # replace varVal.__class__.__name__ with something more meaningful # and scan for things without "__class__" or "__name__" fields # some swing components don't have them localVarsDict = self.__buildVarDict__(localVars) globalVarsDict = self.__buildVarDict__(globalVars) localVarsDict = self.filterVars(localVarsDict) globalVarsDict = self.filterVars(globalVarsDict) localVarsDict = self.sortVars(localVarsDict) globalVarsDict = self.sortVars(globalVarsDict) localVarsDict = self.improveTypeNames(localVarsDict) globalVarsDict = self.improveTypeNames(globalVarsDict) #Create the TableModel and JTable components localTableModel = swing.table.DefaultTableModel( localVarsDict, [ VAR_L_NAME_COL_CAPTION, VAR_TYPE_COL_CAPTION, VAR_VALUE_COL_CAPTION ]) globalTableModel = swing.table.DefaultTableModel( globalVarsDict, [ VAR_G_NAME_COL_CAPTION, VAR_TYPE_COL_CAPTION, VAR_VALUE_COL_CAPTION ]) localVarTable = swing.JTable(localTableModel) localVarTable.getColumnModel().getColumn(0).setPreferredWidth(1) globalVarTable = swing.JTable(globalTableModel) globalVarTable.getColumnModel().getColumn(0).setPreferredWidth(1) topPane = swing.JScrollPane(localVarTable) bottomPane = swing.JScrollPane(globalVarTable) return (topPane, bottomPane)
def __init__(self, debugger): swing.JFrame.__init__(self, title='JESDB Variable Watcher') # variables correspond to columns on the right self.history = ExecHistory(debugger) self.controlPanel = DBControlPanel(debugger) self.table = swing.JTable(self.history) scrollPane = swing.JScrollPane(self.table) self.contentPane.setLayout(awt.BorderLayout()) scrollPane.preferredSize = (200, 400) self.contentPane.add(scrollPane, awt.BorderLayout.CENTER) self.contentPane.add(self.controlPanel, awt.BorderLayout.EAST) self.pack()
def __init__(self): swing.JFrame.__init__(self) self.title='Network Application Organizer' self.windowClosing=lambda x: sys.exit() self.namePane=swing.JPanel(layout=java.awt.BorderLayout()) self.namePane.add(swing.JLabel('Name:'),'West') self.nameText=swing.JTextField(actionPerformed=self.onTrySetName) self.namePane.add(self.nameText) self.contentPane.add(self.namePane,'North') self.tab=swing.JTabbedPane() self.runningAppData=RunningAppTableModel() self.table=swing.JTable(self.runningAppData) self.table.selectionMode=swing.ListSelectionModel.SINGLE_SELECTION self.table.preferredScrollableViewportSize=300,50 self.table.mouseClicked=self.onTableClicked self.appTypeList=swing.JList(mouseClicked=self.onTypeListClicked,valueChanged=self.onTypeListSelectionChanged) createPane=swing.JPanel(layout=java.awt.BorderLayout()) createPane.add(swing.JScrollPane(self.appTypeList),'West') self.startAppButton=swing.JButton('Start',actionPerformed=self.onStartApp) createPane.add(self.startAppButton,'East') self.optionPanelLayout=java.awt.CardLayout() self.optionPanel=swing.JPanel(layout=self.optionPanelLayout) self.optionEditor=swing.JComboBox(font=swing.JTable().font) createPane.add(self.optionPanel) self.tab.addTab('Start New App',createPane) self.tab.addTab('Running Apps',swing.JScrollPane(self.table)) self.contentPane.add(self.tab) self.pack() self.show()
def __init__( self, name ): self.jf = swing.JFrame() self.jf.title = "status for %s" % name self.jta = swing.JTable() self.tmodel = swing.table.DefaultTableModel( [ "path", "status", "revision"], 0 ) self.jta.setModel( self.tmodel ) jsp = swing.JScrollPane( self.jta) self.jf.add( jsp) #self.jf.pack() #self.jf.visible = 1 jb = swing.JButton( "Close") jb.actionPerformed = lambda event: self.jf.dispose() jp = swing.JPanel() jp.add( jb ) self.jf.add( jp, java.awt.BorderLayout.SOUTH)
def create_table(self, opt, panel): self._select_table = {"row": -1, "col": -1} table_name = opt['funcopt']['tableName'] coloNames = opt['funcopt']['coloName'] ContentData.content_data[table_name] = DefaultTableModel(coloNames, 0) self._content_table = swing.JTable( ContentData.content_data[table_name]) self._content_table.setAutoCreateRowSorter(True) self._content_table.addMouseListener( AddAction(self, opt['type'], opt['funcopt'])) column_model = self._content_table.getColumnModel() for i in xrange(column_model.getColumnCount()): column = column_model.getColumn(i) if '#' == self._content_table.getColumnName(i): column.setPreferredWidth(3) else: column.setPreferredWidth(200) self._content_table.fillsViewportHeight = True dtcr = self._content_table.getTableHeader().getDefaultRenderer() dtcr.setHorizontalAlignment(swing.SwingConstants.CENTER) return swing.JScrollPane(self._content_table)
def buildTablePane(self, caption, varDict): # Create the list. varList = [[name, self.getTypeName(value), value] for name, value in varDict.items() if name not in self.varsToFilter] # Sort them all. varList.sort(key=self.orderRow) # Fix the type names. for row in varList: if row[TYPE_COL] in IMPROVED_TYPE_NAMES: row[TYPE_COL] = IMPROVED_TYPE_NAMES[row[TYPE_COL]] # Create a table model. headers = [caption, VAR_TYPE_COL_CAPTION, VAR_VALUE_COL_CAPTION] tableModel = swing.table.DefaultTableModel(varList, headers) # Create the actual table. table = swing.JTable(tableModel) table.getColumnModel().getColumn(0).setPreferredWidth(1) # Wrap it in a ScrollPane. return swing.JScrollPane(table)
def registerExtenderCallbacks(self, callbacks): # Print information about the plugin, set extension name, setup basic stuff self.printHeader() callbacks.setExtensionName("BurpHelper") self._callbacks = callbacks self._helpers = callbacks.getHelpers() callbacks.registerContextMenuFactory(self) # Create main panel with Components self._jTitleFont = Font("", Font.BOLD, 15) ##Current IP self._jLabelCurrentIPMainText = swing.JLabel() self._jLabelCurrentIPDesText = swing.JLabel() self._jLabelCurrentWanIpDes = swing.JLabel() self._jLabelCurrentLanIpDes = swing.JLabel() self._jLabelCurrentWanIp = swing.JLabel() self._jLabelCurrentLanIp = swing.JLabel() self._jCheckIPButton = swing.JButton("Check IP", actionPerformed=self.CheckIP) ##Proxy Setting self._jPAddButton = swing.JButton("Add", actionPerformed=self.PitemAdd) self._jPEditButton = swing.JButton("Edit", actionPerformed=self.PitemEdit) self._jPRemoveButton = swing.JButton("Remove", actionPerformed=self.PitemRemove) self._jLabelMainText = swing.JLabel() self._jLabelScanIPListen = swing.JLabel() self._jScanPanel = swing.JPanel() self._jScanPanel.setLayout(None) self._jTabledata = MappingTableModel(callbacks, self._jScanPanel) self._jTable = swing.JTable(self._jTabledata) self._jTablecont = swing.JScrollPane(self._jTable) self._jSeparator_first = swing.JSeparator(swing.JSeparator.HORIZONTAL) self._jSeparator_second = swing.JSeparator(swing.JSeparator.HORIZONTAL) ##Dashboard self._jLabelDashboardText = swing.JLabel() self._jLabelDashboardDesText = swing.JLabel() self._jDTabledata = DashboardTableModel(callbacks, self._jScanPanel) self._jDTable = swing.JTable(self._jDTabledata) self._jDTablecont = swing.JScrollPane(self._jDTable) # Configure GUI self._jLabelCurrentIPMainText.setText('Check Current IP ') self._jLabelCurrentIPMainText.setForeground(Color(228, 127, 0)) self._jLabelCurrentIPMainText.setFont(self._jTitleFont) self._jLabelCurrentIPDesText.setText('You can check your current IP') self._jLabelCurrentWanIpDes.setText("Wan IP : ") self._jLabelCurrentLanIpDes.setText("Lan IP : ") self._jLabelMainText.setText('Proxy Server Setting') self._jLabelMainText.setForeground(Color(228, 127, 0)) self._jLabelMainText.setFont(self._jTitleFont) self._jLabelScanIPListen.setText( 'You can set the proxy server, When the plugin is loading, Proxy Setting is initialized' ) self._jTable.getColumn("Name").setPreferredWidth(200) self._jTable.getColumn("IP").setPreferredWidth(150) self._jTable.getColumn("Port").setPreferredWidth(100) self._jTable.getColumn("Enabled").setPreferredWidth(50) self._jDTable.getColumn("URL").setPreferredWidth(180) self._jDTable.getColumn("Privilege").setPreferredWidth(130) self._jDTable.getColumn("ID").setPreferredWidth(100) self._jDTable.getColumn("Password").setPreferredWidth(100) self._jDTable.getColumn("Comment").setPreferredWidth(200) self._jScanPanel.setPreferredSize(awt.Dimension(1010, 1010)) self._jLabelDashboardText.setText('Target Site List') self._jLabelDashboardText.setForeground(Color(228, 127, 0)) self._jLabelDashboardText.setFont(self._jTitleFont) self._jLabelDashboardDesText.setText( 'You can save the account list per site.') self._jDAddButton = swing.JButton("Add", actionPerformed=self.DitemAdd) self._jDEditButton = swing.JButton("Edit", actionPerformed=self.DitemEdit) self._jDRemoveButton = swing.JButton("Remove", actionPerformed=self.DitemRemove) self._jDIDCopyButton = swing.JButton("ID Copy", actionPerformed=self.DIDCopy) self._jDPwCopyButton = swing.JButton("PW Copy", actionPerformed=self.DPwCopy) self._jDitemsDelete = swing.JButton("Clear", actionPerformed=self.DitemsDelete) self._jDURLConButton = swing.JButton("Open URL", actionPerformed=self.DOpenURL) # Configure locations self._jLabelCurrentIPMainText.setBounds(15, 10, 300, 20) self._jLabelCurrentIPDesText.setBounds(15, 32, 300, 20) self._jLabelCurrentWanIpDes.setBounds(15, 60, 60, 15) self._jLabelCurrentLanIpDes.setBounds(15, 80, 60, 15) self._jLabelCurrentWanIp.setBounds(80, 60, 100, 15) self._jLabelCurrentLanIp.setBounds(80, 80, 100, 15) self._jCheckIPButton.setBounds(190, 57, 90, 40) self._jSeparator_first.setBounds(15, 110, 900, 15) self._jLabelMainText.setBounds(15, 120, 300, 20) self._jLabelScanIPListen.setBounds(15, 142, 500, 20) self._jPAddButton.setBounds(15, 170, 100, 30) self._jPEditButton.setBounds(15, 205, 100, 30) self._jPRemoveButton.setBounds(15, 240, 100, 30) self._jTablecont.setBounds(120, 170, 600, 150) self._jSeparator_second.setBounds(15, 335, 900, 15) self._jLabelDashboardText.setBounds(15, 350, 300, 20) self._jLabelDashboardDesText.setBounds(15, 372, 300, 20) self._jDAddButton.setBounds(15, 400, 100, 30) self._jDEditButton.setBounds(15, 435, 100, 30) self._jDRemoveButton.setBounds(15, 470, 100, 30) self._jDURLConButton.setBounds(15, 505, 100, 30) self._jDIDCopyButton.setBounds(15, 540, 100, 30) self._jDPwCopyButton.setBounds(15, 575, 100, 30) self._jDTablecont.setBounds(120, 400, 750, 205) self._jDitemsDelete.setBounds(810, 375, 60, 25) # Component ADD self._jScanPanel.add(self._jLabelCurrentIPMainText) self._jScanPanel.add(self._jLabelCurrentIPDesText) self._jScanPanel.add(self._jLabelCurrentWanIp) self._jScanPanel.add(self._jLabelCurrentLanIp) self._jScanPanel.add(self._jLabelCurrentWanIpDes) self._jScanPanel.add(self._jLabelCurrentLanIpDes) self._jScanPanel.add(self._jCheckIPButton) self._jScanPanel.add(self._jLabelMainText) self._jScanPanel.add(self._jLabelScanIPListen) self._jScanPanel.add(self._jPAddButton) self._jScanPanel.add(self._jPEditButton) self._jScanPanel.add(self._jPRemoveButton) self._jScanPanel.add(self._jSeparator_first) self._jScanPanel.add(self._jTablecont) self._jScanPanel.add(self._jSeparator_second) self._jScanPanel.add(self._jLabelDashboardText) self._jScanPanel.add(self._jLabelDashboardDesText) self._jScanPanel.add(self._jDAddButton) self._jScanPanel.add(self._jDEditButton) self._jScanPanel.add(self._jDRemoveButton) self._jScanPanel.add(self._jDIDCopyButton) self._jScanPanel.add(self._jDPwCopyButton) self._jScanPanel.add(self._jDTablecont) self._jScanPanel.add(self._jDitemsDelete) self._jScanPanel.add(self._jDURLConButton) # ADD/EDIT Dialog Create Component ## PROXY self.panel = swing.JPanel() self.panel.setLayout(None) self.panel.setPreferredSize(awt.Dimension(200, 140)) self.DescriptionLabel = swing.JLabel() self.NameLabel = swing.JLabel() self.IPLabel = swing.JLabel() self.PortLabel = swing.JLabel() self.Nametext = swing.JTextField(50) self.IPtext = swing.JTextField(50) self.Porttext = swing.JTextField(50) ## ACOUNT self.Dpanel = swing.JPanel() self.Dpanel.setLayout(None) self.Dpanel.setPreferredSize(awt.Dimension(260, 210)) self.DDescriptionLabel = swing.JLabel() self.DURLLabel = swing.JLabel() self.DURLText = swing.JTextField(50) self.DPrivLabel = swing.JLabel() self.DPrivCombo = swing.JComboBox() self.DIDLabel = swing.JLabel() self.DIDText = swing.JTextField(50) self.DPassLabel = swing.JLabel() self.DPassText = swing.JTextField(50) self.DCommentLabel = swing.JLabel() self.DCommentText = swing.JTextField(50) self.DSubCommentLabel = swing.JLabel() # ADD/EDIT Dialog Configure locations ## PROXY self.DescriptionLabel.setBounds(0, 0, 190, 15) self.NameLabel.setBounds(5, 35, 50, 30) self.IPLabel.setBounds(5, 70, 50, 30) self.PortLabel.setBounds(5, 105, 50, 30) self.Nametext.setBounds(60, 35, 150, 30) self.IPtext.setBounds(60, 70, 150, 30) self.Porttext.setBounds(60, 105, 150, 30) ## ACCOUNT self.DDescriptionLabel.setBounds(0, 0, 200, 10) self.DURLLabel.setBounds(5, 35, 70, 30) self.DURLText.setBounds(80, 35, 180, 30) self.DPrivLabel.setBounds(5, 70, 70, 30) self.DPrivCombo.setBounds(80, 70, 180, 30) self.DIDLabel.setBounds(5, 105, 70, 30) self.DIDText.setBounds(80, 105, 180, 30) self.DPassLabel.setBounds(5, 140, 70, 30) self.DPassText.setBounds(80, 140, 180, 30) self.DCommentLabel.setBounds(5, 175, 70, 15) self.DCommentText.setBounds(80, 175, 180, 30) self.DSubCommentLabel.setBounds(0, 190, 80, 15) # ADD/EDIT Dialog Configure GUI ## PROXY self.DescriptionLabel.setText("Input your proxy server details.") self.NameLabel.setText("NAME : ") self.IPLabel.setText("IP : ") self.PortLabel.setText("PORT : ") ## ACCOUNT self.DDescriptionLabel.setText("Input your account details") self.DURLLabel.setText("URL : ") self.DPrivLabel.setText("Privilege : ") self.DIDLabel.setText("ID : ") self.DPassLabel.setText("Password : "******"Comment : ") self.DSubCommentLabel.setText("(Unique Text)") self.DPrivCombo.addItem("System Administrator") self.DPrivCombo.addItem("Staff Administrator") self.DPrivCombo.addItem("Internal Staff") self.DPrivCombo.addItem("Customer") self.DPrivCombo.addItem("The Lowest Privilege") self.DPrivCombo.addItem("ETC") self.DPrivCombo.setEditable(False) # ADD/EDIT Dialog Component ADD ## PROXY self.panel.add(self.DescriptionLabel) self.panel.add(self.NameLabel) self.panel.add(self.IPLabel) self.panel.add(self.PortLabel) self.panel.add(self.Nametext) self.panel.add(self.IPtext) self.panel.add(self.Porttext) ## ACCOUNT self.Dpanel.add(self.DDescriptionLabel) self.Dpanel.add(self.DURLLabel) self.Dpanel.add(self.DURLText) self.Dpanel.add(self.DIDLabel) self.Dpanel.add(self.DIDText) self.Dpanel.add(self.DPassLabel) self.Dpanel.add(self.DPassText) self.Dpanel.add(self.DPrivLabel) self.Dpanel.add(self.DPrivCombo) self.Dpanel.add(self.DCommentLabel) self.Dpanel.add(self.DCommentText) self.Dpanel.add(self.DSubCommentLabel) # Setup Tabs self._jConfigTab = swing.JTabbedPane() self._jConfigTab.addTab("Smart Settings", self._jScanPanel) callbacks.addSuiteTab(self) return
def createGui(self): mpanel = swing.JPanel(java.awt.BorderLayout()) self.available = jlist = swing.JList() jlist.setVisibleRowCount(5) jlsp = swing.JScrollPane(jlist) self.addTitledBorder(jlsp, "Members") #jlist.setListData( ("catssssssssss", "rats" )) mpanel.add(jlsp, java.awt.BorderLayout.WEST) jtp = swing.JTabbedPane() mpanel.add(jtp, java.awt.BorderLayout.CENTER) tpanel = swing.JPanel() slayout = swing.SpringLayout() tpanel.setLayout(slayout) jtp.addTab("Messages", tpanel) self.jta = jta = swing.JTextArea() jsp = swing.JScrollPane(jta) self.addTitledBorder(jsp, "Instant Messages") jsp.setPreferredSize(java.awt.Dimension(500, 200)) tpanel.add(jsp) slayout.putConstraint(slayout.NORTH, jsp, 5, slayout.NORTH, tpanel) slayout.putConstraint(slayout.EAST, tpanel, 5, slayout.EAST, jsp) self.sendmessage = jta2 = swing.JTextArea() jsp2 = swing.JScrollPane(jta2) self.addTitledBorder(jsp2, "Compose Message") jsp2.setPreferredSize(java.awt.Dimension(250, 200)) tpanel.add(jsp2) slayout.putConstraint(slayout.NORTH, jsp2, 5, slayout.SOUTH, jsp) jb = swing.JButton("Send Message") jb.actionPerformed = lambda event: self.sendMessage() tpanel.add(jb) slayout.putConstraint(slayout.NORTH, jb, 0, slayout.NORTH, jsp2) slayout.putConstraint(slayout.WEST, jb, 5, slayout.EAST, jsp2) jb2 = swing.JButton("Clear") jb2.actionPerformed = lambda event: self.sendmessage.setText("") tpanel.add(jb2) slayout.putConstraint(slayout.NORTH, jb2, 5, slayout.SOUTH, jb) slayout.putConstraint(slayout.WEST, jb2, 5, slayout.EAST, jsp2) slayout.putConstraint(slayout.SOUTH, tpanel, 5, slayout.SOUTH, jsp2) npanel = swing.JPanel() slayout = swing.SpringLayout() npanel.setLayout(slayout) jtp.addTab("Nodes", npanel) self.table = jtable = swing.JTable() self.dtm = dtm = swing.table.DefaultTableModel() dtm.addColumn("From") dtm.addColumn("Node Name") jtable.setModel(dtm) jsp3 = swing.JScrollPane(jtable) jsp3.setPreferredSize(java.awt.Dimension(500, 200)) npanel.add(jsp3) slayout.putConstraint(slayout.NORTH, jsp3, 5, slayout.NORTH, npanel) slayout.putConstraint(slayout.EAST, npanel, 5, slayout.EAST, jsp3) jb3 = swing.JButton("Send Current Node To") jb3.actionPerformed = lambda event: self.sendNode() npanel.add(jb3) slayout.putConstraint(slayout.NORTH, jb3, 5, slayout.SOUTH, jsp3) slayout.putConstraint(slayout.SOUTH, npanel, 5, slayout.SOUTH, jb3) jb4 = swing.JButton("Insert Selected Row") jb4.actionPerformed = lambda event: self.insertNode() npanel.add(jb4) slayout.putConstraint(slayout.NORTH, jb4, 0, slayout.NORTH, jb3) slayout.putConstraint(slayout.EAST, jb4, 0, slayout.EAST, jsp3) jf = swing.JFrame() jf.add(mpanel) jf.pack() jf.visible = 1
def exportCodes(self, e): self.blankLog() self.siteMapData = self._callbacks.getSiteMap(None) # response codes to be included self.rcodes = [] if self.uiRcode1xx.isSelected(): self.rcodes += '1' if self.uiRcode2xx.isSelected(): self.rcodes += '2' if self.uiRcode3xx.isSelected(): self.rcodes += '3' if self.uiRcode4xx.isSelected(): self.rcodes += '4' if self.uiRcode5xx.isSelected(): self.rcodes += '5' if '3' in self.rcodes: self.colNames = ('Request', 'Referer', 'Response Code', 'Redirects To') else: self.colNames = ('Request', 'Referer', 'Response Code') self.tableData = [] for i in self.siteMapData: self.requestInfo = self._helpers.analyzeRequest(i) self.url = self.requestInfo.getUrl() if self.scopeOnly() and not (self._callbacks.isInScope(self.url)): continue self.urlDecode = self._helpers.urlDecode(str(self.url)) self.response = i.getResponse() if self.response == None: continue # Get referer if there is one self.requestHeaders = self.requestInfo.getHeaders() self.referer = '' for j in self.requestHeaders: if j.startswith('Referer:'): self.fullReferer = j.split(' ')[1] # drop the querystring parameter self.referer = self.fullReferer.split('?')[0] # Get response code self.responseInfo = self._helpers.analyzeResponse(self.response) self.responseCode = self.responseInfo.getStatusCode() self.firstDigit = str(self.responseCode)[0] if self.firstDigit not in self.rcodes: continue if self.firstDigit in ['1', '2', '4', '5']: # Return codes 1xx, 2xx, 4xx, 5xx self.tableData.append([ self.stripURLPort(self.urlDecode), str(self.referer), str(self.responseCode) ]) elif self.firstDigit == '3': # Return code 3xx Redirection self.requestHeaders = self.requestInfo.getHeaders() self.responseHeaders = self.responseInfo.getHeaders() for j in self.responseHeaders: if j.startswith('Location:'): self.location = j.split(' ')[1] self.tableData.append([ self.stripURLPort(self.urlDecode), str(self.referer), str(self.responseCode), self.location ]) dataModel = DefaultTableModel(self.tableData, self.colNames) self.uiLogTable = swing.JTable(dataModel) self.uiLogTable.setAutoCreateRowSorter(True) self.uiLogPane.setViewportView(self.uiLogTable)
def extractLinks(self, e): self.blankLog() #siteMapData only contains first requested entry of a page. Removing that page entry from burp target > site map > content will allow update. self.siteMapData = self._callbacks.getSiteMap(None) # What links should be extracted? absolute links, relative links, or both? self.destAbs = self.destRel = False if self.uiLinksAbs.isSelected(): self.destAbs = True if self.uiLinksRel.isSelected(): self.destRel = True # Start building JTable to contain the extracted data self.colNames = ('Page', 'HTTPS?', 'Link', 'Description', 'Target', 'Rel=', 'Possible vulnerabilities') self.tableData = [] for i in self.siteMapData: try: self.requestInfo = self._helpers.analyzeRequest(i) self.url = self.requestInfo.getUrl() if self.scopeOnly() and not (self._callbacks.isInScope( self.url)): continue self.urlDecode = self._helpers.urlDecode(str(self.url)) self.response = i.getResponse() if self.response == None: # if there's no response, there won't be any links :-) continue self.responseInfo = self._helpers.analyzeResponse( self.response) self.responseOffset = self.responseInfo.getBodyOffset() self.responseBody = self._helpers.bytesToString( self.response)[self.responseOffset:] keep_looking = True while keep_looking: # there may be multiple links in the response #TODO: known issue: if link does not start with <a href= it won't be detected i = self.responseBody.lower().find('<a href=') #define some variables self.isHttps = None self.Vulnerabilities = "" if i == -1: # no more <a href's found break self.responseBody = self.responseBody[i + 8:] isAbsLink = isRelLink = False # Looking for either " or ' around links which can be either absolute or relative # This assumes that for a link, quoting is consistent at front and back if self.responseBody[0:8].lower() == '"http://': myOffset = 8 isAbsLink = True endQuote = '"' self.isHttps = False self.Vulnerabilities = "Unencrypted transport" elif self.responseBody[0:8].lower() == "'http://": myOffset = 8 isAbsLink = True endQuote = "'" self.isHttps = False self.Vulnerabilities = "Unencrypted transport" elif self.responseBody[0:8].lower() == '"mailto:': myOffset = 0 isAbsLink = True endQuote = '"' self.isHttps = "(mailto)" elif self.responseBody[0:8].lower() == "'mailto:": myOffset = 0 isAbsLink = True endQuote = "'" self.isHttps = "(mailto)" elif self.responseBody[0:7].lower() == "mailto:": myOffset = 0 isAbsLink = True endQuote = ">" #might have space, but might not have space. Assume end will be there for sure. self.isHttps = "(mailto)" elif self.responseBody[0:9].lower() == '"https://': myOffset = 9 isAbsLink = True endQuote = '"' self.isHttps = True elif self.responseBody[0:9].lower() == "'https://": myOffset = 9 isAbsLink = True endQuote = "'" self.isHttps = True elif self.responseBody[0:1] == '"': myOffset = 1 isRelLink = True endQuote = '"' self.isHttps = "(Relative)" else: myOffset = 1 isRelLink = True endQuote = "'" self.isHttps = "(Relative)" self.responseBody = self.responseBody[myOffset:] pos = self.responseBody.find(endQuote) self.link = self.responseBody[0:pos] # Looking for </a> end tag # This assumes that the link is correctly ended posEndTag = self.responseBody.lower().find("</a>") self.fullLink = self.responseBody[0:posEndTag] # Looking for > at the end of the <a tag # This again assumes that the link is correctly ended posEndA = self.responseBody.lower().find(">") self.description = self.responseBody[posEndA + 1:posEndTag] # Looking for a possible target that is described self.target = "" if self.responseBody.lower().find("target") < posEndA: posTarget = self.responseBody.lower().find("target") #search the end of this parameter - might be ' or " or even a space, but it should be directly after the target if self.responseBody[posTarget + 7:posTarget + 8] == '"': endQuote = '"' elif self.responseBody[posTarget + 7:posTarget + 8] == "'": endQuote = "'" else: endQuote = ">" posTargetEnd = self.responseBody[posTarget + 8:posEndA].lower( ).find(endQuote) #TODO rework needed self.target = self.responseBody[posTarget + 8:posTarget + 8 + posTargetEnd] self.rel = "" if self.responseBody.lower().find("rel") < posEndA: posRel = self.responseBody.lower().find("rel") #search the end of this parameter - might be ' or " or even a space, but it should be directly after the target if self.responseBody[posRel + 4:posRel + 5] == '"': endQuote = '"' elif self.responseBody[posRel + 4:posRel + 5] == "'": endQuote = "'" else: endQuote = ">" posRelEnd = self.responseBody[posRel + 5:posEndA].lower().find( endQuote) self.rel = self.responseBody[posRel + 5:posRel + 5 + posRelEnd] #Is this link vulnerable to Tabnabbing? if self.target != "" and not isRelLink: if self.rel.lower().find("noopener") == -1: self.Vulnerabilities = self.Vulnerabilities + " Tabnabbing" #if rel= is not defined, but target is, the link is still vulnerable for tabnabbing elif self.target != "" and not isRelLink: self.Vulnerabilities = self.Vulnerabilities + " Tabnabbing" if (isAbsLink and self.destAbs) or (isRelLink and self.destRel): # remove white space and extra CR/LF characters self.tableData.append([ self.stripURLPort(self.urlDecode), str(self.isHttps), self.lstripWS(self.stripCRLF(self.link)), self.lstripWS(self.stripCRLF(self.description)), self.lstripWS(self.stripCRLF(self.target)), self.lstripWS(self.stripCRLF(self.rel)), self.lstripWS(self.stripCRLF(self.Vulnerabilities)) ]) except: print('An error occured during processing of a link [ ' + str(i) + ' ] ignored it and continued with the next.') dataModel = DefaultTableModel(self.tableData, self.colNames) self.uiLogTable = swing.JTable(dataModel) self.uiLogTable.setAutoCreateRowSorter(True) self.uiLogPane.setViewportView(self.uiLogTable)
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 visualiseUndoStack(self): umanager = self.umanager table = swing.JTable(self.UneditableTableModel( )) #( data, util.Vector( [ 'spot', 'data', 'action', 'redo/undo' ] ) ) table.setSelectionMode(swing.ListSelectionModel.SINGLE_SELECTION) self.setDataForTable(table) jd = swing.JDialog() jd.setTitle("Undo Stack") cp = jd.getContentPane() cp.add(swing.JScrollPane(table)) bholder = swing.JPanel() cp.add(bholder, java.awt.BorderLayout.SOUTH) uto = swing.JButton("Undo To") bholder.add(uto) #@ <<_undoTo>> #@+node:zorcanda!.20050906183758:<<_undoTo>> def _undoTo(event): sr = table.getSelectedRow() if sr == -1: swing.JOptionPane.showMessageDialog( None, "No Selected Row", "Select A Row Please", swing.JOptionPane.INFORMATION_MESSAGE) return edits = umanager.getEdits() undo = edits.get(sr) if not undo.canUndo(): swing.JOptionPane.showMessageDialog( None, "Cant Undo To This Point", "Illegal Undo Selection", swing.JOptionPane.WARNING_MESSAGE) return self.ignore = 1 umanager.undoTo(undo) self.ignore = 0 self.setDataForTable(table) #@-node:zorcanda!.20050906183758:<<_undoTo>> #@nl uto.actionPerformed = _undoTo rto = swing.JButton("Redo To") bholder.add(rto) #@ <<_redoTo>> #@+node:zorcanda!.20050906183938:<<_redoTo>> def _redoTo(event): sr = table.getSelectedRow() if sr == -1: swing.JOptionPane.showMessageDialog( None, "No Selected Row", "Select A Row Please", swing.JOptionPane.INFORMATION_MESSAGE) return edits = umanager.getEdits() undo = edits.get(sr) if not undo.canRedo(): swing.JOptionPane.showMessageDialog( None, "Cant Redo To This Point", "Illegal Redo Selection", swing.JOptionPane.WARNING_MESSAGE) return self.ignore = 1 umanager.redoTo(undo) self.ignore = 0 self.setDataForTable(table) #@-node:zorcanda!.20050906183938:<<_redoTo>> #@nl rto.actionPerformed = _redoTo jb = swing.JButton("Close") jb.actionPerformed = lambda event: jd.dispose() bholder.add(jb) jd.pack() g.app.gui.center_dialog(jd) jd.setModal(1) jd.show()
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)
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 )