概述
0x00 续上篇 再来继续看官方给出的demo(新看客请从一开始)
0x01 本篇章主要是在各种运行时注册监听器 并打印响应的内容
0x02 通读以下代码 了解其代码运行过程 并调试代码 安装查看结果
#coding=utf-8
from burp import IBurpExtender #核心扩展
from burp import IHttpListener #事件监听
from burp import IProxyListener #代理监听
from burp import IScannerListener #扫描监听
from burp import IExtensionStateListener #扩展状态监听
from java.io import PrintWriter #java方法-输出
class BurpExtender(IBurpExtender, IHttpListener, IProxyListener, IScannerListener, IExtensionStateListener):
#
# implement IBurpExtender
#
def registerExtenderCallbacks(self, callbacks):
# 加载回调类为成员对象
self._callbacks = callbacks
# set our extension name
#设置扩展名称 setExtensionName()此方法用于设置扩展名称也就是插件名称
callbacks.setExtensionName("Event listeners")
# obtain our output stream
# 输出消息流到插件面板 getStdout()此方法用于获取当前扩展的输出流
self._stdout = PrintWriter(callbacks.getStdout(), True)
# register ourselves as an HTTP listener
# 注册http消息监听器 registerHttpListener()此方法是用来注册一个监听器 该监听器可以探知到所有经过burp的请求/响应
callbacks.registerHttpListener(self)
# register ourselves as a Proxy listener
# 注册代理监听器 registerProxyListener() 此方法是用来注册一个监听器 该监听器可以探知到通过代理模块的请求/响应
callbacks.registerProxyListener(self)
# register ourselves as a Scanner listener
# 注册扫描监听器 registerScannerListener() 此方法是用来注册一个监听器 该监听器可以探知到扫描工具报告的问题
callbacks.registerScannerListener(self)
# register ourselves as an extension state listener
# 注册扩展状态监听器 registerExtensionStateListener()此方法用来注册监听器 该监听器可以探知有关扩展插件的状态更改的通知
callbacks.registerExtensionStateListener(self)
#
# implement IHttpListener
# 实现http监听 当要发出http请求/响应时 会调用此函数
def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
self._stdout.println(
("HTTP request to " if messageIsRequest else "HTTP response from ") +
messageInfo.getHttpService().toString() +
" [" + self._callbacks.getToolName(toolFlag) + "]")
#
# toolFlag int 发出请求的burp工具的标识
# messageIsRequest bool 标记请求/响应 请求为1 响应为0
# messageInfo 要处理的请求/响应的详细信息。扩展可以调用setter方法来更新当前信息 从而改变burp的行为
# messageInfo.getHttpService() 此方法用于检索http请求/响应 为IHttpService对象 其中信息包含http服务的详细信息
# .toString() 转换为字符串
#_callbacks.getToolName() 此方法获取burp工具的的名称
#
#
# implement IProxyListener
# 当代理正在处理http消息时调用此方法
#
def processProxyMessage(self, messageIsRequest, message):
self._stdout.println(
("Proxy request to " if messageIsRequest else "Proxy response from ") +
message.getMessageInfo().getHttpService().toString())
#
# getMessageInfo() 此方法检索被拦截请求/响应 的详细信息 返回值为IHttpService对象 其中包含被拦截消息的详细信息
# self._stdout.println(message.getMessageInfo().getHttpService().toString())
# 输出被拦截消息的host 例如:http://127.0.0.1
#
# implement IScannerListener
# 将问题添加到burp scanner的结果时 调用此方法
def newScanIssue(self, issue):
self._stdout.println("New scan issue: " + issue.getIssueName())
# issue扩展程序可以查询Iscanissue对象。以获取有关新问题的详细信息
# getIssueName() 此方法返回问题类型的名称
#
#
# implement IExtensionStateListener
# 卸载扩展时调用此方法
def extensionUnloaded(self):
self._stdout.println("Extension was unloaded")
0x03 以下是插件安装调试结果
1.注册的监听器
2.通过代理工具请求百度查看结果 看到这里有两个请求输出一个是http 一个是代理是因为我们注册了两个监听器 一个是所有http的都监听 另外一个是通过代理工具的监听
如果这里使用重放工具进行请求的话 就只显示一个啦
3.扫描报告监听
4.扩展状态监听 卸载后
最后
以上就是精明啤酒为你收集整理的Python编写Burpsuite插件(二)的全部内容,希望文章能够帮你解决Python编写Burpsuite插件(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复