欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android手機抓包,android app 抓包

如何在 Android 手機上實現(xiàn)抓包

千鋒扣丁學(xué)堂Android開發(fā)為您解答:

創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、金鳳網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為金鳳等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

tcpdump是最快捷方便的抓包方式,還可以加深對網(wǎng)絡(luò)協(xié)議的理解。android下可以通過如下方式抓包:

1 Android上啟動tcpdump

Android設(shè)備可以把tcpdump的可執(zhí)行文件上傳到android設(shè)備上,然后通過mac遠程登錄android設(shè)備運行tcpdump,前提是這臺android設(shè)備必須已經(jīng)root過。步驟如下:

下載android版本的tcpdump為android系統(tǒng)編譯的tcpdump版本。

通過adb將tcpdump上傳到android設(shè)備

通過adb push將tcpdump文件上傳到特定的目錄,這里我們選擇/sdcard/data目錄。

在android設(shè)備上運行tcpdump

通過adb shell登陸設(shè)備,并執(zhí)行tcpdump,最后一步執(zhí)行./tcpdump即可。

2. 分析tcpdump輸出

經(jīng)過上面的步驟成功運行tcpdump之后,接下來就可以分析輸出的網(wǎng)絡(luò)包內(nèi)容了,iOS設(shè)備和Android設(shè)備的輸出是一致的。我們先來解析下幾個基本的格式:

圖中紅色方框內(nèi)的部分是一個ip包的詳細記錄,類似的紀(jì)錄還有好幾條。這里我們著重分析第一條的各部分字段含義。

14:37:41.615018 很簡單,是該包接收到的時間。

17.143.164.37.5223 是發(fā)送方的ip地址及端口號(5223是端口號)。

10.29.44.140.58036 是我android的ip地址及端口號。

Flags [P.]

是tcp包header部分的第14個字節(jié)的P位。這個字節(jié)所包含的幾個flag很重要,后面我會單獨詳細講解。這里P位表示接受方需要馬上將包push到應(yīng)用層。

seq 1:54

tcp包的seq號,1是起始值,54結(jié)束值。tcp之所以被認(rèn)為是流,是因為tcp包所攜帶的每一個字節(jié)都有標(biāo)號(seq號)。1:54表明總共有54個字節(jié)被接受,其中一個字節(jié)是三次握手階段所使用,所以一共發(fā)送的長度是53字節(jié)。

ack 101 tcp包的ack號,ack 101表明seq號為100的字節(jié)已被確認(rèn)收到,下一個期望接收的seq號從101開始。

win 255 win表示的是tcp包發(fā)送方,作為接受方還可以接受的字節(jié)數(shù)。這里win

255表明ip為17.143.164.37的主機還可以接受255個字節(jié)。

options [nop,nop,…] options[…]表示的是該tcp包的options區(qū)域,nop是no

opertion的縮寫,沒什么實際用途,主要是用做padding,因為options區(qū)域按協(xié)議規(guī)定必須是4字節(jié)的倍數(shù)。

options[… TS val 2381386761] ts

val這個值是tcp包的時間戳,不過這個時間戳和設(shè)備的系統(tǒng)時間沒啥關(guān)系,剛開始是隨機值,后面隨著系統(tǒng)時鐘自增長。這個時間戳主要用處是seq序列號越界從0重新開始后,可以確認(rèn)包的順序。

options[… ecr 427050796] ts ecr這個值主要用來計算RTT。比如A發(fā)送一個tcp包給B,A會在包里帶上TS

val,B收到之后在ack包里再把這個值原樣返回,A收到B的ack包之后再根據(jù)本地時鐘就可以計算出RTT了。這個值只在ack包里有效,非ack包ecr的值就為0.

length 53 這個length是應(yīng)用層傳過來的數(shù)據(jù)大小,不包括tcp的header。這個值和我們上面分析的seq 1:54是一致的。

以上就是一個基本的tcp包結(jié)構(gòu),大家可以按照上面的分析再把其他幾個包理解下。我們在做應(yīng)用的時候面對的更多是http協(xié)議,但對一個http請求是怎么通過tcp/ip分解成一個個的packet,然后怎么在網(wǎng)絡(luò)上穩(wěn)定可靠的傳輸,要有個基本的印象。下面我們再看下tcpdump更多的功能,這些功能都是基于對tcp/ip協(xié)議的理解,遇到不理解的建議多google下相關(guān)的技術(shù)概念。

3. tcpdump知識拓展

再繼續(xù)深入tcpdump之前,先貼上一張tcp header格式圖,常看常新。

[]()"

width="1056"

