今天所做的努力
都是在为明天积蓄力量

liunx和win抓包工具和命令详解

一.linux系统

tcpdump抓包

tcpdump -h

tcpdump version 4.9.2

libpcap version 1.5.3

OpenSSL 1.0.2k-fips  26 Jan 2017

Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]

[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]

[ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]

[ -Q|-P in|out|inout ]

[ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]

[ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]

[ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]

[ -Z user ] [ expression ]

官方参数详解: https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/t_commands/tcpdump.html

抓包选项:

-c:指定要抓取的包数量。

-i interface:指定tcpdump需要监听的接口。默认会抓取第一个网络接口

-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。

-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。

-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。

-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,

:输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,

:从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

输出选项:

-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。

-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。

-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。

-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。

-v:当分析和打印的时候,产生详细的输出。

-vv:产生比-v更详细的输出。

-vvv:产生比-vv更详细的输出。

其他功能性选项:

-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。

-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。

-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G

time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。

-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

常用抓包实例

某个ip所有包: tcpdump -i eth0 host 118.114.245.37

所有经过80端口包: tcpdump -i eth0 tcp port 80 -n -X -s 0

域名信息:tcpdump -n -X -s0 -i eth0|grep Host -C 3

过滤HTTP的GET请求:tcpdump -i eth0 -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

过滤HTTP的POST请求:tcpdump -i eth0 -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

80端口和主机两个条件的包,vvv显示比较详细的信息:tcpdump -vvvnns 1500 -i eth0 dst port 80 and host 118.114.245.37

image.png

8787端口和主机两个条件: tcpdump -nn tcp port 8788 and host 118.114.245.37

三次握手

image.png

二.windows系统

Windump

windump -h

windump version 3.8.3 beta, based on tcpdump version 3.8.3

WinPcap version 4.1.3 (packet.dll version 4.1.0.2980), based on libpcap version 1.0 branch 1_0_rel0b (20091008)

Usage: windump [-aAdDeflLnNOpqRStuUvxX] [ -B size ] [-c count] [ -C file_size ]

[ -E algo:secret ] [ -F file ] [ -i interface ] [ -r file ]

[ -s snaplen ] [ -T type ] [ -w file ] [ -y datalinktype ]

[ expression ]

官方参数详解: https://www.winpcap.org/windump/docs/manual.htm

命令参数

-a 将网络和广播地址转化为名称

-c 接收指定数据包后退出

-d 接收人可读的包匹配编译代码到标准输出,然后停止

-dd 以C程序分段方式捕获包匹配代码

-ddd 以十进制数据形式捕获包匹配代码

-e 在每个捕获行打印链路层头标

-E algo:secret为解密IPSE ESP包使用算法。算法可以是des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或none。默认值是desc-cbc。只有当TCPDUMP编译时使用激活加密选项时,才可以解密数据包。Secret是ESP密匙是ASCII码。当前还不能认为一定是二进制值。该选项是以RFC2406ESP为假设,而不是RFC1827 ESP。只用于调试,不鼓励用真正的密码作为选项。当你在PS或其他场合,把IPSEC密码写在命令行上时,会被他人看到。

-f 不用符号而用数字方式输出外部英特网地址

-F 使用文件作为过滤表达式的输入。命令行的其他部分会被忽略。

-i 在接口上监听。如果没有指定,TCPDUMP将搜索系统接口列表中最小,被配置激活的接口(LOOPBACK接口除外)。可用最先匹配替换这种关系。在WINDOWS中接口可以是网卡的名称,或是网卡的号码(-D参数可显示该号码)。内核为2。2或其后的LINUX系统,参数“ANY”可以获取所有接口的数据。应注意的是在混乱模式下不能使用“ANY”参数。

-l 标准输出行缓存。如果你想在捕获数据时查看的话,这个参数很有用。例如:“tcpdump -l │ tee dat or ``tcpdump -l > dat & tail -f dat.”

-n 不要将地址(如主机地址,端口号)转换为名称

