高手的存在,就是让服务10亿人的时候,你感觉只是为你一个人服务......

Linux系统抓包-tcpdump与tcpflow

目录
  1. 1. tcpdump
    1. 1.1. tcpdump的命令格式
    2. 1.2. 监听网卡eth0
    3. 1.3. 监听指定协议的数据
    4. 1.4. 监听指定的主机
  2. 2. tcpflow

平时抓包用的最多的是wireshark和httpwatch,
如果想在linux服务器上抓包,比较常用tcpdump,tcpflow命令,tcpdump对http包的抓取支持不好,tcpflow的http的抓取表现不错

tcpdump

tcpdump的命令格式

tcpdump [-i 网卡] -nnAX ‘表达式’ 各参数说明如下:
-i:interface 监听的网卡。
-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。
-A:以ascii的方式显示数据包,抓取web数据时很有用。
-X:数据包将会以16进制和ascii的方式显示。 表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。

监听网卡eth0

tcpdump -i eth0

监听指定协议的数据

tcpdump -i eth0 -nn ‘icmp’

这个是用来监听icmp协议的数据,就是ping命令使用的协议。
类似的,如果要监听tcp或者是udp协议,只需要修改上例的icmp就可以了

监听指定的主机

tcpdump -i eth0 -nn ‘host 192.168.43.59’

这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。

tcpdump -i eth0 -nn ‘src host 192.168.43.59’

这样只有192.168.43.59这台主机发送的包才会被抓取。

tcpdump -i eth0 -nn ‘dst host 192.168.43.59’

这样只有192.168.43.59这台主机接收到的包才会被抓取。

监听指定端口

tcpdump -i eth0 -nnA ‘port 80’

用来监听主机的80端口收到和发送的所有数据包。

监听指定主机和端口
tcpdump -i eth0 -nnA ‘port 80 and src host 192.168.43.59’
多个条件可以用and,or连接。
上例表示监听192.168.43.59主机通过80端口发送的数据包。

tcpflow

一般情况操作系统不会自带tcpflow,下载一个
tcpflow下载

安装啥的就不说了,主要看一下抓取包的内容

tcpflow -i eth0 host ‘192.168.17.39’

他会生成很多文件:
Alt text

打开看看:
Alt text

是不是和浏览器查看的差不多!