3.1 TCP Flags(tcp header第十四個字節(jié))

我們再仔細看下上面提到的flags概念,flags位于tcp

header的第十四個字節(jié),包含8個比特位,也就是上圖的CWR到FIN。這8個比特位都有特定的功能用途,分別是:CWR,ECE,URG,ACK,PSH,RST,SYN,F(xiàn)IN。

CWR ,ECE 兩個flag是用來配合做congestion

control的,一般情況下和應(yīng)用層關(guān)系不大。發(fā)送方的包ECE(ECN-Echo)為0的時候表示出現(xiàn)了congestion,接收方回的包里CWR(Congestion

Window Reduced)為1表明收到congestion信息并做了處理。我們重點看其他六個flag。

URG

URG代表Urgent,表明包的優(yōu)先級高,需要優(yōu)先傳送對方并處理。像我們平時使用terminal的時候經(jīng)常ctrl+c來結(jié)束某個任務(wù),這種命令產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包就需要urgent。

ACK

也就是我們所熟悉的ack包,用來告訴對方上一個數(shù)據(jù)包已經(jīng)成功收到。不過一般不會為了ack單獨發(fā)送一個包,都是在下一個要發(fā)送的packet里設(shè)置ack位,這屬于tcp的優(yōu)化機制,參見delayed

ack。

PSH Push我們上面解釋過,接收方接收到P位的flag包需要馬上將包交給應(yīng)用層處理,一般我們在http

request的最后一個包里都能看到P位被設(shè)置。

RST Reset位,表明packet的發(fā)送方馬上就要斷開當(dāng)前連接了。在http請求結(jié)束的時候一般可以看到一個數(shù)據(jù)包設(shè)置了RST位。

SYN

SYN位在發(fā)送建立連接請求的時候會設(shè)置,我們所熟悉的tcp三次握手就是syn和ack位的配合:syn-syn+ack-ack。

FIN

Finish位設(shè)置了就表示發(fā)送方?jīng)]有更多的數(shù)據(jù)要發(fā)送了,之后就要單向關(guān)閉連接了,接收方一般會回一個ack包。接收方再同理發(fā)送一個FIN就可以雙向關(guān)閉連接了。

這8個flag首字母分別是:C E U A P R S F。初看難以記憶,我腦洞了下,把它們組合成 supr

cafe,當(dāng)然少了super少了個e,我可以將就下。我們在使用tcpdump的時候會經(jīng)常看到這幾個flag,[S],[P],[R],[F],[.]。其他幾個都好理解,[.]特殊點,是個占位符,沒有其他flag被設(shè)置的時候就顯示這個占位符,一般表示ack。

3.2 tcpdump 更多使用參數(shù)

這部分我們來看下tcpdump常用的一些命令參數(shù)。文章最開始部分的tcpdump命令是這樣的:sudo tcpdump -i rvi0 -AAl。

-i rvi0 -AAl都是屬于參數(shù)部分。常見的有這些:

-i, 要監(jiān)聽的網(wǎng)卡名稱,-i rvi0監(jiān)聽虛擬網(wǎng)卡。不設(shè)置的時候默認(rèn)監(jiān)聽所有網(wǎng)卡流量。

-A, 用ASCII碼展示所截取的流量,一般用于網(wǎng)頁或者app里http請求。-AA可以獲取更多的信息。

-X,用ASCII碼和hex來展示包的內(nèi)容,和上面的-A比較像。-XX可以展示更多的信息(比如link layer的header)。

-n,不解析hostname,tcpdump會優(yōu)先暫時主機的名字。-nn則不展示主機名和端口名(比如443端口會被展示成https)。

-s,截取的包字節(jié)長度,默認(rèn)情況下tcpdump會展示96字節(jié)的長度,要獲取完整的長度可以用-s0或者-s1600。

-c,只截取指定數(shù)目的包,然后退出。

-v,展示更多的有用信息,還可以用-vv -vvv增加信息的展示量。

src,指明ip包的發(fā)送方地址。

dst,指明ip包的接收方地址。

port,指明tcp包發(fā)送方或者接收方的端口號。

and,or,not,操作法,字面意思。

上面幾個是我個人比較常用的,更多的參數(shù)可以參考這個詳細文檔。有興趣的可以分析下面幾個例子練習(xí)下:

tcpdump ‘tcp[13] 16!=0’

tcpdump src port 80 and tcp

tcpdump -vv src baidu and not dst port 23

tcpdump -nnvvS src 192.0.1.100 and dst port 443

4. 用tcpdump分析http完整請求

