tcpdump命令

标签: tcpdump 命令 | 发表时间:2013-08-17 20:25 | 作者:kate19930802
出处:http://blog.csdn.net

tcpdump命令

英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报。它会输出在某个网络接口上符合匹配表达式的报内容的描述。当tcpdump完成抓包后,会打印出类似下面的内容: 
9 packets captured
56 packets received by filter
17 packets dropped by kernel
当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户

tcpdump用法

tcpdump -A 用ascii打印出每个包信息,这个对于截获网页很方便
tcpdump -D 打印出当前系统的可用的网络接口。可以用-i选项来指定特定的接口


tcpdump -F 使用文件作为输入的过滤表达式
tcpdump -i 在指定的接口上进行监听。如果未指定,tcpdump会从interface list 中寻找最低数字作为监听的接口
tcpdump -l  使标准输出成为缓冲区,如果你想在截获数据包的同时也查看数据,则可以使用下面命令
tcpdump -l > dat & tail -f dat
tcpdump -S 打印出TCP绝对的序列号
tcpdump -w 将截获的数据包写到一个文件中
如果没有表达式,则网络上所有的包都会被截获

例子

TCP Packets

下面就是TCP 报文的格式
src > dst : flags data-segno ack window  urgent options(MSS, 时间戳,窗口规模选项)

1. 要截获特定标志位的TCP 包:

在TCP header中,有8位是控制位
CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
有TCP 头的结构中
       0                            15                                     31
       -------------------------------------------------------------------------
       |          source port          |       destination port      |
       -------------------------------------------------------------------------
       |                        sequence number                       |
       -------------------------------------------------------------------------
       |                     acknowledgment number                |
       --------------------------------------------------------------------------
       |  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size   |
       --------------------------------------------------------------------------
       |         TCP checksum          |       urgent pointer    |
       --------------------------------------------------------------------------
8为控制位是TCP头中的第13个 8-bits组
                       |                        |
                       |------------------------|
                       |C|E|U|A|P|R|S|F|
                       |------------------------|
                       |7     5    3        0|
当SYN位为1时
则该8-bits组的二进制表示为:00000010  -> 2
所以只截获TCP中标志位为SYN=1的表达式为
tcpdump -i 2 tcp[13]==2  
tcp[13]==2  就是让TCP数据报中的第13个8bits组的值为2

2. 如果TCP报文中带有SYN-ACK,我们认为他是带SYN的报文,那么该咋截获呢


                       |                        |
                       |------------------------|
                       |C|E|U|A|P|R|S|F|
                       |------------------------|
                       |7     5    3        0|
此时该8bits组的二进制表示为 00010010 ->18
此时应该不是 tcp[13] == 18,这样只能截获ACK-SYN报文,而不能再截获SYN报文啦,这时我们应该要维持SYN所在位的值,可以用上逻辑与运算,即如下
‘tcp[13] & 2 == 2’ ,就可以啦
注意:下面截图的TCP报文的第二条的标志位 [S.]


UDP Packets

UDP 报文的格式为
  actibude.who > broadcast.who : udp 84
who 为端口号,artinide,broadcast都是主机的网络地址, 84为UDP数据报的大小

UDP name Server Requests

请求报文的格式为
src > dst : id op? flags qtype qclass name(len)
h2opolo.1538 > helios.domain : 3+ A? ucbvax.berkeley.edu (37)
主机hopolo询问主机helios上的domain服务的地址记录(qtype=A),该机路与ucbvax.berkeley,edu相关联
查询id为3,‘+’表明 recursion-desired flag 被设置,query的长度为37字节,没有包括UDP与IP的头长度

UDP Name Server Responses

src > dst : id op rcode flags a/n/au type class data(len)
 helios.domain > h2opolo.1538 : 3 3/3/7 A 128.32.137.3 (273)

该报文是helios响应来自h2opolo的query id 为3,且带有3个answer record,3 个name server records 和 7 个additional records
第一个 answer record 是type A ,它数据的大小为273字节,包括UDP和IP报文头
作者:kate19930802 发表于2013-8-17 20:25:26 原文链接
阅读:0 评论:0 查看评论

相关 [tcpdump 命令] 推荐:

tcpdump命令

- - CSDN博客推荐文章
英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报. 它会输出在某个网络接口上符合匹配表达式的报内容的描述. 当tcpdump完成抓包后,会打印出类似下面的内容: . 当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户.

linux tcpdump命令以及结果分析

- - CSDN博客系统运维推荐文章
tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看. 1.针对特定网口抓包(-i选项). 当我们不加任何选项执行tcpdump时,tcpdump将抓取通过所有网口的包;使用-i选项,我们可以在某个指定的网口抓包:.

Linux下网络抓包命令tcpdump详解(在wireshark中看包)

- - 开心平淡对待每一天。热爱生活
tcpdump采用命令行方式,它的命令格式为:.       tcpdump[ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ].           [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ].           [ -T 类型 ] [ -w 文件名 ] [表达式 ]   .

Linux下使用tcpdump使用

- - ITeye博客
(监听22端口,只抓取20个数据包). src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针.

[转]tcpdump抓取HTTP包

- - 曾健生的专栏
0x4745 为"GET"前两个字母"GE". 0x4854 为"HTTP"前两个字母"HT". 说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手. SYN: (同步序列编号,Synchronize Sequence Numbers). ACK: (确认编号,Acknowledgement Number).

Linux抓包工具tcpdump详解

- - 服务器运维与网站架构|Linux运维|互联网研究
PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具. tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.

Tcpdump的用法及使用案例

- - CSDN博客系统运维推荐文章
       Tcpdump工具是Unix和linux系统抓网络数据库包最有效的工具,windows上类似的工具是wireshark. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析. 它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息.

利用tcpdump抓取mysql sql语句

- - 学习笔记
这个脚本是我之前在网上无意间找个一个利用tcpdump 抓包工具获取mysql流量,并通过过滤把sql 语句输入. 脚本不是很长,但是效果很好. #!/bin/bash #this script used montor mysql network traffic.echo sql tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e ' while(<>) { chomp; next if /^[^ ]+[ ]*$/;.

Linux操作系统tcpdump抓包分析详解

- - CSDN博客互联网推荐文章
PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具. tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.

linux tcpdump脚本实现24小时自动抓包

- - CSDN博客系统运维推荐文章
#说明---------------. maindump.sh (抓包的主程序). 每隔1分钟通过死循环检测,让程序不断的去抓包;考虑到抓包的结果可能太大分析工具无法打开分析,所以每个数据包大小限制约为100M;. 并设定了前一个包抓完,间隔5秒,开始进行下一轮抓包;. 每天的数据包放在/data下以日期命名的目录如:/data/2010-03-08,并进行压缩存储,包的命令格式为:yyyy-mm-dd@hhmmss-hhmmss.pcap.gz;其中yyyy-mm-dd表示日期,第一个hhmmss表示开始抓包的时分秒,第二个hhmmss表示抓包结束的时分秒.