Exemple #1
0
 def createAnyTable(self, table_model, table_number, min_size):
     _table = JTable(table_model)
     _table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS)
     _scrolltable = JScrollPane(_table)
     _scrolltable.setMinimumSize(min_size)
     # _table.setMinimumSize(min_size)
     return _scrolltable
Exemple #2
0
    def createButtonPane(self):
        """Create a new button pane for the message editor tab"""
        self._button_listener = EditorButtonListener(self)

        panel = JPanel()
        panel.setLayout(BoxLayout(panel, BoxLayout.Y_AXIS))
        panel.setBorder(EmptyBorder(5, 5, 5, 5))

        panel.add(Box.createRigidArea(Dimension(0, 5)))
        type_scroll_pane = JScrollPane(self._type_list_component)
        type_scroll_pane.setMaximumSize(Dimension(200, 100))
        type_scroll_pane.setMinimumSize(Dimension(150, 100))
        panel.add(type_scroll_pane)
        panel.add(Box.createRigidArea(Dimension(0, 3)))

        new_type_panel = JPanel()
        new_type_panel.setLayout(BoxLayout(new_type_panel, BoxLayout.X_AXIS))
        new_type_panel.add(self._new_type_field)
        new_type_panel.add(Box.createRigidArea(Dimension(3, 0)))
        new_type_panel.add(
            self.createButton(
                "New", "new-type", "Save this message's type under a new name"
            )
        )
        new_type_panel.setMaximumSize(Dimension(200, 20))
        new_type_panel.setMinimumSize(Dimension(150, 20))

        panel.add(new_type_panel)

        button_panel = JPanel()
        button_panel.setLayout(FlowLayout())
        if self._editable:
            button_panel.add(
                self.createButton(
                    "Validate", "validate", "Validate the message can be encoded."
                )
            )
        button_panel.add(
            self.createButton("Edit Type", "edit-type", "Edit the message type")
        )
        button_panel.add(
            self.createButton(
                "Reset Message", "reset", "Reset the message and undo changes"
            )
        )
        button_panel.add(
            self.createButton(
                "Clear Type", "clear-type", "Reparse the message with an empty type"
            )
        )
        button_panel.setMinimumSize(Dimension(100, 200))
        button_panel.setPreferredSize(Dimension(200, 1000))

        panel.add(button_panel)

        return panel
Exemple #3
0
    def createAnyTable(self, table_model, table_number, min_size):
        _table = JTable(table_model)
        _table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS)
        for i in range(2):
            column = _table.getColumnModel().getColumn(i)
            if i == 0:
                column.setPreferredWidth(250)
            else:
                column.setPreferredWidth(50)

        _scrolltable = JScrollPane(_table)
        _scrolltable.setMinimumSize(min_size)
        return _scrolltable
Exemple #4
0
def showTable(rows,
              title="Table",
              column_names=None,
              dataType=Number,
              width=400,
              height=500,
              showTable=True,
              windowClosing=None,
              onCellClickFn=None,
              onRowClickFn=None):
    """
     rows: list of lists of numbers.
     title: for the JFrame
     column_names: list of strings, or None
     width: defaults to 400 px
     height: defaults to 500 px
     showTable: whether to show the JFrame.
     windowClosing: an optional function to execute when the table's JFrame is closed.
     onClickCellFn: an optional function to execute when a table's cell is clicked, and receiving 3 args: row index, col index, cell value.
     onRowCellFn: an optinal function to execute when a table's row is clicked, and receiving as args the whole row.
     
     return: a tuple with the JTable and the JFrame
  """
    table_data = DataTable(rows,
                           column_names=column_names,
                           onCellClickFn=onCellClickFn,
                           onRowClickFn=onRowClickFn)
    table = JTable(table_data)
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
    #table.setAutoCreateRowSorter(True) # to sort the view only, not the data in the underlying TableModel
    sorter = TableRowSorter(table_data)
    sorter.setComparator(0, Comparator.naturalOrder())
    sorter.setComparator(1, Comparator.naturalOrder())
    sorter.setComparator(2, Comparator.naturalOrder())
    table.setRowSorter(sorter)

    frame = JFrame(title) if windowClosing is None else JFrame(
        title, windowClosing=windowClosing)
    jsp = JScrollPane(table)
    jsp.setMinimumSize(Dimension(width, height))
    frame.getContentPane().add(jsp)

    def show():
        frame.pack()
        frame.setVisible(True)

    if showTable:
        SwingUtilities.invokeLater(show)

    return table, frame
