`

tcpdump报文截取和分析

 
阅读更多


简介
Tcpdump是linux环境下的报文抓包工具。支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

Windows下一般使用wireshark进行报文抓取和报文分析。Linux下一般可以使用tcpdump+(tcptrace或wireshark)。

安装tcpdump
本文以redhat as 5作为基础环境安装说明,内核:
Linux hadoop00 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux

下载对应的RPM版本,下载地址:http://www.tcpdump.org
# wget http://www.tcpdump.org/release/tcpdump-4.0.0.tar.gz

# tar -xzvf tcpdump-4.0.0.tar.gz
# ./configure
# make
# make install

# tcpdump -?
tcpdump version 4.0.0
libpcap version 1.1.1
Usage: tcpdump [-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -M secret ] [ -r file ]
                [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ]
                [ -y datalinktype ] [ -z command ] [ -Z user ]
                [ expression ]


Tcpdump常用命令

打印参数
-A:以ASCⅡ编码打印除了链路层报文头外的报文内容。用于捕捉web请求。
-B:设置抓取报文的缓存大小。
-c:收到多少包后退出程序
-dd:dump报文存储格式为C程序格式。
-e:打印链路层报文头
-X:不包括数据链路层的报文,并且以ASCⅡ的编码方式。
-v:详细的输出,也就比普通的多了个TTL和服务类型
-vv:截取显示详细的报文(注意是两个v)
-n:不进行IP地址到主机名的转换
-nn:不进行端口名称的转换
-N:不打印出默认的域名
-O:不进行匹配代码的优化
-t:不打印UNIX时间戳,也就是不显示时间
-tt:打印原始的、未格式化过的时间
-S:Print absolute, rather than relative, TCP sequence numbers.
-w filename : 保存截取的报文到指定的文件。

tcpdump man 文档: http://www.tcpdump.org/tcpdump_man.html

过滤参数
-b 在数据链路层上选择过滤的协议,包括ip,arp,rarp,ipx等
-i 表示指定过滤的网络设备,如网卡标志(eth0,eth1等)。
src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst 、port、host、net、ehost等附加选项,用于分辨数据包的来源和去向。可以使用and,or和not等进行逻辑组合。
src:数据源(请求);dst 目标;host 主机名或IP;net只网络平面或段;port表示端口号;ether只的是物理地址,即MAC地址;geteway表示网关。
例子:
# tcpdump src host 192.168.1.100 and dst host 192.168.1.101 and port 8080
表示:源为192.168.1.100,目标为192.168.1.101并且端口号为8080的报文。

# tcpdump dst net 192.168.0.0/24
表示目标的网络地址为192.168.0.0/24的子网

我习惯的报文截取和分析
服务器上tcpdump截取报文,本地wireshark分析报文
1.    使用tcpdump在目标服务器上截取报文并保持到文件中。
# # tcpdump -X –w httpdump 'tcp port 8080 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
# sz httpdump
2.    下载截取的报文文件到本地,使用wireshark进行分析。
打开wireshark,点击界面中间的open打开下载的dump文件。


 

列表和流式浏览报文




HTTP报文截取例子
1.    源,目标及端口号过滤
# tcpdump –X –w filename src 192.168.91.1 and dst 192.168.91.10 and port 8080
2.通过报文中的协议标志过滤
# tcpdump  -XvvennSs 0 -i eth0 –w filename tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 为"GET"前两个字母"GE"
0x4854 为"HTTP"前两个字母"HT"
3.端口号及报文头标志(官方例子)
# tcpdump -X –w filename 'tcp port 8080 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

  • 大小: 74.2 KB
  • 大小: 202.1 KB
分享到:
评论

相关推荐

    Linux系统之Tcpdump抓包常见举例分析.docx

    Tcpdump 命令参数详解与实践应用 Tcpdump 是一个功能强大且灵活的网络嗅探器,可以嗅探网络流量...通过 Tcpdump 命令的使用,可以实现对网络流量的监控和分析,从而帮助网络管理员和开发者更好地了解和优化网络性能。

    Wireshark - 使用WireShark进行报文分析简明教程

    Wireshark是一款强大的网络封包分析软件,它能够截取并深入分析网络中传输的数据包,展示出其中的详细信息。对于性能测试来说,尤其是在面对B/S架构和C/S架构的项目产品时,Wireshark起到了至关重要的作用。在Web...

    tcpdump manpage

    tcpdump 是一个强大的网络数据包分析工具,用于在网络接口上截取并分析数据流,根据用户定义的条件筛选和展示网络通信的信息。它在不同操作系统上可能需要特定的权限才能运行,例如在某些系统上,非root用户可能需要...

    tcpdump中文手册

    * -s:从每个报文中截取 snaplen 字节的数据,而不是缺省的 68(如果是 SunOS 的 NIT,最小值是 96)。 * -T:把通过“expression”挑选出来的报文解释成指定的 type。目前已知的类型有:rpc(远程过程调用),rtp...

    计算机网络 实验二 IP协议分析

    计算机网络实验二的主要目的是让学生了解IP报文格式、熟悉IP报文各个字段含义、掌握基于tcpdump和wireshark软件进行数据包抓取和分析技术。实验中,学生将学习tcpdump和wireshark的基本用法,并使用它们来抓取和分析...

    linux-tcpdump(中文)手册(上).pdf

    《Linux-tcpdump(中文)手册(上)》是一份详细介绍tcpdump工具的文档,旨在帮助用户理解和使用这个强大的网络数据包分析工具。tcpdump能够捕获并分析网络接口上的数据流,根据指定的布尔表达式筛选出感兴趣的数据包。 ...

    以太网数据抓包,用于TCP-IP调试

    以太网数据抓包是网络调试中的重要工具,主要用于分析和理解网络通信的过程,以便于排查TCP/IP协议栈中的问题。TCP/IP协议是互联网的基础,它由应用层、传输层、网络层和数据链路层等多个层次组成。当网络出现问题时...

    抓包,组包 code

    在一些场景下,比如分析HTTP通信,可能还需要解析HTTP报文头和体,理解请求和响应的结构。 在“lastsniffer”这个文件名中,“sniffer”通常指的是网络嗅探器,用于捕获和分析网络流量。这个文件可能是一个简单的...

Global site tag (gtag.js) - Google Analytics