所以想在burp上增加一些自己想要的功能
这个插件是一个在burp上创建一个tab以提供写入python代码的地方,并且以执行。
但是这个插件不适用于中文,而且反复加载特别的麻烦,我对他做了一些修改,注意这两个文件需要放在一起
我制作了darkhold.py版本的修改后代码,darkhold可以热加载learn.py,也就是每一次burp处理http数据时都会重新读取learn.py并执行
# -*- coding: utf-8 -*-
# Author:k4n5ha0
# Blog:https://my.oschina.net/9199771
# Python Import
from java.awt import Font
from javax.swing import JScrollPane, JTextPane
from javax.swing.text import SimpleAttributeSet
from burp import IBurpExtender, IExtensionStateListener, IHttpListener, ITab
import base64
import traceback
import os
import time
class BurpExtender(IBurpExtender, IExtensionStateListener, IHttpListener, ITab):
def registerExtenderCallbacks(self, callbacks):
self.callbacks = callbacks
self.helpers = callbacks.helpers
callbacks.setExtensionName("darkhold")
self._code = compile("", "", "exec")
self._script = ""
callbacks.registerExtensionStateListener(self)
callbacks.registerHttpListener(self)
print "loaded success!"
def extensionUnloaded(self):
return
def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
try:
globals_ = {}
locals_ = {"extender": self,
"callbacks": self.callbacks,
"helpers": self.helpers,
"toolFlag": toolFlag,
"messageIsRequest": messageIsRequest,
"messageInfo": messageInfo
}
exec(self.code, globals_, locals_)
time.sleep(0.1)
except Exception:
traceback.print_exc(file=self.callbacks.getStderr())
return
@property
def code(self):
path_script = os.path.abspath(".") + os.sep + "learn.py"
if os.path.exists(path_script):
f = open(path_script, "r")
self._script = f.read().decode("utf-8")
f.close()
self._code = compile(self._script, "", "exec")
return self._code
return ""
这样就可以用vscode方便编程:
不知道为何还是有点bug,后续会加强,未来逐渐增加点新功能。