Exemple #5
0
    def __init__(self):
        self.programs = []
        self.setLayout(BoxLayout(self, BoxLayout.PAGE_AXIS))

        self.JprogramList = JList()
        self.JprogramList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
        self.JprogramList.addListSelectionListener(self.handle_select)
        scrollPane = JScrollPane(self.JprogramList)
        scrollPane.setMinimumSize(Dimension(300, 0))

        self.splitPane = SplitPanel(scrollPane, JPanel())
        self.add(self.splitPane)
        context.addon.register_on_connect(self.load_program_list)
        context.addon.register_on_error(self.display_error)
Exemple #6
0
    def __init__(self, title=""):
        JFrame.__init__(self, title)
        self.size = 400, 500
        self.windowClosing = self.closing

        label = JLabel(text="Class Name:")
        label.horizontalAlignment = JLabel.RIGHT
        tpanel = JPanel(layout=awt.FlowLayout())
        self.text = JTextField(20, actionPerformed=self.entered)
        btn = JButton("Enter", actionPerformed=self.entered)
        tpanel.add(label)
        tpanel.add(self.text)
        tpanel.add(btn)

        bpanel = JPanel()
        self.tree = JTree(default_tree())
        scrollpane = JScrollPane(self.tree)
        scrollpane.setMinimumSize(awt.Dimension(200, 200))
        scrollpane.setPreferredSize(awt.Dimension(350, 400))
        bpanel.add(scrollpane)

        bag = GridBag(self.contentPane)
        bag.addRow(tpanel, fill='HORIZONTAL', weightx=1.0, weighty=0.5)
        bag.addRow(bpanel, fill='BOTH', weightx=0.5, weighty=1.0)
Exemple #7
0
 def __init__(self, title=""):
     JFrame.__init__(self, title)
     self.size = 400,500
     self.windowClosing = self.closing
     
     label = JLabel(text="Class Name:") 
     label.horizontalAlignment = JLabel.RIGHT
     tpanel = JPanel(layout = awt.FlowLayout())
     self.text = JTextField(20, actionPerformed = self.entered)
     btn = JButton("Enter", actionPerformed = self.entered)
     tpanel.add(label)
     tpanel.add(self.text)
     tpanel.add(btn)
 
     bpanel = JPanel()
     self.tree = JTree(default_tree())
     scrollpane = JScrollPane(self.tree)
     scrollpane.setMinimumSize(awt.Dimension(200,200))
     scrollpane.setPreferredSize(awt.Dimension(350,400))
     bpanel.add(scrollpane)
     
     bag = GridBag(self.contentPane)
     bag.addRow(tpanel, fill='HORIZONTAL', weightx=1.0, weighty=0.5)
     bag.addRow(bpanel, fill='BOTH', weightx=0.5, weighty=1.0) 
Exemple #8
0
all.add(search_field)

# Bottom left element: the table, wrapped in a scrollable component
table = JTable(TableModel())
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
#table.setCellSelectionEnabled(True)
table.setAutoCreateRowSorter(
    True)  # to sort the view only, not the data in the underlying TableModel
c.gridx = 0
c.gridy = 1
c.anchor = GridBagConstraints.NORTHWEST
c.fill = GridBagConstraints.BOTH  # resize with the frame
c.weightx = 1.0
c.gridheight = 2
jsp = JScrollPane(table)
jsp.setMinimumSize(Dimension(400, 500))
gb.setConstraints(jsp, c)
all.add(jsp)


