⑴ tcpmp常用的抓包命令
做OTT-IP TV這一行的,遇到問題經常需要抓網路包,tcpmp就是一個很好用的工具。如果不會tcpmp出門都不並銷好意思打招呼。
別看tcpmp有很多的選項,其實常用的也就那麼幾個,比如
tcpmp -i 網路介面 -s 網路數據包長度 -w 文件名
-i: 後面是網卡名。一般有eth0,eth1等網卡名,可以用ifconfig來查看你的設備上有哪些網卡名。
-s: 要抓取的網路包長度。我喜歡寫0,舉洞這就表示抓取完整長度的網路包,一個也不落下。
-w: 表示要將抓取絕答游到的網路包寫入一個文件,將來可以用wireshark這款網路包分析軟體打開查看。
⑵ TCPDUMP 抓包 怎麼查看 抓的包的內容
1、tcpmp檢測登錄linux系統輸入tcpmp,如果找不到表示沒有安裝。也可以用rpm查詢。
⑶ 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 手冊。
⑷ 在linux命令行環境下如何抓取網路數據包
眾所周知,在Windows下開發運行環境下,在調試網路環境時,可以可以很方便的藉助wireshark等軟體進行抓包分析;並且在linux或者Ubuntu等桌面版里也可以進行安裝抓包工具進行抓包分析,但總有一些情況,無法直接運用工具(比如一些沒有界面的linux環境系統中),則此時我們就需要使用到最簡單的tcpmp命令進行網路抓包。
一般的,linux下抓包時,抓取特定的網路數據包到當前文件夾下的文件中,再把文件拷貝出來利用Windows下的wireshark軟體進行分析。
tcpmp命令詳解:(簡單舉例)
1、抓取到的文件為filename.cap,然後將此文件拷貝到Windows下,使用wireshar打開後,即可對此文件進行分析。
2、eth0 是主機的網路適配器名稱,具體的參數值可以在linux命令行窗口中通過 ifconfig 指令查詢。
⑸ 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的服務埠。
⑹ 應用抓包之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。