當前位置:
首頁 > 新聞 > 使用Burpsuite代理和pypcap抓包進行搶紅包的嘗試

使用Burpsuite代理和pypcap抓包進行搶紅包的嘗試

*本文原創作者:whoisyourdaddy,屬Freebuf原創獎勵計劃,轉載請註明來自FreeBuf


起因

年底各廠陸續舉辦年會,年會期間自然少不了紅包,只不過我廠年底搞了個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。


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
』 %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
』 % repr(request)


burpsuite

代理和PyPcap

抓包

啟動burpsuite,設置手機wifi代理指向burpsuite。

運行編寫好的抓包腳本,等待APP啟動抓包,所有源地址和目的地址為指定IP的數據包將被捕獲,效果圖如下:


構造請求等待搶紅包

一旦檢測到源地址為伺服器地址,且內容包含參數packetId,獲取該參數值,使用當前時間作為requestTm,隨後構造請求第一時間提交進行搶紅包。以下是構造請求的方法。


def post_do(packetId):

currenttime= time.strftime(『%Y%m%d%H%M%S』,time.localtime(time.time()))

requrl = 『http://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進行實時網路數據監聽。至於搶了多少紅包,大家都懂的,畢竟月餅可不是那麼好搶的。


*本文原創作者:whoisyourdaddy,屬Freebuf原創獎勵計劃,轉載請註明來自Freebuf


您的贊是小編持續努力的最大動力,動動手指贊一下吧!


本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

安全廠商間真的能「數據共享,協同合作」嗎?
阿里云云盾Web應用防火牆深度測評

TAG:FreeBuf |

您可能感興趣

使用Bluemix進行chatbot的開發總結
Golang使用pprof和qcachegrind進行性能監控
使用 Burp Infiltrator 進行漏洞挖掘
把編譯安裝的httpd 實現服務腳本,通過service和chkconfig 進行管理
Minikube:使用 Kubernetes 進行本地開發
symfony中使用NelmioApiDocBundle進行API管理
《Unpretty Rapstar3》Miryo與Wa$up成員Nada將進行1對1對決
真正的忍者鞋adidas Consortium x The Good Will Out將酷黑進行到底~
John Mayer將Supreme x Louis Vuitton Box Logo T-Shirt 進行DIY
教你如何使用分組密碼對shellcode中的windows api字元串進行加密
Google添加Personal篩選選項 允許用戶通過Gmail和Photos進行搜索
Dolce & Gabbana 將真實進行到底
BiologicTx宣佈其配對捐贈軟體BiologicTx MatchGrid進行國際擴展
使用 scikit-learn 進行 KMeans 文本聚類
adidas x Parley for the Oceans 將保護海洋進行到底!
Yashica 全新 digiFilm Camera Y35 正式進行集資
吃草進行式——攝影:Johann Smari Karlsson
WordPress 棄用 React,並將進行重寫
Collin County不交toll road bill將不能進行車輛註冊