linux 抓包教程
linux抓捕網絡包
jacky. 1650727278@@q.com
tcpdump是linux命令行下常用的的一個抓包工具,記錄一下平時常用的方式,測試機器系統是centos 7。
tcpdump的命令格式
tcpdump的參數眾多,通過man tcpdump可以查看tcpdump的詳細說明,這邊只列一些筆者自己常用的參數:
tcpdump [-i 網卡] -nnAX ‘表達式’
各參數說明如下:
-i:interface 監聽的網卡。
-nn:表示以ip和port的方式顯示來源主機和目的主機,而不是用主機名和服務。
-A:以ascii的方式顯示數據包,抓取web數據時很有用。
-X:數據包將會以16進制和ascii的方式顯示。
表達式:表達式有很多種,常見的有:host 主機;port 端口;src host 發包主機;dst host 收包主機。多個條件可以用and、or組合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。
下面進行一些命令測試,如果沒有權限,可以先切換成root用戶。
監聽網卡eth0
$ tcpdump -i eth0
這個方式最簡單了,但是用處不多,因為基本上只能看到數據包的信息刷屏,壓根看不清,可以使用ctrl+c中斷退出,如果真有需求,可以將輸出內容重定向到一個文件,這樣也更方便查看。
監聽指定協議的數據
$ tcpdump -i eth0 -nn 'icmp'這個是用來監聽icmp協議的數據,就是ping命令使用的協議。類似的,如果要監聽tcp或者是udp協議,只需要修改上例的icmp就可以了。ping下監聽的機器,輸出如下:
[root@localhost ~]# tcpdump -i eth0-nn 'icmp' tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eno16777736, link-type EN10MB (Ethernet), capture size 65535 bytes ^C 0 packets captured 0 packets received by filter 0 packets dropped by kernel [root@localhost ~]#linux使用tcpdump抓包示例
每一行的各個數據表示的含義:
抓到包的時間 IP 發包的主機和端口 > 接收的主機和端口 數據包內容
監聽指定的主機
這樣的話,192.168.1.231這臺主機接收到的包和發送的包都會被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'這樣只有192.168.1.231這臺主機發送的包才會被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'這樣只有192.168.1.231這臺主機接收到的包才會被抓取。
監聽udp 指定端口
[root@localhost ~]# tcpdump -i eth0 udp -nnA 'port 9899' tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 19:18:09.444195 IP 192.168.1.46.35408 > 255.255.255.255.9797: UDP, length 16 E..,9.@.@.?I.........P&E....{"cmd":"peer"} 19:18:09.444988 IP 192.168.1.13.9797 > 192.168.1.46.35408: UDP, length 159 ....&E.P...9{"cmd":"fnpeer", "ip":"192.168.1.13", "sn":"", "mcode":"", "api":"/ip4/127.0.0.1/tcp/5501", "peerid":"TmNKAc9eV912fxxK8Ge5ZXmB8VgxRREwh9c1swnwJaa6zB8", "err":0} ^C 2 packets captured 2 packets received by filter 0 packets dropped by kernel [root@localhost ~]#上例是用來監聽主機的9797端口收到和發送的所有數據包,結合-A參數,在web開發中,真是非常有用。
監聽指定主機和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'多個條件可以用and,or連接。上例表示監聽192.168.1.231主機通過80端口發送的數據包。
監聽除某個端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'如果需要排除某個端口或者主機,可以使用“!”符號,上例表示監聽非22端口的數據包。
email:1650727278@qq.com 畫筆
總結
以上是生活随笔為你收集整理的linux 抓包教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转】M1卡密钥破解,收藏
- 下一篇: linux过滤端口抓包_Linux下抓包