tcpdump的基本用法之选项



需要在root用户下使用,非root用户可用sudo。

tcpdump -i eth1 -nn -X port 8080 -c 1
-i:i 是interface的含义,是指我们有义务告诉tcpdump希望它去监听哪一个网卡。用ifconfig可以看到,一般不是eth0就是eth1。
-nn:是当tcpdump遇到协议号或端口号时,不要将这些号码转换成对应的协议名称或者端口名称。比如:21转化成FTP。
-X:让tcpdump把协议头和包的内容都显示出来,tcpdump会以16进制和ASCII两种形式显示,方便协议分析。
port 8080:让tcpdump监听我们关心的某个目的端口或源端口为8080的数据包,忽略其他端口。
-c:即为count,设置tcp抓包的数目,在这里设置为1,tcpdump只会抓一个数据包。

下面是示例:



上面是最普通的用法,下面介绍一些常用选项:

tcpdump可以分为三大部分内容,第一是选项,第二是过滤表达式,第三是输出信息

选项:
-e:增加以太网帧头部信息输出
示例:
如果没有加-e参数输出是这样的:


加上-e参数后:


好吧,不只是变长了。其实增加了许多以太网协议的信息。
为了理解增加的信息,我们可以来看一下以太网协议的头格式:

struct sniff_ethernet {
    u_char ether_dhost[ETHER_ADDR_LEN]; /* 目的主机的地址 */
    u_char ether_shost[ETHER_ADDR_LEN]; /* 源主机的地址 */
    u_short ether_type; /* IP? ARP? RARP? etc */
};
-e选项的输出中,出现了oui Unknow的字样,其实OUI,及Organizationally unique identifer,是”组织唯一标识符“,在任何一块网卡(NIC)中烧录的6字节MAC地址中,前3个
字节体现了OUI,表明了NIC的制造组织。通常情况下,该标识符是唯一的。

-l:使得输出变为行缓冲
-l,不是-i,它的作用就是将”tcpdump“的输出变为”行缓冲“的方式,这样可以确保tcpdump遇到的内容一旦是换行符即将缓冲的内容输出到标准输出,以便于利用管道或重定向的方式进行后续处理。在linux系统中,它的标准I/O提供了全缓冲、行缓冲、无缓冲三种缓冲方式。标准错误不带缓冲,比如cerr之于cout,终端设备常为行缓冲,二其他情况默认都是全缓冲的。

在使用tcpdump时,对于tcpdump输出的内容,提取每一行的第一个域,即”时间域“并输出出来,为后续统计所用。这时就需要使用-l将默认的全缓冲变为行缓冲。


-t:输出时不打印时间戳


-v:输出更详细的信息
加了-v选项后,会有tos值,ttl值,id值,总长度,校验值等。


-F:指定过滤表达式所在的文件

tcpdump -i eth1 -nn -X port 8080 -c 1

其中port 8080就是过滤表达式,用于设置满足的抓包条件。

但是当这个过滤条件坟场复杂,或者想将一个过滤表达式多次使用,可以把过滤表达式存入一个文本文件中,就可以用-f选项。

举例,port 8080


-w:将流量保存到文件中

网络流量分析有一个共同的需求,那就是流量保存和流量回放。流量保存就是把抓到的网络包能存储到磁盘上,保存下来,

为后续使用。流量回放,就是把历史上某一时间段的流量,重新模拟回放出来,用于流量分析。


-w选项保存的都是二进制文件,我们是看不懂的。那么怎么看呢?看下面这个选项。

-r:读取raw packet文件

这个选项实际上就是靠文件中的内容对流量进行了回访,就好像回到之前重新开始抓包。

由于是按照raw packet存储的,所以完全可以通过-e -l等选项和过滤表达式对条件进行控制。


这样,我们之前用-w保存的文件就被还原出来了。


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值