linux系统下抓包命令是什么呢?下面是具体介绍:
linux系统下抓包命令是:tcpdump。
1、tcpdump命令简介是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系统操作系统(如linux,BSD等)。类Unix系统的 tcpdump 需要使用libpcap这个捕捉数据的库就像 windows下的WinPcap。
2、Tcpdump的形式:
例:tcpdump –i eth0 ’port 1111‘ -X -c 3
-X告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。
tcpdump采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
3、tcpdump的选项介绍
-a :将网络地址和广播地址转变成名字;
-d:将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd :将匹配信息包的代码以c语言程序段的格式给出;
-ddd :将匹配信息包的代码以十进制的形式给出;
-e :在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;
-f :将外部的Internet地址以数字的形式打印出来;
-l :使标准输出变为缓冲行形式;
-n :指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;
-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
-t:在输出的每一行不打印时间戳;
-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv:输出详细的报文信息;
-c :在收到指定的包的数目后,tcpdump就会停止;
-F :从指定的文件中读取表达式,忽略其它的表达式;
-i :指定监听的网络接口;
-p:将网卡设置为非混杂模式,不能与host或broadcast一起使用
-r :从指定的文件中读取包(这些包一般通过-w选项产生);
-w :直接将包写入文件中,并不分析和打印出来;
-s snaplen:snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。
-T :将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
-X:告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。
以上就是小编今天的分享了,希望可以帮助到大家。
Linux 抓包还不会?这篇文章赶紧收藏!
什么是TCPDumpTCPdump,全称dump the traffic on a network,是一个运行在Linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。
tcpdump可以支持的功能:
1、在Linux平台将网络中传输的数据包全部捕获过来进行分析
2、支持网络层、传输层协议等协议捕获过滤;
3、数据发送和接收的主机、网卡和端口等各种过滤捕获数据规则
4、提供and、or、not等语句进行逻辑组合捕获数据包或去掉不用的信息
5、结合wireshark工具分析捕获的报文
TCPDump工具详细演示tcpdump输出内容解释默认输入 tcpdump 这个命令,回车操作之后,它将监视第一个网络接口上所有流过的数据包,一般是 eth0,如下图所示:
21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48
从上面的输出来看,可以总结出:
第一列:时分秒毫秒 21:26:49.013621
第二列:网络协议 IP
第三列:发送方的ip地址 端口号,其中172.20.20.1是 ip,而15605 是端口号 / iZuf65wtzat3ohpxwn7on0Z是主机,ssh是协议 22端口;
第四列:箭头 >, 表示数据流向
第五列:接收方的ip地址 端口号,其中 172.20.20.2 是 ip,而5920 是端口号
第六列:数据包内容,包括Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1,更多标识符大家需要了解TCP协议的标志位。
TCPDUMP详细参数使用1、-i #指定监听网络接口tcpdump -i eth0
默认监听在第一块网卡上,监听所有经过此网卡通过的数据包;但是我们可能关心的数据并不是 eth0 的接口,这时就需要指定端口进行数据包的捕获。
在 tcpdump 后面加一个 -i 的参数,后面跟具体需要捕获的接口名称,就可以抓取经过这个具体接口的所有数据包。
tcpdump -i any 监听所有的网卡接口、用来查看是否有网络流量
2、-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕tcpdump -i eth0 -w tt
报文打印在shell里会太多且不方便查看,我们可以保存成文件;然后通过xftp导出到本地,可以详细查看。
扩展:导出的文件可以设置为cap或者pcap的格式,可以直接用wireshark工具打开;
可以用wireshark工具分析报文具体信息!
3、-r #从文件中读取数据,读取后,我们照样可以使用上述的过滤器语法进行过滤分析。tcpdump -r tt.pcap
这个参数也可以实现“流量回放”的功能,就是把历史上的某一时间段的流量,重新模拟回放出来,用于流量分析。
4、-n:不把ip转化成域名,直接显示 ip避免执行 DNS lookups 的过程,速度会快很多
-nn:不把协议和端口号转化成名字,速度也会快很多。
-N:不打印出host 的域名部分,比如,如果设置了此选现,tcpdump 将会打印'nic' 而不是 'nic.ddn.mil'.
5、-t:在每行的输出中不输出时间-tt:在每行的输出中会输出时间戳
-ttt:输出每两行打印的时间间隔(以毫秒为单位)
-tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)
6、-c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump,停止抓包tcpdump -c 20 -w tt.pcap
解释: 抓满20个报文之后,就停止tcpdump抓包。
7、-C #与 -w FILE 保存文件选项配合使用该选项使得 tcpdump 在把原始数据包直接保存到文件中之前,检查此文件大小是否超过 file-size。如果超过了,将关闭此文件,另创一个文件继续保存原始数据包。新创建的文件名与 -w 选项指定的文件名一致, 但文件名后多了一个数字,该数字会从1开始随着新创建文件的增多而增加。file-size的单位是百万字节(这里指1,000,000个字节,并非1,048,576个字节)。
tcpdump -C 1 -w tt
保存的文件大小不能超过1个单位(百万字节),结果如下图:
这里还可以结合另外一个参数使用:-W,限制一下最多写入多少个文件。
tcpdump -C 1 -W 3 -w abc 指定一个单位后(1MB)就换文件,最多写3个文件,名字是abc0 , abc1, abc2。
8、-s #指定每个包捕获的长度、单位是 byte,而不是默认的262144bytes;如果超过了设定的大小限制,包就会被截断,而在打印行出现[|proto]这种标识,这个proto就是被截断的报文的协议名字。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好(-s 0 使用默认长度262144)。
注意: 不同的tcpdump版本,这个默认抓取的报文的长度不一样。
9、-F 指定使用哪个文件的过滤表达式抓包。此时命令行上的输入过滤规则将被忽略.tcpdump -F filter_rule -c10
这种情况适用于将表达式放置在文件中长期维护。
10、-l #对标准输出进行行缓冲--使标准输出设备遇到一个换行符就马上把这行的内容打印出来。在需要同时观察抓包打印以及保存抓包记录的时候很有用.
比如, 可通过以下命令组合来达到此抓包时保存到文件的同时查看包的内容。
tcpdump -l | tee dat
这命令是使用tee来把tcpdump 的输出同时放到文件dat和标准输出中
tee 功能说明:读取标准输入的数据,并将其内容输出成文件
tcpdump -l > dat1 & tail -f dat1
这个命令是通过重定向操作'>'
11、-A:#以ASCII格式打印出所有的分组并且读取此文件这样可以使读取更加简单,方便使用 grep 等工具解析输出内容
tcpdump -A -r tt2
tcpdump -A | grep baidu
12、-X 表示同时使用十六进制和 ASCII 字符串打印报文的全部数据。这-X和-A两个参数不能一起使用
tcpdump -X -r tt2
13、-e:#在输出行打印出数据链路层的头部信息。默认情况下 tcpdump 不会显示数据链路层信息,使用 -e 选项可以显示源和目的 MAC 地址,以及 VLAN tag 信息。例如:
tcpdump -e -r tt2