Chinaunix首页 | 论坛 | 博客
  • 博客访问: 67856
  • 博文数量: 28
  • 博客积分: 96
  • 博客等级: 民兵
  • 技术积分: 151
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-01 23:56
文章分类
文章存档

2012年(13)

2011年(15)

分类:

2012-01-17 22:04:08

原文地址:tcpdump的使用 作者:JassFuchang

虽然man上写的很详细,但有时用的时候可能并不想去man,还是写些笔记,方便以后使用。
基本命令格式如下tcpdump [- 包显示格式参数] [- 捕获控制参数] '过滤匹配条件'
tcpdump可以以一定的显示格式来打印满足过滤条件的包信息,包的来源可以是网络接口,也可以是文件。
通常仅仅键入tcpdump就可以开始包的捕获,但这时由于缺少捕获条件,你想要的包会淹没在一大批无用的数据中,而且缺少显示格式参数的控制,tcpdump只会打印IP包头信息,有时你需要更精确的捕获控制和更详细的包信息,那么就需要更多的参数。

1 捕获控制参数
-s  pkt-size    每个包的最小缓冲区,默认为98,超过的包内容会被截断
-c   count       当捕获到count个包后,停止捕获,否则进行连继捕获,当然你可以通过SIGINT或SIGTERM信息来终止捕获
-w file-name  将捕获的包写入的文件而非标准输出,供以后分析
-r   file-name 从文件中读取包的内容,并根据过滤条件显示到标准输出上
-C  p-f-size    当使用-w参数时,当把包写入文件时,如果文件大于size MB,则关闭当前文件,打开新的文件进行保存
-F   file-match 使用文件中的过滤表达式
-i   interface   捕获特定的接口
-T  type          将捕获的包解释为type,支持的type列表为aodv,rtp,rtcp,rpc,snmp,tftp...
-W file-count  保存捕获包的文件个数
-y   dl-type     设置链路层类型
-Z   user
-l                      使得tcpdump的输出为行缓冲的,以便为其他管道处理
-E  algo:secret 使用指定信息解密IPSEC数据,算法可以是des-cbc等,secret为ASCII的密钥
-D                   显示系统当前可用接口1
-L                    显示当前系统的链路层信息并退出
 
2 包显示参数
-x        以十六进制格式打印包的内容,IP头开始
-xx       包括链路层头信息
-X        同时以十
-A        以ASCII文本方式显示包内容,html等比较方便
-e        打包头的印链路层信息
-C       
-n        不将ip址转换为域名
-nn      同时不把端口转换为服务
-S        显示TCP绝对序号,而非相对序号
-t         不打印时间
-tt        打印未格式化的时间
-v         显示IP头的详细信息如TTL,ID,Length
 
3 过滤表达式
[协议] [方向] [目标]
关键字
目标指定:host , net, port,portrange
net 192.168.1.1/24
portrange 1-1024
方向指定:src,dst 可以用 or and连接
协议指定:ether,wlan,ip,ip6,arp,tcp,udp
ip proto tcp
ip6 proto udp
ip6 protochain type 头中包含类型type的头
其他:      gateway,broadcast,less,greater或算法表达式
less  length
这些关键词可能通过not !,and &&及 or ||来进行逻辑叠加
 
4 DPI
可以访问数据包的任意位置的数值并进行过滤
一般格式为:proto[算术表达式:size]  [运算符]  [值]
算术表达式中可以使用+ - * / & | << >>,,如udp[4:2]&0xffff>256
运行符可以是> < >= <= != =
一个示例:tcpdump -x -c 10 -s 300 'dst port 8080 and udp[4:2]&0xffff>200'
阅读(1172) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~