使用Burpsuite代理和Pypcap抓包测试工具进行抢红包的尝试代码
晓晓 2018-03-05 来源 :网络 阅读 1457 评论 0

摘要:年底各厂陆续举办年会,年会期间自然少不了红包,只不过我厂年底搞了个APP专门进行抢红包,国际惯例,手快有,手慢无。于是萌生了利用脚本尝试抢红包的想法。

使用Burpsuite代理和Pypcap抓包进行抢红包的尝试

起因

  年底各厂陆续举办年会,年会期间自然少不了红包,只不过我厂年底搞了个APP专门进行抢红包,国际惯例,手快有,手慢无。于是萌生了利用脚本尝试抢红包的想法。

  APP分析

  APP是利用弹幕的形式将红包,交流信息展现在公屏上,所有人看到红包都可以去点,手快的人将获得红包。利用burpsuite代理获取抢红包的请求。

  

POST /usr/urm/v1/getPacket.do HTTP/1.1
  [...]{“termId”:[],”appVersion”:”1.0.0″,”termTyp”:”IOS”,”channelId”:[],”osVersion”:”10.2″,”deviceId”:”abc”,”clientId”:”eeeeeeeee”,”packetId”:”201701122218100057″,”requestTm”:”20170112221811″,”tokenId”:[],”usrNo”:[]}

  抢红包需要对应的红包标识packetId,是由毫秒级的时间戳生成的红包标识。在红包未抢完之前,抢红包的时间requestTm的接近程度则决定是否可以抢到红包。只需要第一时间构造请求便能妥妥的抢到红包。构造请求的关键是packetId,问题是如何获取?查看所有的burpsuite请求未发现下发的packetId。

  用wireshark试试,发现了packetId。

使用Burpsuite代理和Pypcap抓包测试工具进行抢红包的尝试代码

PyPcap简介

  Python上的抓包模块,可以设置过滤器实时抓取网络数据包,配合dpkt模块可以完成对网络数据包的分析。建议在linux下安装,win上较复杂,这里使用kali linux运行如下命令即可,也可以从这里获取PyPcap。

  apt-get install libpcap-dev
  pip install pypcap

  监听指定IP数据包

import pcap
import dpkt
import datetime
import socket
from dpkt.compat import compat_ord
pc=pcap.pcap(‘eth0′)    #参数可为网卡名,如eth0
pc.setfilter(‘src host 192.168.2.5 or dst host 192.168.2.5′)    #设置监听过滤器,这里指定ip
def mac_addr(address): #转换mac地址为字符串
return ‘:’.join(‘%02x’ % compat_ord(b) for b in address)
def inet_to_str(inet): #转换ip地址为字符串
try:
return socket.inet_ntop(socket.AF_INET, inet)
except ValueError:
return socket.inet_ntop(socket.AF_INET6, inet)
for timestamp,buf in pc:    #timestamp为收到时间,buf为收到数据
eth=dpkt.ethernet.Ethernet(buf)
if not isinstance(eth.data, dpkt.ip.IP):# 确认包含ip数据包
print ‘Non IP Packet type not supported %s\n’ %eth.data.__class__.__name__
continue
ip = eth.data
if isinstance(ip.data, dpkt.tcp.TCP):# tcp数据包
tcp = ip.data
try:    #解析http请求
request = dpkt.http.Request(tcp.data)
except (dpkt.dpkt.NeedData, dpkt.dpkt.UnpackError):
continue
#获取数据包信息并打印
do_not_fragment = bool(ip.off & dpkt.ip.IP_DF)
more_fragments = bool(ip.off & dpkt.ip.IP_MF)
fragment_offset = ip.off & dpkt.ip.IP_OFFMASK
print ‘Timestamp: ‘, str(datetime.datetime.utcfromtimestamp(timestamp))
print ‘Ethernet Frame: ‘, mac_addr(eth.src), mac_addr(eth.dst), eth.type
print ‘IP: %s -> %s   (len=%dttl=%d DF=%d MF=%d offset=%d)’ % \
(inet_to_str(ip.src),inet_to_str(ip.dst), ip.len, ip.ttl, do_not_fragment, more_fragments,fragment_offset)
print ‘HTTP request: %s\n’ % repr(request)

  burpsuite代理和PyPcap抓包

  启动burpsuite,设置手机wifi代理指向burpsuite。

使用Burpsuite代理和Pypcap抓包测试工具进行抢红包的尝试代码

运行编写好的抓包脚本,等待APP启动抓包,所有源地址和目的地址为指定IP的数据包将被捕获,效果图如下:

使用Burpsuite代理和Pypcap抓包测试工具进行抢红包的尝试代码

 构造请求等待抢红包

  一旦检测到源地址为服务器地址,且内容包含参数packetId,获取该参数值,使用当前时间作为requestTm,随后构造请求第一时间提交进行抢红包。以下是构造请求的方法。

def post_do(packetId):
currenttime= time.strftime(‘%Y%m%d%H%M%S’,time.localtime(time.time()))
requrl = ‘//example.com/usr/urm/v1/getPacket.do‘
header= {
’Host’ : ‘example.com’,
’Content-Type’ : ‘application/json’,
’Connection ‘ : ‘close’,
’User-Agent’ : ‘MapSocial/1.0.0 (iPhone; iOS 10.2; Scale/3.00)’,
’Accept’: ‘*/*’,
’Accept-Encoding’ : ‘gzip, deflate’,
’Accept-Language’ : ‘zh-Hans-CN;q=1, en-CN;q=0.9, zh-Hant-CN;q=0.8′,
’Cookie’ : ‘SDJH_JSESSIONID=[]‘
}
body_value = {“termId”:[],”appVersion”:”1.0.0″,”termTyp”:”IOS”,”channelId”:[],”osVersion”:”10.2″,”deviceId”:”abc”,”clientId”:”eeeeeeeee”,”packetId”:packetId,”requestTm”:currenttime,”tokenId”:[],”usrNo”:[]}
body_value_json = json.JSONEncoder().encode(body_value)
request = urllib2.Request(requrl, body_value_json, header)
result = urllib2.urlopen(request).read()
return result

  结束语

  这是针对抢红包APP的一个简单分析过程,思路可能比较简单。主要内容还是利用PyPcap进行实时网络数据监听。至于抢了多少红包,大家都懂的,毕竟月饼可不是那么好抢的。


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试工具频道!


本文由 @晓晓 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程