引言
wireshark是一款非常不错的抓包软件,在图形化界面占绝对统治地位;尽管其在字符界面下有些许选项可供使用,但终究不太方便,下面我再介绍一款NB的终端抓包工具 tcpdump
1、混杂模式
linux的网卡有混杂模式一说,当开启混杂模式后,网卡可以抓取所有的数据包,不管这个包是不是发给自己或自己发出的。由于随意截取别人的数据包存在一定安全问题,因此linux对于网卡默认是关闭混杂模式的,切只有root用户能够开启网卡混杂模式,开启方式:
ifconfig ethX promisc
2、常用选项
参数 | 参数说明 | 样例 |
-D | 查看可通过哪些网卡抓包 | |
-i name | 指定通过该name网卡抓包 | tcpdump -i eth0 tcpdump -i any |
-w file | 将抓取的包存入file文件中(该文件可被wireshark使用),默认打印到终端 | tcpdump -i eth0 -w packet.pcap |
-r file | 读取前面抓取的包,将其作为输入 | tcpdump -r file |
-s length | 抓取数据包的长度,默认68个字节;设置为0,表示抓取全部数据 | |
-c count | 抓取的数据包个数 | |
-t | 不显示时间戳 | |
-S | 打印绝对的sequence number | |
-x/-xx | 按HEX打印每个包的头信息/包含链路信息 | |
-n | 不要将ip转换为主机名 | |
-nn | 不要转换ip与端口为对应的名字 | tcpdump -nnSs 0 tcp port ! 22 |
-e | 显示链路层信息,默认不显示 | |
-F file | 过滤条件从file文件内容获取,命令行内容忽略 | |
-X/-XX | 按HEX与ASCII打印每个包的头部信息/包含链路信息 | |
-C file_size | 指定每个文件最大长度为30M,与 -W一起使用 | tcpdump -i eth0 -C 30 -W 50 -w /tmp/net.pcap |
-W filecount | 指定最多生成50个文件,与-C一起使用 | tcpdump -i eth0 -C 30 -W 50 -w /tmp/net.pcap |
3、过滤器
3.1、host
指定主机或网络抓取,可用ip或域名或网段
tcpdump host 192.168.12.1 tcpdump net 192.168.12.0/24
也可以设置源或则目的端
tcpdump [src|dst] host 192.168.12.1
指定抓取多个ip的包,不能加方向,如src或dst
tcpdump host 10.27.82.223 and \(10.27.82.222 or 10.27.82.221\)
排除方式指定目标
tcpdump ip net 192.168.12.0/24 and ! 192.168.12.3
3.2、port / portrange
指定端口/端口范围(0-1024)与主机,可同时指定方向
tcpdump tcp [src|dst] port 23 and [src|dst] host 192.168.12.1
排除某个端口的数据包
tcpdump tcp port ! 22
3.3、循环覆盖抓取网络包,存储到30个文件中,每个文件最大50M
tcpdump -i eth0 -C 30 -W 50 -w /tmp/net.pcap
4、高级特性
4.1、指定数据包标志位
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0' #获取开始或则结束的数据包 tcpdump 'tcp[tcpflags] & (tcp-fin) != 0' #获取连接结束的数据包 tcpdump 'tcp[tcpflags] & (tcp-syn) != 0' #获取连接开始的数据包 tcpdump -AXtnni eth0 'src host 192.168.12.1 and dst port 9876 and tcp[((tcp[12:1] & 0xf0) >> 2):4]=0x47455420' #获取GET请求数据
5、输出结果
打印格式:
系统时间 来源主机.端口 > 目标主机.端口 数据包参数
eg:20:09:53.584715 IP 100.109.225.128.30207 > 10.27.82.228.443: Flags [R.], seq 241841040, ack 631822021, win 58, options [nop,nop,TS val 144058912 ecr 3829113521], length 0
6、问题
加上-C选项后提示“Permission denied”
解决办法是,加上 "-Z root"
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。