# Convert from row index in the view (could e.g. be sorted)
# to the index in the underlying table model
def getSelectedRowIndex():
    viewIndex = table.getSelectionModel().getLeadSelectionIndex()
    modelIndex = table.convertRowIndexToModel(viewIndex)
    return modelIndex


# Top component: a text area showing the full file path to the image in the selected table row
c.gridx = 1
c.gridy = 0
Exemple #9
0
class BurpExtender(IBurpExtender, ITab, IHttpListener,
                   IMessageEditorController, AbstractTableModel,
                   IContextMenuInvocation):
    name = "Blind XSS_"
    _jTabbedPane = JTabbedPane()
    _jPanel = JPanel()
    _jAboutPanel = JPanel()
    _jPanelConstraints = GridBagConstraints()
    _jLabelParameters = None
    _jTextFieldParameters = None
    _jLabelTechniques = None
    _jTextFieldURL = None
    _jLabelFuzzFactor = None
    _jTextFieldFuzzFactor = None
    _jLabelAdditionalCmdLine = None
    _jTextFieldAdditionalCmdLine = None
    _jButtonSetCommandLine = None
    _jLabelAbout = None

    #
    # implement IBurpExtender
    #
    def registerExtenderCallbacks(self, callbacks):
        # keep a reference to our callbacks object
        self._callbacks = callbacks
        # obtain an extension helpers object
        self._helpers = callbacks.getHelpers()
        # set our extension name
        self._callbacks.setExtensionName(self.name)
        # lists of hosts with querys

        self._dictPayloads = {}
        self._dictPayloads_headers = {}
        self._dictPayloads_params = {}
        self._dictHeaders = {}
        self._dictParams = {}

        self.status_flag = False
        self.table_flag = 0
        self.start_button_text = 'Run proxy'
        self._layout = GridBagLayout()
        self._jPanel.setLayout(self._layout)

        self._jPanel.setBounds(0, 0, 1000, 1000)
        self._jLabelTechniques = JLabel("Your URL (my.burpcollaborator.net):")
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 0
        self._jPanelConstraints.gridy = 1
        self._jPanelConstraints.gridwidth = 2
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(0, 0, 10, 0)
        self._jPanel.add(self._jLabelTechniques, self._jPanelConstraints)

        self._jTextFieldURL = JTextField("", 30)
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 2
        self._jPanelConstraints.gridy = 1
        self._jPanelConstraints.gridwidth = 4
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(0, 0, 10, 0)
        self._jPanel.add(self._jTextFieldURL, self._jPanelConstraints)

        self._jLabelTechniques = JLabel("Press to start:")
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.anchor = GridBagConstraints.WEST
        self._jPanelConstraints.gridx = 0
        self._jPanelConstraints.gridy = 0
        self._jPanelConstraints.gridwidth = 2
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(0, 0, 10, 0)
        self._jPanel.add(self._jLabelTechniques, self._jPanelConstraints)

        self.submitSearchButton = swing.JButton(
            self.start_button_text, actionPerformed=self.active_flag)
        self.submitSearchButton.setBackground(Color.WHITE)
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 2
        self._jPanelConstraints.gridy = 0
        self._jPanelConstraints.gridwidth = 4
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(0, 0, 10, 0)
        self._jPanel.add(self.submitSearchButton, self._jPanelConstraints)

        self._tableModelPayloads = DefaultTableModel()
        self._tableModelPayloads.addColumn("Payload")
        self._tableModelPayloads.addColumn("Using")

        self._tableModelHeaders = DefaultTableModel()
        self._tableModelHeaders.addColumn("Header")
        self._tableModelHeaders.addColumn("Using")

        self._tableModelParams = DefaultTableModel()
        self._tableModelParams.addColumn("Parameter")
        self._tableModelParams.addColumn("Using")

        self._table = JTable(self._tableModelPayloads)
        self._table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS)
        self._table.getModel().addTableModelListener(
            MyTableModelListener(self._table, self, 1))
        self._scrolltable = JScrollPane(self._table)
        self._scrolltable.setMinimumSize(Dimension(300, 200))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 0
        self._jPanelConstraints.gridy = 2
        self._jPanelConstraints.gridwidth = 2
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(0, 0, 0, 10)
        self._jPanel.add(self._scrolltable, self._jPanelConstraints)

        self._table = JTable(self._tableModelHeaders)
        self._table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS)
        self._table.getModel().addTableModelListener(
            MyTableModelListener(self._table, self, 2))
        self._scrolltable = JScrollPane(self._table)
        self._scrolltable.setMinimumSize(Dimension(300, 200))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 2
        self._jPanelConstraints.gridy = 2
        self._jPanelConstraints.gridwidth = 2
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(0, 0, 0, 10)
        self._jPanel.add(self._scrolltable, self._jPanelConstraints)

        self._table = JTable(self._tableModelParams)
        self._table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS)
        self._table.getModel().addTableModelListener(
            MyTableModelListener(self._table, self, 3))
        self._scrolltable = JScrollPane(self._table)
        self._scrolltable.setMinimumSize(Dimension(300, 200))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 4
        self._jPanelConstraints.gridy = 2
        self._jPanelConstraints.gridwidth = 2
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(0, 0, 0, 0)
        self._jPanel.add(self._scrolltable, self._jPanelConstraints)

        addPayloadButton = swing.JButton('Add',
                                         actionPerformed=self.addToPayload)
        addPayloadButton.setBackground(Color.WHITE)
        addPayloadButton.setPreferredSize(Dimension(150, 40))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        # self._jPanelConstraints.anchor = GridBagConstraints.CENTER
        self._jPanelConstraints.gridx = 1
        self._jPanelConstraints.gridy = 3
        self._jPanelConstraints.gridwidth = 1
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(3, 0, 0, 10)
        self._jPanel.add(addPayloadButton, self._jPanelConstraints)

        deletePayloadButton = swing.JButton(
            'Delete', actionPerformed=self.deleteToPayload)
        deletePayloadButton.setBackground(Color.WHITE)
        deletePayloadButton.setPreferredSize(Dimension(150, 40))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 0
        self._jPanelConstraints.gridy = 3
        self._jPanelConstraints.gridwidth = 1
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(3, 0, 0, 0)
        self._jPanel.add(deletePayloadButton, self._jPanelConstraints)

        addHeaderButton = swing.JButton('Add',
                                        actionPerformed=self.addToHeader)
        addHeaderButton.setBackground(Color.WHITE)
        addHeaderButton.setPreferredSize(Dimension(150, 40))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        # self._jPanelConstraints.anchor = GridBagConstraints.CENTER
        self._jPanelConstraints.gridx = 3
        self._jPanelConstraints.gridy = 3
        self._jPanelConstraints.gridwidth = 1
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(3, 0, 0, 10)
        self._jPanel.add(addHeaderButton, self._jPanelConstraints)

        deleteHeaderButton = swing.JButton('Delete',
                                           actionPerformed=self.deleteToHeader)
        deleteHeaderButton.setBackground(Color.WHITE)
        deleteHeaderButton.setPreferredSize(Dimension(150, 40))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 2
        self._jPanelConstraints.gridy = 3
        self._jPanelConstraints.gridwidth = 1
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(3, 0, 0, 0)
        self._jPanel.add(deleteHeaderButton, self._jPanelConstraints)

        addParamsButton = swing.JButton('Add',
                                        actionPerformed=self.addToParams)
        addParamsButton.setBackground(Color.WHITE)
        addParamsButton.setPreferredSize(Dimension(150, 40))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        # self._jPanelConstraints.anchor = GridBagConstraints.CENTER
        self._jPanelConstraints.gridx = 5
        self._jPanelConstraints.gridy = 3
        self._jPanelConstraints.gridwidth = 1
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(3, 0, 0, 0)
        self._jPanel.add(addParamsButton, self._jPanelConstraints)

        deleteParamsButton = swing.JButton('Delete',
                                           actionPerformed=self.deleteToParams)
        deleteParamsButton.setBackground(Color.WHITE)
        deleteParamsButton.setPreferredSize(Dimension(150, 40))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 4
        self._jPanelConstraints.gridy = 3
        self._jPanelConstraints.gridwidth = 1
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(3, 0, 0, 0)
        self._jPanel.add(deleteParamsButton, self._jPanelConstraints)

        self._resultsTextArea = swing.JTextArea()
        resultsOutput = swing.JScrollPane(self._resultsTextArea)
        resultsOutput.setMinimumSize(Dimension(800, 200))
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        self._jPanelConstraints.gridx = 0
        self._jPanelConstraints.gridy = 4
        self._jPanelConstraints.gridwidth = 6
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(10, 0, 0, 0)
        self._jPanel.add(resultsOutput, self._jPanelConstraints)

        self.clearSearchButton = swing.JButton(
            'Clear Search Output', actionPerformed=self.clearOutput)
        self._jPanelConstraints.fill = GridBagConstraints.HORIZONTAL
        # self._jPanelConstraints.anchor = GridBagConstraints.CENTER
        self._jPanelConstraints.gridx = 2
        self._jPanelConstraints.gridy = 5
        self._jPanelConstraints.gridwidth = 2
        self._jPanelConstraints.gridheight = 1
        self._jPanelConstraints.insets = Insets(3, 0, 0, 0)
        self._jPanel.add(self.clearSearchButton, self._jPanelConstraints)

        self._callbacks.customizeUiComponent(self._jPanel)

        self._callbacks.addSuiteTab(self)
        # register ourselves as an HTTP listener
        self._callbacks.registerHttpListener(self)

        return

    # def onCheck(self, event):
    #     if self._checkBoxPayload.isSelected() and self.table_flag != 0:
    #         self.table_flag = 0
    #         self._checkBoxHeader.setSelected(False)
    #         self._checkBoxParam.setSelected(False)

    #     if self._checkBoxHeader.isSelected() and self.table_flag != 1:
    #         self.table_flag = 1
    #         self._checkBoxParam.setSelected(False)
    #         self._checkBoxPayload.setSelected(False)

    #     if self._checkBoxParam.isSelected() and self.table_flag != 2:
    #         self.table_flag = 2
    #         self._checkBoxHeader.setSelected(False)
    #         self._checkBoxPayload.setSelected(False)

    # run Query for Add to Queue Button
    def addToPayload(self, button):
        self._tableModelPayloads.insertRow(
            self._tableModelPayloads.getRowCount(), ['', ''])
        # self.appendToResults(str(self._tableModelPayloads.getDataVector()))

    def addToHeader(self, button):
        self._tableModelHeaders.insertRow(
            self._tableModelHeaders.getRowCount(), ['', ''])

    def addToParams(self, button):
        self._tableModelParams.insertRow(self._tableModelParams.getRowCount(),
                                         ['', ''])

    def deleteToPayload(self, button):
        self._tableModelPayloads.removeRow(
            self._tableModelPayloads.getRowCount() - 1)
        # self.appendToResults(str(self._tableModelPayloads.getDataVector()))

    def deleteToHeader(self, button):
        self._tableModelHeaders.removeRow(
            self._tableModelHeaders.getRowCount() - 1)
        # self.appendToResults(str(self._tableModelHeaders.getDataVector()))

    def deleteToParams(self, button):
        self._tableModelParams.removeRow(self._tableModelParams.getRowCount() -
                                         1)
        # self.appendToResults(str(self._tableModelParams.getDataVector()))

    # Clear Queue Function
    def clearQueue(self, button):
        table_number = self.table_flag

        if table_number == 0:
            data = self._tableModelPayloads.getDataVector()
            try:
                self._dictPayloads.pop(data[-1][0])
            except Exception:
                pass
            self._tableModelPayloads.removeRow(
                self._tableModelPayloads.getRowCount() - 1)
        elif table_number == 1:
            data = self._tableModelHeaders.getDataVector()
            try:
                self._dictHeaders.pop(data[-1][0])
            except Exception:
                pass
            self._tableModelHeaders.removeRow(
                self._tableModelHeaders.getRowCount() - 1)
        elif table_number == 2:
            data = self._tableModelParams.getDataVector()
            try:
                self._dictParams.pop(data[-1][0])
            except Exception:
                pass
            self._tableModelParams.removeRow(
                self._tableModelParams.getRowCount() - 1)

    def updateTables(self, button):
        self._dictPayloads = {
            x[0]: x[1]
            for x in self._tableModelPayloads.getDataVector()
        }
        self._dictHeaders = {
            x[0]: x[1]
            for x in self._tableModelHeaders.getDataVector()
        }
        self._dictParams = {
            x[0]: x[1]
            for x in self._tableModelParams.getDataVector()
        }

    # Clear GUI Output Function
    def clearOutput(self, button):
        self._resultsTextArea.setText("")

    def active_flag(self, button):
        if not self.status_flag:
            for idx, key in enumerate(self._dictHeaders):
                if self._dictHeaders[key] == '1':
                    self._dictPayloads_headers[key] = self._dictHeaders[key]

            for idx, key in enumerate(self._dictParams):
                if self._dictParams[key] == '1':
                    self._dictPayloads_params[key] = self._dictParams[key]

            self.status_flag = True
            self.submitSearchButton.setBackground(Color.GRAY)
            self.appendToResults("Proxy start...")

        elif self.status_flag:
            self.status_flag = False
            self.submitSearchButton.setBackground(Color.WHITE)
            self.appendToResults("Proxy stop...")

    def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
        try:
            if not self.status_flag:
                return
            # only process requests
            if not messageIsRequest:
                return

            requestString = messageInfo.getRequest().tostring()

            listHeader = re.findall('([\w-]+):\s?(.*)', requestString)
            dictRealHeaders = {x[0].lower(): x[1] for x in listHeader}
            # self.appendToResults(str(self._dictHeaders))

            for index, key in enumerate(self._dictPayloads_headers):
                if key.lower() in dictRealHeaders.keys():
                    if len(self._dictPayloads.keys()) == 0:
                        pass
                    else:
                        payload = random.choice(self._dictPayloads.keys())
                        # payload = payload.replace("$HEADER$", self._jTextFieldURL.text, 1)
                        payload = payload.replace("$URL$",
                                                  self._jTextFieldURL.text, 1)
                        requestString = requestString.replace(
                            dictRealHeaders.get(key.lower()), payload, 1)
                else:
                    pass

            listParam = re.findall('[\?|\&]([^=]+)\=([^& ])+', requestString)
            dictRealParams = {x[0].lower(): x[1] for x in listParam}
            url = requestString.split(" HTTP/1.")
            for index, key in enumerate(self._dictPayloads_params):
                if key.lower() in dictRealParams.keys():
                    if len(self._dictPayloads.keys()) == 0:
                        pass
                    else:
                        payload = random.choice(self._dictPayloads.keys())
                        # payload = payload.replace("$PARAM$", self._jTextFieldURL.text, 1)
                        payload = payload.replace("$URL$",
                                                  self._jTextFieldURL.text, 1)
                        url[0] = url[0].replace(
                            dictRealParams.get(key.lower()), payload, 1)
                else:
                    pass
            requestString = "{} HTTP/1.{}".format(url[0], url[1])

            self.appendToResults(requestString.encode())
            messageInfo.setRequest(requestString.encode())
        except Exception as msg:
            self.appendToResults(msg)

    # Fnction to provide output to GUI
    def appendToResults(self, s):
        """Appends results to the resultsTextArea in a thread safe mannor. Results will be
           appended in the order that this function is called.
        """
        def appendToResults_run(s):
            self._resultsTextArea.append(s)
            self._resultsTextArea.append('\n')

        swing.SwingUtilities.invokeLater(PyRunnable(appendToResults_run, s))

    def getTabCaption(self):
        return self.name

    def getUiComponent(self):
        return self._jPanel