說了這么多,我們再來實戰(zhàn)下,看一個完整的http請求流程。sudo tcpdump -i rvi0 -AAl src 60.28.215.123 or

dst 60.28.215.123

列出了6個前面的packet,10.29.44.240是我android的ip地址,60.28.215.123是知乎server的ip地址,紅色方框內(nèi)是android發(fā)出的packet,白色方框內(nèi)是server發(fā)出的packet。packet1是android三次握手的第一個syn包,packet2是server

ack+syn的包,packet3是android ack的包。這3個packet之后tcp的三次握手就完成了。

packet4是android發(fā)出的http

request。長度只有240個字節(jié),所以一個packet就發(fā)過去了,當(dāng)然還設(shè)置了flags的P位,request需要馬上被應(yīng)用層處理。包里面出現(xiàn)了spdy,點贊。

packet5是server ack剛收到的包,長度位0,所以這僅僅是一個ack包。

packet6是server返回http的response了,1388個字節(jié)。packet5和packet6都ack了seq為241的包,當(dāng)然是為了增加ack的成功率。

中間還有好幾個packet就不仔細分析了,最后再看下請求完成的最后幾個包:

最后兩個packet比較簡單,android發(fā)送個FIN+ACK的包就斷開連接了,server直接發(fā)送了一個RST包后也斷開連接了。

如何用Fiddler對Android應(yīng)用進行抓包

用Fiddler對Android應(yīng)用進行抓包的方法:

1、啟動Fiddler,打開菜單欄中的 Tools Fiddler Options,打開“Fiddler Options”對話框。

2、在Fiddler Options”對話框切換到“Connections”選項卡,然后勾選“Allow romote computers to connect”后面的復(fù)選框,然后點擊“OK”按鈕,記住代理端口號(注意,此界面中的端口號可修改為你喜歡的,建議保持默認(rèn))。

3、設(shè)置完成后,重啟Fiddler

4、在本機命令行輸入:ipconfig,找到本機的ip地址。

5、打開android設(shè)備的“設(shè)置”-“WLAN”,找到你要連接的網(wǎng)絡(luò),在上面長按,然后選擇“修改網(wǎng)絡(luò)”,彈出網(wǎng)絡(luò)設(shè)置對話框,然后勾選“顯示高級選項”。

6、在“代理”后面的輸入框選擇“手動”,在“代理服務(wù)器主機名”后面的輸入框輸入電腦的ip地址,在“代理服務(wù)器端口”后面的輸入框輸入8888,然后點擊“保存”按鈕。

7、然后啟動android設(shè)備中的瀏覽器,訪問百度的首頁,在fiddler中可以看到完成的請求和響應(yīng)數(shù)據(jù)。

Android root 手機抓包

1.首先手機得先root

2.執(zhí)行adb shell

執(zhí)行su?

3.如果手機/data目錄有讀寫權(quán)限 直接執(zhí)行?adb push /Users/p-dev/Downloads/tcpdump /data/local/tcpdump

如果手機目錄沒有權(quán)限報錯adb push permission denied

那就執(zhí)行chmod -R 777 /data/local/tcpdump 獲取權(quán)限后再執(zhí)行??adb push /Users/p-dev/Downloads/tcpdump /data/local/tcpdump

4.然后執(zhí)行adb shell?

執(zhí)行su

執(zhí)行/data/local/tcpdump -p -vv -s 0 -w /sdcard/ThinkDrive.pcap把抓包文件保存到手機sd中

Android 配置Fiddler抓包

將瀏覽器的代理設(shè)置成Fiddler能夠?qū)崿F(xiàn)Fiddler抓取瀏覽器的請求。同理,Android手機配置Fiddler作為代理服務(wù)器,從而讓Fiddler能夠截獲Android的流量來實現(xiàn)抓包。

可以通過ipconfig命令等查看,最簡單的就是將鼠標(biāo)移到Fiddler窗口右上角的online字樣上面,會自動提示當(dāng)前電腦IP地址。

比如,我當(dāng)前PC IP地址為172.20.224.63

打開Fiddler上Tools--Options,選擇Connections選項卡,可以查看到代理端口地址。默認(rèn)為8888。你可以自行配置成其他端口號。

還有,請勾選“Allow remote computers to connect”(這是允許Android手機通過代理進行網(wǎng)絡(luò)訪問)。

手機連接和PC位于同一局域網(wǎng)的wifi,連接成功后,進入到高級選項中。(不同手機有不同的進入方法,早期手機是長按已經(jīng)連接上的wifi,現(xiàn)在有些手機直接提供了進入配置的箭頭按鈕。)

