❶ tcpmp抓包命令
1、tcpmp:默認啟動。普通情況下,直接啟動tcpmp將監視第一個網路介面上所有流過的數據包。
2、tcpmp -i eth1:監視指定網路介面的數據包,如果不指定網卡,默認tcpmp只會監視第一個網路介面,一般是eth0,下面的例子都沒有指定網路介面。
3、tcpmp host sundown:監視指定主機的數據包。列印所有進入或離開sundown的數據包。
4、tcpmp -i eth0 src host hostname:截獲主機hostname發送的所有數據。
5、tcpmp -i eth0 dst host hostname:監視所有送到主機hostname的數據包。
6、tcpmp tcp port 23 and host 210.27.48.1:如果想要獲取主機210.27.48.1接收或發出的telnet包。
7、tcpmp udp port 123:對本機的udp 123埠進行監視123為ntp的服務埠。
❷ TCPDUMP 抓包 怎麼查看 抓的包的內容
1、tcpmp檢測登錄linux系統輸入tcpmp,如果找不到表示沒有安裝。也可以用rpm查詢。
❸ wireshark抓包命令總結
參考的循環抓包命令,其中的過濾條件需要根據實際情況修改(該命令最多佔用4G的存儲空間,且會在後台持續運行):sudo nohup tcpmp -i [network_interface] port 80 -s 80 -C 80 -W 100 -w /tmp/waf.pcap &
-W filecount . -C file_size . -s 80 snaplen 截取特定的長度
常用排錯過濾條件:
對於排查網路延時/應用問題有一些過濾條件是非常有用的:
tcp.analysis.lost_segment:表明已經在抓包中看到不連續的序列號。報文丟失會造成重復的ACK,這會導致重傳。
tcp.analysis.plicate_ack:顯示被確認過不止一次的報文。大涼的重復ACK是TCP端點之間高延時的跡象。
tcp.analysis.retransmission:顯示抓包中的所有重傳。如果重傳次數不多的話還是正常的,過多重傳可能有問題。這通常意味著應用性能緩慢和/或用戶報文丟失。
tcp.analysis.window_update:將傳輸過程中的TCP window大小圖形化。如果看到窗口大小下降為零,這意味著發送方已經退出了,並等待接收方確認所有已傳送數據。這可能表明接收端已經不堪重負了。
tcp.analysis.bytes_in_flight:某一時間點網路上未確認位元組數。未確認位元組數不能超過你的TCP窗口大小(定義於最初3此TCP握手),為了最大化吞吐量你想要獲得盡可能接近TCP窗口大小。如果看到連續低於TCP窗口大小,可能意味著報文丟失或路徑上其他影響吞吐量的問題。
tcp.analysis.ack_rtt:衡量抓取的TCP報文與相應的ACK。如果這一時間間隔比較長那可能表示某種類型的網路延時(報文丟失,擁塞,等等)。
❹ 應用抓包之tcpmp命令抓包
原料
1.預抓包的App一個(我們以app抓包為例)
2.已配置android sdk
3.分析軟體Wireshark(Windows版)
4.抓包命令:tcpmp
5.模擬器或真機(以模擬器為例,真機需root)
首先我們先配置下環境變數
1.先來個ANDROID_HOME:SDK的路徑,類似於JAVA_HOME。(一勞永逸,以後安裝到別的路徑,改變一下HOME路徑就行)
2.把sdk路徑下的platfrom-tools和tools添加到環境變數
配置好就可以用adb命令了
1.執行tcpmp命令
tcpmp可以將網路中傳送的數據包完全截獲下來提供分析。
以上命令將截獲的數據包保存到sdcard,capture.pcap抓取是數據包,pcap為Wireshark分析文件的後綴。
這時抓包就開始了,在手機上刷新幾下要抓取數據的app。
抓完之後按ctrl+c停止抓包
2.將抓取的數據導出到電腦上(從sdcard導出到電腦上分析)
退出android shell環境(命令行輸入兩次exit),回到Windows環境。
接著執行
導出剛才抓到的文件到電腦d盤。(如果導出失敗,自己手動把抓包數據復制到電腦上)
或者通過DDMS導出到電腦
3.Wireshark打開剛才獲取到的.pcap文件
過濾出http
點擊某一個抓到的http包,可以查看它的詳細信息(自己判斷一下可能是哪個域名)
我們可以看到是get請求
復制出來去請求一下(右鍵->復制->值)
去瀏覽器中請求
再結合app,看看是哪個界面的內容
4.新建個文本文件,保存抓到的借口。例如:
看看請求出來ip地址,順著ip找出所有的api借口
54開頭的就是我要抓的app。
❺ 在linux命令行環境下如何抓取網路數據包
眾所周知,在Windows下開發運行環境下,在調試網路環境時,可以可以很方便的藉助wireshark等軟體進行抓包分析;並且在linux或者Ubuntu等桌面版里也可以進行安裝抓包工具進行抓包分析,但總有一些情況,無法直接運用工具(比如一些沒有界面的linux環境系統中),則此時我們就需要使用到最簡單的tcpmp命令進行網路抓包。
一般的,linux下抓包時,抓取特定的網路數據包到當前文件夾下的文件中,再把文件拷貝出來利用Windows下的wireshark軟體進行分析。
tcpmp命令詳解:(簡單舉例)
1、抓取到的文件為filename.cap,然後將此文件拷貝到Windows下,使用wireshar打開後,即可對此文件進行分析。
2、eth0 是主機的網路適配器名稱,具體的參數值可以在linux命令行窗口中通過 ifconfig 指令查詢。
❻ 應用抓包之Fiddler抓包
tcpmp抓包: 應用抓包之tcpmp命令抓包
1.抓包工具Fiddler(Windows版)
2.真機一個
3.預抓包的App一個(我們以app抓包為例)
Fiddler是位於客戶端和伺服器端的HTTP代理,也是目前最侍模常用的http抓包工具之一 。 它能夠記錄客戶端和伺服器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數據、設置斷點、調試web應用、修改請求的數據,甚至可以修改伺服器返回的數據,功能非常強大,是web調試的利器。
1.打開Fiddler
2.設置埠(Tools->Fiddler Options)使用默認就行
使用1024之後的,0-1023周知埠,一般都是系統和一些與設置的埠,埠1024到49151為注冊埠,分配給用戶進程或應用程序
既然是代理,客戶端的所有請求都要先經過Fiddler
3.讓手機和PC處於同一網路下(連同一WiFi或同一網段即可)
查看PC的IP地址
4.到開手機WiFi設置
進入WiFi詳細信息(不同手機選項可能不同)
手動設置代理(用的手機在高級設置里)
主機名就是PC的IP
埠就是在Fiddler設置的埠
5.刷新一下app要抓數據的頁面
不小心抓了個用WebView的app,尷尬兩秒鍾
發現這個app會獲取手機歸屬地,位置信息等
成功抓到數據
瀏覽器請求一下
6.新建個文本文件,保存抓到的介面。例如:
7.一個個界面去抓,分析老飢緩出介面
抓完記得把手動設肢旦置代理關了,不然有可能上網很慢。
❼ Tcpmp 看這一篇就夠了
tcpmp 是一款強大的網路抓包工具,它使用 libpcap 庫來抓取網路數據包,這個庫在幾乎在所有的 Linux/Unix 中都有。熟悉 tcpmp 的使用能夠幫助你分析調試網路數據,本文將通過一個個具體的示例來介紹它在不同場景下的使用方法。不管你是系統管理員,程序員,雲原生工程師還是 yaml 工程師,掌握 tcpmp 的使用都能讓你如虎添翼,升職加薪。
tcpmp 的常用參數如下:
額外再介紹幾個常用參數:
-A 表示使用 ASCII 字元串列印報文的全部數據,這樣可以使讀取更加簡單,方便使用 grep 等工具解析輸出內容。 -X 表示同時使用十六進制和 ASCII 字元串列印報文的全部數據。這兩個參數不能一起使用。例如:
後面可以跟上協議名稱來過濾特定協議的流量,以 UDP 為例,可以加上參數 udp 或 protocol 17 ,這兩個命令意思相同。
同理, tcp 與 protocol 6 意思相同。
使用過濾器 host 可以抓取特定目的地和源 IP 地址的流量。
也可以使用 src 或 dst 只抓取源或目的地:
使用 tcpmp 截取數據報文的時候,默認會列印到屏幕的默認輸出,你會看到按照順序和格式,很多的數據一行行快速閃過,根本來不及看清楚所有的內容。不過,tcpmp 提供了把截取的數據保存到文件的功能,以便後面使用其他圖形工具(比如 wireshark,Snort)來分析。
-w 選項用來把數據報文輸出到文件:
如果想實時將抓取到的數據通過管道傳遞給其他工具來處理,需要使用 -l 選項來開啟行緩沖模式(或使用 -c 選項來開啟數據包緩沖模式)。使用 -l 選項可以將輸出通過立即發送給其他命令,其他命令會立即響應。
過濾的真正強大之處在於你可以隨意組合它們,而連接它們的邏輯就是常用的 與/AND/&& 、 或/OR/|| 和 非/not/!。
關於 tcpmp 的過濾器,這里有必要單獨介紹一下。
機器上的網路報文數量異常的多,很多時候我們只關系和具體問題有關的數據報(比如訪問某個網站的數據,或者 icmp 超時的報文等等),而這些數據只佔到很小的一部分。把所有的數據截取下來,從裡面找到想要的信息無疑是一件很費時費力的工作。而 tcpmp 提供了靈活的語法可以精確地截取關心的數據報,簡化分析的工作量。這些選擇數據包的語句就是過濾器(filter)!
Host 過濾器用來過濾某個主機的數據報文。例如:
該命令會抓取所有發往主機 1.2.3.4 或者從主機 1.2.3.4 發出的流量。如果想只抓取從該主機發出的流量,可以使用下面的命令:
Network 過濾器用來過濾某個網段的數據,使用的是 CIDR[2] 模式。可以使用四元組(x.x.x.x)、三元組(x.x.x)、二元組(x.x)和一元組(x)。四元組就是指定某個主機,三元組表示子網掩碼為 255.255.255.0,二元組表示子網掩碼為 255.255.0.0,一元組表示子網掩碼為 255.0.0.0。例如,
抓取所有發往網段 192.168.1.x 或從網段 192.168.1.x 發出的流量:
抓取所有發往網段 10.x.x.x 或從網段 10.x.x.x 發出的流量:
和 Host 過濾器一樣,這里也可以指定源和目的:
也可以使用 CIDR 格式:
Proto 過濾器用來過濾某個協議的數據,關鍵字為 proto,可省略。proto 後面可以跟上協議號或協議名稱,支持 icmp, igmp, igrp, pim, ah, esp, carp, vrrp, udp和 tcp。因為通常的協議名稱是保留欄位,所以在與 proto 指令一起使用時,必須根據 shell 類型使用一個或兩個反斜杠(/)來轉義。Linux 中的 shell 需要使用兩個反斜杠來轉義,MacOS 只需要一個。
例如,抓取 icmp 協議的報文:
Port 過濾器用來過濾通過某個埠的數據報文,關鍵字為 port。例如:
截取數據只是第一步,第二步就是理解這些數據,下面就解釋一下 tcpmp 命令輸出各部分的意義。
最基本也是最重要的信息就是數據報的源地址/埠和目的地址/埠,上面的例子第一條數據報中,源地址 ip 是 192.168.1.106,源埠是 56166,目的地址是 124.192.132.54,目的埠是 80。> 符號代表數據的方向。
此外,上面的三條數據還是 tcp 協議的三次握手過程,第一條就是 SYN 報文,這個可以通過 Flags [S] 看出。下面是常見的 TCP 報文的 Flags:
下面給出一些具體的例子,每個例子都可以使用多種方法來獲得相同的輸出,你使用的方法取決於所需的輸出和網路上的流量。我們在排障時,通常只想獲取自己想要的內容,可以通過過濾器和 ASCII 輸出並結合管道與 grep、cut、awk 等工具來實現此目的。
例如,在抓取 HTTP 請求和響應數據包時,可以通過刪除標志 SYN/ACK/FIN 來過濾雜訊,但還有更簡單的方法,那就是通過管道傳遞給 grep。在達到目的的同時,我們要選擇最簡單最高效的方法。下面來看例子。
從 HTTP 請求頭中提取 HTTP 用戶代理:
通過 egrep 可以同時提取用戶代理和主機名(或其他頭文件):
抓取 HTTP GET 流量:
也可以抓取 HTTP POST 請求流量:
注意:該方法不能保證抓取到 HTTP POST 有效數據流量,因為一個 POST 請求會被分割為多個 TCP 數據包。
上述兩個表達式中的十六進制將會與 GET 和 POST 請求的 ASCII 字元串匹配。例如,tcp[((tcp[12:1] & 0xf0) >> 2):4] 首先會確定我們感興趣的位元組的位置[3](在 TCP header 之後),然後選擇我們希望匹配的 4 個位元組。
提取 HTTP 請求的主機名和路徑:
從 HTTP POST 請求中提取密碼和主機名:
提取 Set-Cookie(服務端的 Cookie)和 Cookie(客戶端的 Cookie):
查看網路上的所有 ICMP 數據包:
通過排除 echo 和 reply 類型的數據包使抓取到的數據包不包括標準的 ping 包:
可以提取電子郵件的正文和其他數據。例如,只提取電子郵件的收件人:
抓取 NTP 服務的查詢和響應
通過 SNMP 服務,滲透測試人員可以獲取大量的設備和系統信息。在這些信息中,系統信息最為關鍵,如操作系統版本、內核版本等。使用 SNMP 協議快速掃描程序 onesixtyone,可以看到目標系統的信息:
當抓取大量數據並寫入文件時,可以自動切割為多個大小相同的文件。例如,下面的命令表示每 3600 秒創建一個新文件 capture-(hour).pcap,每個文件大小不超過 200*1000000 位元組:
這些文件的命名為 capture-{1-24}.pcap,24 小時之後,之前的文件就會被覆蓋。
可以通過過濾器 ip6 來抓取 IPv6 流量,同時可以指定協議如 TCP:
從之前保存的文件中讀取 IPv6 UDP 數據報文:
在下面的例子中,你會發現抓取到的報文的源和目的一直不變,且帶有標志位 [S] 和 [R],它們與一系列看似隨機的目標埠進行匹配。當發送 SYN 之後,如果目標主機的埠沒有打開,就會返回一個 RESET。這是 Nmap 等埠掃描工具的標准做法。
本例中 Nmap NSE 測試腳本 http-enum.nse 用來檢測 HTTP 服務的合法 URL。
在執行腳本測試的主機上:
在目標主機上:
向 Google 公共 DNS 發起的出站 DNS 請求和 A 記錄響應可以通過 tcpmp 抓取到:
抓取 80 埠的 HTTP 有效數據包,排除 TCP 連接建立過程的數據包(SYN / FIN / ACK):
通常 Wireshark(或 tshark)比 tcpmp 更容易分析應用層協議。一般的做法是在遠程伺服器上先使用 tcpmp 抓取數據並寫入文件,然後再將文件拷貝到本地工作站上用 Wireshark 分析。
還有一種更高效的方法,可以通過 ssh 連接將抓取到的數據實時發送給 Wireshark 進行分析。以 MacOS 系統為例,可以通過 brew cask install wireshark 來安裝,然後通過下面的命令來分析:
例如,如果想分析 DNS 協議,可以使用下面的命令:
抓取到的數據:
找出一段時間內發包最多的 IP,或者從一堆報文中找出發包最多的 IP,可以使用下面的命令:
cut -f 1,2,3,4 -d '.' : 以 . 為分隔符,列印出每行的前四列。即 IP 地址。
sort | uniq -c : 排序並計數
sort -nr : 按照數值大小逆向排序
本例將重點放在標准純文本協議上,過濾出於用戶名和密碼相關的報文:
最後一個例子,抓取 DHCP 服務的請求和響應報文,67 為 DHCP 埠,68 為客戶機埠。
本文主要介紹了 tcpmp 的基本語法和使用方法,並通過一些示例來展示它強大的過濾功能。將 tcpmp 與 wireshark 進行組合可以發揮更強大的功效,本文也展示了如何優雅順滑地結合 tcpmp 和 wireshark。如果你想了解更多的細節,可以查看 tcpmp 的 man 手冊。