盡管Snort之類的工具在篩選通過我們的網路而來的所有內容方面做得非常出色,但有時必須要查看原始資料,為此,我們最好的工具是“ tcpdump”,

使用tcpdump的最基本方法是簡單地發出以下命令:
tcpdump
您可以使用-v選項獲得更多詳細資訊,而-vv可以獲取更多資訊,
有用的選項
假設您已登錄到要管理的遠程計算機,如果您不帶任何選項運行“ tcpdump”,則輸出將被來自您的SSH連接的資料包淹沒,為避免這種情況,只需從輸出中消除埠22:
tcpdump not port 22
您可以使用許多不同的埠來執行此操作:
tcpdump not port 143 and not port 25 and not port 22
如果要進行相反的操作,即僅監視某個埠(這對于除錯網路應用程式非常有用),則可以執行以下操作:
tcpdump port 143
您還可以從網路上的特定主機獲取資料:
tcpdump host hal9000
如果您的計算機具有多個網路介面,則還可以指定要收聽的網路介面:
tcpdump -i eth1
您還可以指定協議:
tcpdump udp
您可以在/ etc / protocols中找到協議串列,
保存輸出以備后用
在某些情況下,您可能希望將輸出重定向到檔案,以便以后可以詳細研究它或使用其他程式來決議輸出,在以下示例中,您仍然可以在將輸出保存到檔案時觀看輸出:
tcpdump -l | tee tcpdump_`date +%Y%m%e-%k.%M`
在上面的示例中,我們可以使用日期和時間來標識每個轉儲,在處理一天中特定時間出現的問題時,這可能會派上用場,
tcpdump還可以選擇將其輸出轉儲為二進制格式,以便以后讀取,要創建一個二進制檔案:
tcpdump -w tcpdump_raw_`date +%Y%m%e-%k.%M`
稍后,您可以讓tcpdump使用以下命令讀取檔案
tcpdump -r tcpdump_raw_YYYMMDD-H.M
您也可以使用ethereal程式打開原始轉儲并解釋它,
tcpdump為我們提供了有關往返于網路的所有資料包的資訊,
將Ethereal與tcpdump一起使用Ethereal
Ethereal是一種也可以用來捕獲網路資料包的工具,安裝后,您可以打開您制作的原始轉儲檔案,
查看正在發生的事情變得相當容易,您可以看到源IP和目標IP以及它是什么型別的資料包,這很容易,然后即可對您可能遇到的網路問題進行故障排除并分析可疑行為,只是為了增加一則軼事,當我撰寫本課并解釋自己的轉儲時,我在個人作業站上看到了一些奇怪的活動,我幾乎每隔固定時間就查詢世界上不同IP的機器上的埠32772,我為埠32772運行了一個特定的轉儲,如下所示:
tcpdump port 32772 -w dump_32772
讀取原始輸出
如您所見,即使從tcpdump讀取所謂的“人類可讀”輸出也可能有點神秘,看下面的示例,我只是從轉儲中選出一個隨機資料包:
17:26:22.924493 IP www.linux.org.www > test.linux.org.34365: P 2845:3739(894) ack 1624 win 9648 <nop,nop,timestamp 326501459 24374272>
我們所擁有的是對https://www.linux.org/的Web服務器請求,時間戳記過后,您會在主機名(即埠80)的末尾注意到.www,這將被發送到發出請求的主機test.linux.org的埠34365,“ P”代表TCP“ oush”功能,這意味著應該立即發送資料,在2845:3739(894)之后的數字中,2845標記第一個資料包的八位位組的編號,數字3739是資料包發送的最后一個位元組的數字加1,數字894是發送的資料包的長度,表示“ ack 1624”的部分是“ acknowledge”的TCP術語-表示該資料包已被接受,下一個預期的資料包編號為1624,之后,我們看到“ win 9648”發送主機正在等待視窗大小為9648個八位位組的資料包,這之后是時間戳,
現在,如果您認為難以解釋,則使用-x選項,它將在十六進制輸出中包含資料包內容,
18:12:45.149977 IP www.linux.org.www > test.linux.org.34536: . 1:1449(1448) ack 487 win 6432 <nop,nop,timestamp 329284215 27156244> 0x0000: 4500 05dc 6a81 4000 4006 493b c0a8 0006 E...j.@[email protected];.... 0x0010: c0a8 0009 0050 86e8 8fa4 1d47 1c33 e3af .....P.....G.3.. 0x0020: 8010 1920 b4d9 0000 0101 080a 13a0 7a77 ..............zw 0x0030: 019e 5f14 4854 5450 2f31 2e31 2032 3030 .._.HTTP/1.1.200 0x0040: 204f 4b0d 0a44 6174 653a 2054 6875 2c20 .OK..Date:.Thu,. 0x0050: 3135
我們可以從輸出中得知這是一個HTTP請求,至于其余的,它不是人類可讀的,但是我們很容易知道這是一個合法的資料包,使用這種格式的另一個好處是,即使我們無法完全解釋此資料包的狀況,也可以將其發送給可能的人,最終,這是未經任何過濾通過網路傳輸的原始資料,
以上就是良許教程網為各位朋友分享的使用tcpdump查看原始資料包,想要了解更多Linux相關知識記得關注公眾號“良許Linux”,或掃描下方二維碼進行關注,更多干貨等著你!
盡管Snort之類的工具在篩選通過我們的網路而來的所有內容方面做得非常出色,但有時必須要查看原始資料,為此,我們最好的工具是“ tcpdump”,

