Linux系统命令之tcpdump
2015-04-17 16:56
218 查看
tcpdump 转储网络接口的数据包信息,并将这些数据包信息打印出来提供给用户查看。
如果不指定任何参数时,默认会转储第一个网口的数据包信息。
输出所有通过网关snup的ftp数据包(用单引号防止shell对括号错误解释)
输出TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机。
(ip[0]&0xf)<<2)表示ip数据包包头的长度(ip[0]&0xf代表包中的IHL域, 而此域的单位为32bit,
要换算
成字节数需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为
((tcp[12]&0xf0) >> 4) << 2,
即
((tcp[12]&0xf0)>>2). ((ip[2:2] - ((ip[0]&0xf)<<2)) -
((tcp[12]&0xf0)>>2)) != 0 表示: 整个ip数据包的长度减去ip头的长度,再减去
tcp头的长度不为0,
这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的'Payload
Length' 与 'tcp头的长度'的差值,
并且其中表达方式'ip[]'需换成'ip6[]'.)
打印长度超过576字节, 并且网关地址是snup的IP数据包
.
(nt: 'echo reuqest' 与 'echo reply' 这两种类型的ICMP数据包通常由ping程序产生))
参照:
http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
如果不指定任何参数时,默认会转储第一个网口的数据包信息。
tcpdump监视指定网口的数据包
tcpdump -i eth0监视指定主机的数据包
tcpdump host "hostname"也可以指定ip来获取该ip的收发数据包信息
tcpdump host 10.28.8.1输出主机A与主机B或C间的IP数据包信息(也可以指定IP地址)
tcpdump ip host A and \( B or C \) tcpdump ip host 10.28.8.1 and 10.28.8.2输出除主机A以任何与B主机通讯的IP包数据
tcpdump ip host B and not A输出主机发送的所有数据包
tcpdump -i eth0 src host "hostname"输出主机接收到的所有数据包
tcpdump -i eth0 dst host "hostname"监视指定主机和端口的数据包
tcpdump tcp port 22 and host 10.28.8.1对本机的udp 22 端口进行监视(22为ssh的服务端口)
tcpdump udp port 22监视指定的网络数据包
输出所有通过网关snup的ftp数据包(用单引号防止shell对括号错误解释)
tcpdump 'gateway snup and (port ftp or ftp-data)'输出源地址和目标地址皆非本地主机的数据包
tcpdump ip and not net localnet监视指定的协议数据包
输出TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机。
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'输出所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包。
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'(ip[2:2]表示整个ip数据包的长度,
(ip[0]&0xf)<<2)表示ip数据包包头的长度(ip[0]&0xf代表包中的IHL域, 而此域的单位为32bit,
要换算
成字节数需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表示tcp头的长度, 此域的单位也是32bit, 换算成比特数为
((tcp[12]&0xf0) >> 4) << 2,
即
((tcp[12]&0xf0)>>2). ((ip[2:2] - ((ip[0]&0xf)<<2)) -
((tcp[12]&0xf0)>>2)) != 0 表示: 整个ip数据包的长度减去ip头的长度,再减去
tcp头的长度不为0,
这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的'Payload
Length' 与 'tcp头的长度'的差值,
并且其中表达方式'ip[]'需换成'ip6[]'.)
打印长度超过576字节, 并且网关地址是snup的IP数据包
tcpdump 'gateway snup and ip[2:2] > 576'打印所有IP层广播或多播的数据包, 但不是物理以太网层的广播或多播数据报
tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'打印除'echo request'或者'echo reply'类型以外的ICMP数据包( 比如,需要打印所有非ping 程序产生的数据包时可用到此表达式
.
(nt: 'echo reuqest' 与 'echo reply' 这两种类型的ICMP数据包通常由ping程序产生))
tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'使用tcpdump抓取HTTP包
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x48540x4745 为"GET"前两个字母"GE",0x4854 为"HTTP"前两个字母"HT"。
参照:
http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
相关文章推荐
- Linux系统抓包命令tcpdump使用实例
- Linux系统-tcpdump常用抓包命令
- linux抓包命令-tcpdump命令详解
- Linux系统下安装rz/sz命令及使用说明
- Linux 系统 常用 命令学习(1)
- Linux 系统命令及其使用详解(大全)
- Linux系统用户网络磁盘命令
- Linxu笔记(11): Linux系统管理常用命令
- Linux系统信息查看命令
- linux讨论之文件系统与目录结构与学习命令前奏
- Linux系统信息查看命令大全
- Linux系统使用——压缩解压命令
- PHP之Linux(五) 进程管理与系统命令
- Linux 命令 “Uptimed” 记录 Linux 系统的 uptime
- 非常实用的linux系统命令
- linux uname命令参数及用法详解--linux查看系统信息命令
- Linux系统管理命令
- Linux系统下查看硬件信息命令大全
- Linux查看系统配置常用命令
- 如何查看linux系统中 已经安装了哪些服务?用什么命令啊?_百度知道