카테고리 없음

ㄹㄹㄹ

1231. 2025. 3. 26. 13:20
from burp import IBurpExtender, IHttpListener, ITab
from javax.swing import JPanel, JButton, JTextField, JLabel, JComboBox, JTable, JScrollPane
from javax.swing.table import DefaultTableModel
from java.awt import BorderLayout, FlowLayout

class BurpExtender(IBurpExtender, IHttpListener, ITab):
    def registerExtenderCallbacks(self, callbacks):
        self.callbacks = callbacks
        self.helpers = callbacks.getHelpers()
        callbacks.setExtensionName("Keyword Highlighter Advanced")
        callbacks.registerHttpListener(self)

        # GUI 설정
        self.panel = JPanel(BorderLayout())
        self.top_panel = JPanel(FlowLayout())

        self.keyword_field = JTextField(15)
        self.color_selector = JComboBox(["red", "orange", "yellow", "green", "cyan", "blue", "pink", "magenta", "gray"])
        self.add_button = JButton("Add", actionPerformed=self.add_keyword)
        self.delete_button = JButton("Delete Selected", actionPerformed=self.delete_keyword)

        self.top_panel.add(JLabel("Keyword:"))
        self.top_panel.add(self.keyword_field)
        self.top_panel.add(JLabel("Color:"))
        self.top_panel.add(self.color_selector)
        self.top_panel.add(self.add_button)
        self.top_panel.add(self.delete_button)

        self.table_model = DefaultTableModel(["Keyword", "Color"], 0)
        self.table = JTable(self.table_model)
        scroll_pane = JScrollPane(self.table)

        self.panel.add(self.top_panel, BorderLayout.NORTH)
        self.panel.add(scroll_pane, BorderLayout.CENTER)

        callbacks.addSuiteTab(self)
        print("Keyword Highlighter Advanced loaded.")

    def getTabCaption(self):
        return "Keyword Highlighter"

    def getUiComponent(self):
        return self.panel

    def add_keyword(self, event):
        keyword = self.keyword_field.getText().strip()
        color = self.color_selector.getSelectedItem()
        if keyword:
            self.table_model.addRow([keyword, color])

    def delete_keyword(self, event):
        selected_row = self.table.getSelectedRow()
        if selected_row != -1:
            self.table_model.removeRow(selected_row)

    def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
        if toolFlag == self.callbacks.TOOL_PROXY and not messageIsRequest:
            request = messageInfo.getRequest()
            analyzedRequest = self.helpers.analyzeRequest(request)
            request_url = analyzedRequest.getUrl().toString()
            request_body = request[analyzedRequest.getBodyOffset():].tostring()

            content_to_search = (request_url + request_body).lower()

            # 등록된 키워드 체크
            for row in range(self.table_model.getRowCount()):
                keyword = self.table_model.getValueAt(row, 0).lower()
                color = self.table_model.getValueAt(row, 1).lower()

                if keyword in content_to_search:
                    # 정확히 지원되는 색상 문자열만 사용
                    messageInfo.setHighlight(color)
                    return  # 첫 번째 매칭 키워드에 하이라이트 처리