[github 地址] (https://github.com/hanks-zyh/capturedata)
抓包工具整理
抓包工具 – Charles
基於Java 跨平臺: Linux , Mac OS X, Windows
官網
Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).
以下爲Linux 平臺
安裝
下載 charles-proxy-3.11.2.tar.gz
# 解壓
tar zxvf charles-proxy-3.11.2.tar.gz
# 啓動 charles
./charles/bin/charles
手機抓包
前提:使手機和電腦在一個局域網內,不一定非要是一個ip段,只要是同一個路由下就可以了,比如電腦連接的有線網ip爲192.168.16.12,然後手機鏈接的wifi ip爲192.168.1.103,但是這個有線網和無線網的最終都是來自於一個外部ip,這樣的話也是可以的。
在安卓手機的 設置 -> wlan -> 長按連接的wifi -> 修改網絡 -> 高級選項 -> 代理選手動
, 填入電腦的 ip 和 charles 監聽的 端口(默認爲 8888)
查看電腦端口 :
ifconfig
查看/修改 charles 監聽端口: charles的Proxy -> Proxy Setting
設置好之後Charles彈出確認框,點擊Allow按鈕即可
抓取 https
安裝證書
charles的 Help -> SSL Proxy -> Install charles Root
設置 ssl enable
在需要抓取的 https 鏈接上 右鍵 enable ssl proxy
抓包工具 – mitmproxy
基於python 跨平臺: linux, windows, OSX (Mountain Lion and later)
官網
Mitmproxy是一個基於python的中間人代理的框架。做過滲透測試的肯定很熟悉工具burpsuite或Fiddler,這些工具能夠攔截並修改http或https的數據包,對於分析數據包交互的應用來說是非常有用的。但是這些工具都是整套給我們做好了。比如如果想自己定製一套這樣的工具,添加一些自己需要的功能的話,那麼我想,mitmproxy將是一個比較好的選擇,因爲它提供了一個可供用戶調用的庫libmproxy(注意該庫目前只支持linux系統)。
以下基於Linux臺(Ubuntu14.04)
下載
$ sudo pip install mitmproxy
如果下載速度慢可以下載tar包
啓動
$ mitmproxy -b 192.168.1.29 -p 9999
輸入 ?
查看幫助, q
返回
A accept all intercepted flows
a accept this intercepted flow
b save request/response body
C clear flow list or eventlog
d delete flow
D duplicate flow
e toggle eventlog
F toggle follow flow list
l set limit filter pattern
L load saved flows
m toggle flow mark
n create a new request
P copy flow to clipboard
r replay request
U unmark all marked flows
V revert changes to request
w save flows
W stream flows to file
X kill and delete flow, even if it's mid-intercept
tab tab between eventlog and flow list
enter view flow
| run script on this flow
手機設置好代理,界面上就可以看到請求了
mitmproxy 查看http請求響應
C (大寫)
清除抓包結果
j
k
選擇請求, 回車查看詳細信息
tab
切換 Request 和 Response
m
Display Mode 美化信息
上圖輸入 m,在輸入 s,便可以以json形式展示
e
編輯
Edit request (cookies,query,path,url,header,form,raw body,method)?
Edit response (cookies,code,message,header,raw body)?
mitmproxy攔截 (Intercept)
相當於在客戶端和服務器做中間人,可以修改客戶端請求,修改服務器返回
輸入 i
(代表Intercept filter)即可,此時界面便會讓你輸入想要攔截的條件:
mitmproxy的條件攔截在默認情況下是過濾抓包的URL的。也就是說當你直接輸入要攔截的條件(比如輸入“weibo”),那麼接下來要出現抓包會將匹配的抓包整體變黃:
mitmproxy條件過濾效果
mitmproxy條件攔截效果
這些橘黃色的數據包都代表被攔截了,還未發送給服務器,這個時候你就可以對這些數據包進行修改,我們選擇一個數據包enter進入:
mitmproxy 攔截 選擇數據包
與之前的類似,輸入“e”,進行request編輯模式,然後輸入“h”代表要編輯request的頭部:
mitmproxy 編輯攔截包的頭部
輸入enter便可對高亮的User-Agent的值進行修改,上圖的weibo版本之前是5.0的,被我改成了6.0 。我們還可以對header進行添加屬性,輸入“a”即可,然後使用tab分別鍵入key和value。這裏我添加了“test-test”鍵值對:
mitmproxy 攔截header添加鍵值對
至此,我對攔截的request header已經修改完畢,現在要做的就是我要認可接受這個修改,然後發給服務器。所以我們輸入“a”(代表“accept”)即可,等到服務器響應後,注意,mitmproxy便又了攔截服務器發過來的response(注意那個“Response intercepted”):
mitmproxy 攔截response
現在如果你想修改這個response也可以,方式同上面修改request一樣。這個時候我再輸入“a”,代表我接受了這個response,然後這個response便可發給客戶端了:
mitmproxy 攔截response之後accept
更多類型的mitmproxy攔截
同時mitmproxy還支持不同類型的條件過濾,之前在攔截字符串前面加上特定的參數比如我要攔截所有的POST request怎麼辦?輸入:~m POST 即可(m代表method):
mitmproxy 攔截特定的request 方法
攔截所有的request: ~q
攔截特定的header: ~h
攔截特定的domain: ~d
攔截特定的響應代碼(404之類的): ~c
mitmproxy官方文檔。
抓包工具 – Fiddler
基於C# windows, Linux看這裏 Mono Fiddler
下載
直接下載,安裝即可
手機抓包
抓包工具 – wireshark
跨平臺:Windows,OS X ,Linux