运维
Tcpdump抓包工具
tshark抓包工具
Ansible
Ansible配置
Ansible-远程命令模块( command / script / shell )
Ansible-常用模块
PlayBook
PlayBook-变量
PlayBook-条件/循环
PlayBook-Tags
PlayBook-常用脚本
Ansible-Vault(数据安全)
Ansible-API
Ansible实践
JMeter测试软件
JMeter性能指标
Curl
综合分析工具
磁盘/IO工具
网络分析工具
JAVA分析工具
更换硬盘
Linux启动流程
安装问题
GURB加密
修改默认启动项
Root密码忘记
重装内核、GRUB
Too many open files错误
误删文件,内存恢复
Read-only file system错误
本文档使用MrDoc发布
返回首页
-
+
Tcpdump抓包工具
2020年5月14日 10:29
admin
#简介 >#####tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息 --- ###抓http tcpdump -A -v -s 0 'tcp port 8070 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' --- #使用 >##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|指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。 |-r|从指定的文件中读取包(这些包一般通过-w选项产生); |-w|直接将包写入文件中,并不分析和打印出来; |-s snaplen|snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话tcpdump只显示部分数据包,默认68字节。 |-T|将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议;) |-X|告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。 --- >##表达式 proto dir type ID >####协议 proto tcp, udp , icmp,若未给定协议类型,则匹配所有可能的类型 >####目标 dir src, dst, src or dst, src and dst >####类型 type host, net, port, portrange #例如: host 192.168.201.128 , net 128.3, port 20, portrange 6000-6008' >####注意:表达式单元之间可以使用操作符进行连接,从而组成复杂的条件表达式 and 或 && or 或 || not 或 ! >####使用括号"()"可以改变表达式的优先级,但需要注意的是括号会被shell解释,所以应该使用反斜线""转义为"()",在需要的时候,还需要包围在引号中。 --- #tcpdump示例 >####打印node1<-->node2或node1<-->node3之间通信的数据包 tcpdump -i ens33 host node1 and \(node2 or node3\) >####监视指定主机的数据包,例如所有进入或离开node1的数据包 tcpdump -i ens33 host node1 >####打印node1与任何其他主机之间通信的IP数据包,但不包括与node4之间的数据包 tcpdump -i ens33 host node1 and not node4 >####截获主机node1 发送的所有数据 tcpdump -i ens33 src host node1 >####监视所有发送到主机node1 的数据包 tcpdump -i ens33 dst host node1 >####抓取到本机22端口包 tcpdump -c 10 -nn -i ens33 tcp dst port 22 >####监视指定主机和端口的数据包 tcpdump -i ens33 port 8080 and host node1 >####监视指定网络的数据包,如本机与192.168网段通信的数据包 tcpdump -i ens33 -c 10 net 192.168 #-c 10"表示只抓取10个包 >####指定主机抓ping包 tcpdump -c 5 -nn -i eth0 icmp and src 192.168.100.62 >####指定端口范围的监听 tcpdump -i ens192 port 10000-60000 >####指定主机和端口的监听 tcpdump -i ens192 port 10000 and src 10.188.100.191 tcpdump port 7211 and \(dst 10.188.100.10 or src 10.188.100.10\) ![](/media//202108/2021-08-12165342576001.png) #参数: S (SYN) F (FIN) P (PUSH) R (RST) U (URG) `.' (ACK) W (ECN CWR) E (ECN-Echo) --- ##保存与回放 >####流量保存 tcpdump -nn -i ens33 tcp dst port 80 -w a.pcap ------------------------------------------------------ -w 直接将包写入文件中(即原始包,如果使用 重定向 > 则只是保存显示的结果,而不是原始文件),即所谓的“流量保存”---就是把抓到的网络包能存储到磁盘上,保存下来,为后续使用 --- >####流量回放 tcpdump -r a.pcap ------------------------------------------------------ -r 达到“流量回放”---就是把历史上的某一时间段的流量,重新模拟回放出来,用于流量分析。 ---
分享到: