# 插件代码
from burp import IBurpExtender
from burp import IHttpListener
from burp import IHttpRequestResponse
from burp import IResponseInfo
from burp import IRequestInfo
from burp import IHttpService
import re
import json
# Class BurpExtender (Required) contaning all functions used to interact with Burp Suite API
RE=[
'^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$', # SHENFENZHENG
'^[1]([3-9])[0-9]{9}$', # TELPHONE
'^([a-zA-z]|[0-9]){5,17}$', #PassportNumberReg
'^([A-Z]\d{6,10}(\(\w{1}\))?)$', # Hk card
'^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$', #TWCard
'(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)', #isAccountCard
]
class BurpExtender(IBurpExtender, IHttpListener):
# define registerExtenderCallbacks: From IBurpExtender Interface
def registerExtenderCallbacks(self, callbacks):
# keep a reference to our callbacks object (Burp Extensibility Feature)
self._callbacks = callbacks
# obtain an extension helpers object (Burp Extensibility Feature)
# http://portswigger.net/burp/extender/api/burp/IExtensionHelpers.html
self._helpers = callbacks.getHelpers()
# set our extension name that will display in Extender Tab
self._callbacks.setExtensionName("find JSON callback")
# register ourselves as an HTTP listener
callbacks.registerHttpListener(self)
def returnjson(self,myjson):
try:
json_object = json.loads(myjson)
except ValueError,e:
return False
return json_object
def reCheck(self,strs):
for pattern in RE:
if re.findall(pattern,strs):
return True
return False
# define processHttpMessage: From IHttpListener Interface
def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
if toolFlag == 64 or toolFlag == 16 or toolFlag == 8 or toolFlag == 4:
# if not messageIsRequest:
response = messageInfo.getResponse()
if response!=None:
analyzedResponse = self._helpers.analyzeResponse(response) # returns IResponseInfo
response_StatusCode = analyzedResponse.getStatusCode()
response_headers = analyzedResponse.getHeaders()
response_bodys = response[analyzedResponse.getBodyOffset():].tostring()
resquest = messageInfo.getRequest()
analyzedRequest = self._helpers.analyzeResponse(resquest)
request_header = analyzedRequest.getHeaders()
request_bodys = resquest[analyzedRequest.getBodyOffset():].tostring()
if response_StatusCode==200:
if len(response_bodys)!=0:
jsonObj=self.returnjson(response_bodys)
if jsonObj:
if isinstance(jsonObj,list): # instance of list
for line in jsonObj:
for k,v in line.items():
try:
s=v.encode('utf8')
except Exception,e:
s=str(v)
if self.reCheck(s):
print 'found!!!!',request_header,s
else: # instance of dict
for k,v in jsonObj.items():
try:
s=v.encode('utf8')
except Exception,e:
s=str(v)
if self.reCheck(s):
print 'found!!!!',request_header,s
# 展示

# git仓库
(见:burpsuit_sensive)
← Q&A 多进程高并发暴力破解 →