-N 不要打印主机名称的域名限定。如:如果你使用该参数,TCPDUMP会输出“NIC”而不是“NIC。DDN。MIL”。

-m 从文件模块中载入SMI MIB 模块定义。这个选项可以为TCPDUMP载入多个MIB模块

-O 不要运行包匹配代码优化器。只有在你怀疑优化器有问题时可以使用这个参数。

-p 不要让接口处于“混乱”模式。注意接口可能由于其他原因处于“混乱”模式;因此“-p”不能用作以太网络主机或广播的缩写。

-q 快速(安静?)输出。打印较少的协议信息,因此输出行更短。

-r 从文件中读取包(与参数据-W一起使用)。如果文件是“-”就使用标准输入。

-s 不使用默认的68个字节,更改从每个包中获取数据的字节数量( SunOS系统实际最小为96)。对于IP,ICMP,TCP和UDP包68个字节已足够,但是对命名服务和NFS包,他们的协议会被截断(见下面)。包被截断是因为在使用参数``[│proto]输出时指定受限制的快照,proto是被截断协议层的名称。注意如果使用大的快照会增加处理包的时间,并且明显地减少包的缓存数量。也许会导致包的丢失。你应该将snaplen 设置成你感兴趣协议的最小数。当snaplen 为0时接收整个包。

-T 根据表达式将选中的数据包表达成指定的类型。当前已有的类型有CNFP(Cisco的网络流量协议),rpc(远端程序调用),rtp(实时程序协议),rtcp(实时程序控制协议),snmp(简单网络管理协议),vat(可视单频工具),和wb(分布式白板)。

-R 假设ESP/AH包遵守旧的说明(RFC1825到RFC1829)。如果该参数被指定,TCPDUMP不打输出域。因为在ESP/AH说明中没有协议版本,TCPDUMP就无法推断出其版本号。

-S 输出绝对TCP序列号,而不是相对号。

-t 每个捕获行不要显示时间戳。

-tt 每个捕获行显示非格式化的时间时间戳。

-v 详细输出。例如,显示生存时间TTL,标识符,总长度和IP数据包的选项。也进行额外的包完整性较验,如验证IP和ICMP的头标较验值。

-vv 更为详细的输出。例如,显示NFS中继包中的其他域。

-vvv 很详细的输出。如,完全输出TELNET SB… SE选项。带-X参数的TELNET,打印并以十六进制输出。

-w 不对原始数据包解析打印而是转到文件中去。以后可用-r选项打印。当文件名为“-”表示标准输出。

-x 以十六进制(去除链路层头标)输出每个数据包。输出整个包的小部分或snaplen 个字节。

-X 输出十六进制同时,输出ASCII码。如果-x也被设置,数据包会以十六制/ASCII码显示。这对于分析新协议非常方便。如果-x也没有设置,一些数据包的部分会以十六制/ASCII码显示。

Win32特殊扩展

-B 以千字节为单位设置驱动缓存。默认缓存为1M(即1000)。如果在获取数据包时有数据丢失,建议使用该参数增大核心缓存大小,因为驱动缓存大小对数据捕获性能有很大影响。

-D 显示系统上可用的网卡列表。该参数将返回每块网卡的号码,名称和描述。用户可以输入“WinDump –i 网卡名称”或“WinDump –i 网卡号码”。如果机器有多块网卡,不带参数的WINDUMP命令会从系统的第一块可用网卡开始。

抓取网卡2所有包: windump -i2 -n

image.png

抓取某个ip请求80端口的包:windump -nni2 host 118.114.245.37 and port 80

image.png

抓取80端口包详细信息: windump -i2 -nXs0 port 80

image.png

赞(0)
未经允许不得转载:流觞 » liunx和win抓包工具和命令详解
分享到: 更多 (0)

Warning: Use of undefined constant php - assumed 'php' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.lnmpweb.cn/wp-content/themes/dux5.1/single.php on line 78