將代理服務(wù)器主機名修改為第一步獲取的IP地址,端口號為第一步獲取的端口號。然后保存。

以上配置OK,打開手機進行網(wǎng)絡(luò)訪問吧,看看Fiddler上有沒有HTTP請求包。

實際測試,如果發(fā)現(xiàn)沒有數(shù)據(jù)包,你需要檢查Fiddler是否打開,是否允許遠程電腦訪問,以及端口號和IP地址是否配置正確,然后重啟試試看(重啟Fidder、手機重連Wifi,重新配置等)。

以上配置的僅僅是抓取HTTP請求,對于HTTPS請求,你還是看不到。下面介紹下,HTTPS抓包配置。

HTTPS也是需要通過Fiddler代理來抓取的,所以呢,前面的配置代理的過程不變。下面介紹其他涉及到證書安裝方面的。

打開Tools-Options,選擇HTTPS選項卡,按照下圖進行勾選。

PC上安裝好了根證書之后,還需要在手機上安裝根證書,才能保證Fiddller能夠正確解析出HTTPS包。(原理是,手機通過Fiddler做了代理后,HTTPS請求進行握手時候獲取的證書就是Fiddler自己生成的證書,這個證書在手機上默認(rèn)不受信任,這樣會導(dǎo)致手機端認(rèn)為服務(wù)端非法從而斷開HTTPS握手,導(dǎo)致請求失敗。所以,我們需要讓手機信任Fiddler的根證書。)

手機在配置好HTTP代理后,打開瀏覽器,輸入: 。實際上 ipv4.fiddler 會引導(dǎo)到Fiddler所在PC的IP地址上。所以,你輸入;pc ip:port也是可以的。(題外話, ipv4.fiddler 這個域名不是外網(wǎng)通用域名,你知道為啥會正確解析不?猜想是Fiddler自己提供了本地DNS解析服務(wù))

OK,以上是所有的配置。

配置成功后,觀察Fiddler,手機進行一些操作,看看HTTPS的請求能解析不。如果你遇到下面的異常:

很大可能是由于手機上沒有安裝Fiddler的根證書。當(dāng)然,還有例外,如果手機Android系統(tǒng)為7.0以上,即便安裝了Fiddler的根證書,也會出現(xiàn)這個異常。原因請參考

使用Charles對Android 進行HTTP抓包

?官方介紹:Charles讓開發(fā)者能夠直觀地瀏覽機器客戶端和互聯(lián)網(wǎng)之間的通信數(shù)據(jù),包括客戶端發(fā)送的請求數(shù)據(jù)、服務(wù)端返回的響應(yīng)數(shù)據(jù)以及HTTP頭部。

?除了官方介紹,對于Android開發(fā)來說,Charles還有一個非常實用的功能。Charles能將某個接口的服務(wù)端響應(yīng)數(shù)據(jù)保存到本地電腦上,然后將請求映射到本地,下次再請求這個接口時,手機端收到的response就是已經(jīng)保存在本地的數(shù)據(jù)。而我們可以隨意修改本地數(shù)據(jù),也就是說,可以讓客戶端接收到任意我們想給的數(shù)據(jù)。

配置好網(wǎng)絡(luò)代理才能讓手機端的請求被Charles捕獲到。

?配置好了之后,就能在Charles看到手機端與服務(wù)器之間的數(shù)據(jù)交互了。在Request中能看到手機端發(fā)送的請求數(shù)據(jù),在Response中能看到服務(wù)端返回給手機的數(shù)據(jù)。

也就是上面說的請求映射,使用方法:

?然后,下次手機再請求這個接口時,返回的就是本地Response里的數(shù)據(jù)了。這時候就可以愉快地修改本地Response數(shù)據(jù),想要返回什么數(shù)據(jù)就有什么數(shù)據(jù)。

edge:H5抓包 (android)

1、卸載安裝edge:并輸入地址: edge://inspect/#devices

2、USB連接手機,并手機和電腦使用WiFi連接同一個ssid,以使手機和電腦在同一個網(wǎng)絡(luò);

3、手機設(shè)置:1)打開開發(fā)人員選項? ? ?2)進入開發(fā)人員選項,并開啟USB調(diào)試? ? 3)進入開發(fā)人員選項,設(shè)置USB配置為RNDIS

4、開始抓包:手機打開app 的H5頁面,在edge中就能看到抓到的包;

本文題目:android手機抓包,android app 抓包
當(dāng)前網(wǎng)址:http://chinadenli.net/article46/dsgdihg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)網(wǎng)站收錄建站公司網(wǎng)站導(dǎo)航靜態(tài)網(wǎng)站標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)