tcpdump是ubuntu默认安装的协议转包工具,它必须在root权限下进行。它支持很多的参数,如指定接口,协议等,还可以用于过滤信息。直接使用tcpdump默认抓取所有的协议包,信息过多时很难找到需要的信息,这时可以使用过滤器滤除不必要的信息。
tcpdump的命令格式为:
tcpdump –c [s数量] [-F文件名] [-i 文件名] [-r文件名] [-w 文件名][表达式]
-a 将网络地址和广播地址转变成名字
-d 将匹配信息包的代码以人们能够理解的汇编格式给出
-dd 将匹配信息包的代码以C语言程序的格式给出
-c count tcpdump在接收到count个数据包后退出
-C file-size 在接受一定大小的数据后退出
-D 打印系统中所有tcpdump可以在其上进行抓包的网络接口
-e 每行的打印输出中将包含数据包的数据链路层头部信息
-n 不对地址进行数字表示到名字表示的转换
-t 在每行输出中不打印时间戳
-tt 不对每行输出的时间进行格式处理
-v 当分析和打印的时候,产生详细的输出
-w 把包数据直接写入文件而不进行分析和打印输出
-s 数据包的截取长度,默认长度为60
tcpdump过滤器
1. tcpdump 加上关键字host,port host后指定IP以表明主机,port用于指明端口 port 80是指端口80
2. tcpdump 加上src,dst,dst or src,dst and src src后接源IP地址,dst后接目的IP地址,如果不加这些关键字,默认为dst or src
3. tcpdump 加上tcp,ip,udp等关键字,表明要抓取的协议包
4. tcpdump 后还可以加上! and or 等关键字,如tcpdump –i eth0 host hostname and src port 80 指定了源端口为80
tcpdump –i eth0 host !hostname 表示不抓取hostname的数据包
tcpdump抓取的数据包保存为.cap文件,就可以用wireshark进行分析了。