使用tcpdump的最基本方法是簡單地發出以下命令:
tcpdump
您可以使用-v選項獲得更多詳細資訊,而-vv可以獲取更多資訊,
有用的選項
假設您已登錄到要管理的遠程計算機,如果您不帶任何選項運行“ tcpdump”,則輸出將被來自您的SSH連接的資料包淹沒,為避免這種情況,只需從輸出中消除埠22:
tcpdump not port 22
您可以使用許多不同的埠來執行此操作:
tcpdump not port 143 and not port 25 and not port 22
如果要進行相反的操作,即僅監視某個埠(這對于除錯網路應用程式非常有用),則可以執行以下操作:
tcpdump port 143
您還可以從網路上的特定主機獲取資料:
tcpdump host hal9000
如果您的計算機具有多個網路介面,則還可以指定要收聽的網路介面:
tcpdump -i eth1
您還可以指定協議:
tcpdump udp
您可以在/ etc / protocols中找到協議串列,
保存輸出以備后用
在某些情況下,您可能希望將輸出重定向到檔案,以便以后可以詳細研究它或使用其他程式來決議輸出,在以下示例中,您仍然可以在將輸出保存到檔案時觀看輸出:
tcpdump -l | tee tcpdump_`date +%Y%m%e-%k.%M`
在上面的示例中,我們可以使用日期和時間來標識每個轉儲,在處理一天中特定時間出現的問題時,這可能會派上用場,
tcpdump還可以選擇將其輸出轉儲為二進制格式,以便以后讀取,要創建一個二進制檔案:
tcpdump -w tcpdump_raw_`date +%Y%m%e-%k.%M`
稍后,您可以讓tcpdump使用以下命令讀取檔案
tcpdump -r tcpdump_raw_YYYMMDD-H.M
您也可以使用ethereal程式打開原始轉儲并解釋它,
tcpdump為我們提供了有關往返于網路的所有資料包的資訊,
將Ethereal與tcpdump一起使用Ethereal
Ethereal是一種也可以用來捕獲網路資料包的工具,安裝后,您可以打開您制作的原始轉儲檔案,
查看正在發生的事情變得相當容易,您可以看到源IP和目標IP以及它是什么型別的資料包,這很容易,然后即可對您可能遇到的網路問題進行故障排除并分析可疑行為,只是為了增加一則軼事,當我撰寫本課并解釋自己的轉儲時,我在個人作業站上看到了一些奇怪的活動,我幾乎每隔固定時間就查詢世界上不同IP的機器上的埠32772,我為埠32772運行了一個特定的轉儲,如下所示:
tcpdump port 32772 -w dump_32772
讀取原始輸出
如您所見,即使從tcpdump讀取所謂的“人類可讀”輸出也可能有點神秘,看下面的示例,我只是從轉儲中選出一個隨機資料包:
17:26:22.924493 IP www.linux.org.www > test.linux.org.34365: P 2845:3739(894) ack 1624 win 9648 <nop,nop,timestamp 326501459 24374272>
我們所擁有的是對https://www.linux.org/的Web服務器請求,時間戳記過后,您會在主機名(即埠80)的末尾注意到.www,這將被發送到發出請求的主機test.linux.org的埠34365,“ P”代表TCP“ oush”功能,這意味著應該立即發送資料,在2845:3739(894)之后的數字中,2845標記第一個資料包的八位位組的編號,數字3739是資料包發送的最后一個位元組的數字加1,數字894是發送的資料包的長度,表示“ ack 1624”的部分是“ acknowledge”的TCP術語-表示該資料包已被接受,下一個預期的資料包編號為1624,之后,我們看到“ win 9648”發送主機正在等待視窗大小為9648個八位位組的資料包,這之后是時間戳,
現在,如果您認為難以解釋,則使用-x選項,它將在十六進制輸出中包含資料包內容,
18:12:45.149977 IP www.linux.org.www > test.linux.org.34536: . 1:1449(1448) ack 487 win 6432 <nop,nop,timestamp 329284215 27156244> 0x0000: 4500 05dc 6a81 4000 4006 493b c0a8 0006 E...j.@[email protected];.... 0x0010: c0a8 0009 0050 86e8 8fa4 1d47 1c33 e3af .....P.....G.3.. 0x0020: 8010 1920 b4d9 0000 0101 080a 13a0 7a77 ..............zw 0x0030: 019e 5f14 4854 5450 2f31 2e31 2032 3030 .._.HTTP/1.1.200 0x0040: 204f 4b0d 0a44 6174 653a 2054 6875 2c20 .OK..Date:.Thu,. 0x0050: 3135
我們可以從輸出中得知這是一個HTTP請求,至于其余的,它不是人類可讀的,但是我們很容易知道這是一個合法的資料包,使用這種格式的另一個好處是,即使我們無法完全解釋此資料包的狀況,也可以將其發送給可能的人,最終,這是未經任何過濾通過網路傳輸的原始資料,
以上就是良許教程網為各位朋友分享的使用tcpdump查看原始資料包,
本文由博客一文多發平臺 OpenWrite 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/254283.html
標籤:其他
下一篇:STM32 SPI詳解
