tcpdump教程入門


tcpdump是一個最基本重要的網絡分析工具, 掌握好這, 對於學習tcp/ip協議也是很有幫助的. 理解了tcp/ip協議棧的知識, 分析調優網絡的能力才會更高. 所以使用tcpdump相比其它的工具, 更能幫我們理解協議.

tcpdump的一些命令選項

  1. -n不要轉換一些數值, 比如把80端口轉換成http顯示.
  2. -i需要監控的網卡. 如果不指定, 則監控所有有效的網卡數據.
  3. -c抓取多少個包后自動停止抓取
  4. -s默認是只抓取96bytes的數據, 如果想要抓取更多的數據, 則要通過這指定更大的數值. 比如-s 1500抓取1500byte
  5. -S默認每個包的sequence是顯示相對的值, 如果想顯示絕對值, 通過此選項打開.

過濾表達式

我們抓包時, 一般是有針對性的去關注感興趣的東西, 不然太多的信息會對我們分析數據造成干擾, tcpdump支持過濾語法.

基本用法

host

host指定主機, 可以是ip或者域名.

tcpdump -s0  -i wlan0 host www.baidu.com

上面的功能是抓取本機網卡wlan0上和www.baidu.com這個主機打交道的數據. 其中-s0指定抓取所有數據, 查考前面選項介紹.

dst, src

有時候我們只關心數據流其中一個方向上的數據, 可以通過src: 源端, dst:目的端來指定過濾.

tcpdump  -i wlan0 dst  www.baidu.com

port

指定端口

tcpdump -i wlan0  port 6379

抓取redis的數據.

協議

指定協議數據, 比如: tcp, udp, icmp

tcpdump -i wlan0  tcp and udp

抓取所有的tcp和udp數據包.

高級用法

tcpdump表達式可以支持邏輯組合運算, 提供更強大的功能.

  • and
  • or
  • not

這些和所有開發語言中的語義是一樣的. 下面看一些例子:

# 源主機是192.168.1.34, 並且目標端口是80
tcpdump -i eth0 src 192.168.1.34 and dst port 80
# 所有tcp協議並且端口不是22
tcpdump -i eth0 tcp and not port 22

有時候表達式太復雜了, 我們要進行分組, 即用()把一些表達式組合在一起.

# 源主機是192.168.1.34並且目標端口是22或者3389
tcpdump -i eth0 'src 192.168.1.34 and (dst port 22 or 3389)'

我們還可以通過分析數據包其中的部分數據計算過濾:

# 抓取帶有SYN標志的數據, tcp[13]的意思是從tcp數據包頭中取第14個byte數據, 詳細參考tcp協議頭
sudo tcpdump -i wlan0 'host www.baidu.com and tcp[13]&2!=0'

數據保存和讀取分析

一般在服務器上截取到數據包后, 用於之后的分析, 比如傳到本地機器后用wireshark分析. 可以通過-w選項保存:

tcpdump -i eth0 src www.baidu.com -w file.cap

上面把數據保存到了file.cap文件中

參考: https://danielmiessler.com/study/tcpdump/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM