【1】Wireshark 与 Tcpdump

Wireshark是Windows下非常容易上手的抓包工具。但在Linux下很难找到一个好用的图形界面抓包工具。还好有Tcpdump。
我们可以用Tcpdump + Wireshark完美组合实现:在Linux环境下抓包,然后导出抓包数据文件,在Windows环境下分析包内容。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.11/24 -w ./2019-06-11.cap

(1)tcp:ip icmp arp rarp 和 tcp、udp、icmp等等这些选项都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1:只抓经过接口eth1的包
(3)-t: 不显示时间戳
(4)-s 0:默认抓取数据包时抓取长度仅为68字节。加上-S 0后可以抓到完整的数据包
(5)-c 100:只抓取100个数据包
(6)dst port ! 22:不抓取目标端口是22的数据包
(7)src net 192.168.1.11/24:数据包的源网络地址为192.168.1.11/24
(8)-w ./2019-06-11.cap:保存成cap格式文件,方便在Windows环境下利用Wireshark分析数据包内容

【2】Wireshark

关于Windows环境下的Wireshark,主要内容请参见《Wireshark学习系列

【3】Tcpdump

关于Linux环境下的Tcpdump,主要内容:

(1)启动与关闭

启动:tcpdump

关闭:只有将tcpdump进程终止才停止抓包

终止进程方法:ctrl + c 或 kill -9 pID

查询pID:ps aux | grep tcpdump

(2)tcpdump -help 内容如下

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 ]

2.1 抓包选项:

-a:尝试将ip地址转化为名称。如本机的ip转化为主机名进行显示,tcpdump默认行为是转换为名称,若需显示ip地址数字,需要指定-n参数。

-A:将抓取的数据包以ASCAII的形式打印出来(并将数据链路层头部最小化)。

一般抓取网页数据时使用该参数,使用该参数可以打印出human-readable的信息,便于分析包头内容。

-d:将抓取的数据包按照汇编格式输出。(暂不清楚用途)

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

-e:打印数据链路层头部信息(未最小化)。可与A、x、X配合使用。
 当使用-A参数和-X参数,或不指定参数时候,打印出的数据链路层信息为简化信息,使用此参数可打印链路层头部完整信息。

-f:显示外部的IPv4 地址时(nt: foreign IPv4 addresses, 可理解为, 非本机ip地址), 采用数字方式而不是名字.(此选项是用来对付Sun公司的NIS服务器的缺陷(nt: NIS, 网络信息服务, tcpdump 显示外部地址的名字时会用到她提供的名称服务): 此NIS服务器在查询非本地地址名字时,常常会陷入无尽的查询循环)。

-I:

-K:跳过TCP校验和验证

-l:对标准输出进行行缓冲(nt: 使标准输出设备遇到一个换行符就马上把这行的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有用. 比如, 可通过以下命令组合来达到此目的:
 ``tcpdump -l | tee dat'' 或者 ``tcpdump -l > dat & tail -f dat''.(nt: 前者使用tee来把tcpdump 的输出同时放到文件dat和标准输出中, 而后者通过重定向操作'>', 把tcpdump的输出放到dat 文件中, 同 时通过tail把dat文件中的内容放到标准输出中)

-L:列出指定网络接口所支持的数据链路层的类型后退出.(nt: 指定接口通过-i 来指定)

-n:对地址以数字方式显示,否则显示为主机名。也就是说,-n选项强制展示ip、port等数值,而不做主机名解析。作用与-a相反。

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

-N:不打印出host的域名部分。例如:ip地址为"192.168.1.100"时,tcpdump将只会打印"192"而不是"192.168.1.100"。

-O:不允许分组匹配代码优化程序

-p:不将网络接口设置为混杂模式

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

-R:

-S:将tcp的序列号以绝对值形式输出,而不是相对值。

-t:不在每一行中输出时间戳。

-u:输出未解码的NFS句柄

-U:

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

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

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

-x:将抓取的数据包以16进制的形式展示出来(并将数据链路层头部最小化)。

-X:将抓取的数据包同时以16进制(hex)和ASCAII的形式展示出来(并将数据链路层头部最小化)。

-B:buffer_size:设置系统捕获缓冲区大小

-c:计划抓取的包数量。注意:是指最终要抓取这么多个满足条件的包。例如:指定"-c 30"将获取30个包,但可能已经遇到了500个包,只不过只有30个包是满足条件的包。

-C:在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。

参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。

-E:用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。

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

-G second:选项后面接时间,单位为秒。抓取报文后隔指定的时间保存一次。

-i:i指interface,指定需要监听的网络接口。若未指定该选项,默认为eth0网络接口。
 tcpdump命令默认将从系统接口列表中搜寻编号最小的正常通信接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo)
 监听所有网络接口,可以使用'any'关键字

-M:如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。

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

-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,
    :输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,
    :从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

-T:将监听到的包直接解析为指定的类型的报文,常见的类型有rpc、cnfp、snmp

-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。

-W:限制文件的个数,达到个数后开始从最早的文件覆盖。

-y type:设置data link type

-z:压缩dump文件

-Z:改变运行时用户

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

2.2 输出选项:

2.3 其他选项:

Good Good Study, Day Day Up.
顺序 选择 循环 总结

Wireshark 与 Tcpdump的更多相关文章

  1. Wireshark和TcpDump抓包分析心得

    Wireshark和 TcpDump抓包分析心得  1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Window ...

  2. 转 Wireshark和TcpDump抓包分析心得

    1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...

  3. 网络抓包工具wireshark and tcpdump 及其实现基于的libpcap

    最近无意中看到博客园中一篇介绍wireshark的文章,写得不错,它简单清楚介绍了wireshark的使用 简介 wireshark以前叫做Ethereal, 在大学时候的网络课程中就常看到它,它是世 ...

  4. 运维之网络安全抓包—— WireShark 和 tcpdump

    ------------------------------------------------本文章只解释抓包工具的捕获器和过滤器的说明,以及简单使用,应付日常而已----------------- ...

  5. 常用抓包指令for wireshark or tcpdump

    1, tshark -ni eth0 -R "tcp.dstport eq 8080" [wireshark 抓指定协议端口数据包] 2, tcpdump  -XvvennSs 0 ...

  6. 用wireshark查看 tcpdump 抓取的mysql交互数据

    用tcpdump  抓取 mysql客户端与服务器端的交互 1开启tcpdump tcpdump -i eth0 -s 3000 port 3306 -w ~/sql.pcap 先故意输入一个错误的密 ...

  7. Ubuntu 16.04 安装 Wireshark分析tcpdump的pcap包——sudo apt install wireshark-qt

    tcpdump 的抓包保存到文件的命令参数是-w xxx.cap   抓eth1的包  tcpdump -i eth1 -w /tmp/xxx.cap    抓 192.168.1.123的包  tc ...

  8. wireshark和tcpdump抓包TCP乱序和重传怎么办?PCAP TCP排序工具分享

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍TCP排序方法,分享一个Windows版的TCP排序工具." 在分析协议的过程中,不可避免地需要抓包. 无论抓包条件如何优越, ...

  9. wireshark、tcpdump使用笔记

    最近使用wireshark抓包icmp协议,过滤的命令如下所示: ip.addr eq 192.168.20.54 and ip.addr eq 192.168.50.131 and (icmp) 如 ...

随机推荐

  1. 最近公共祖先 Least Common Ancestors(LCA)算法 --- 与RMQ问题的转换

    [简介] LCA(T,u,v):在有根树T中,询问一个距离根最远的结点x,使得x同时为结点u.v的祖先. RMQ(A,i,j):对于线性序列A中,询问区间[i,j]上的最值.见我的博客---RMQ - ...

  2. http://www.cnblogs.com/hoojo/archive/2011/06/08/2075201.html

    http://www.cnblogs.com/hoojo/archive/2011/06/08/2075201.html

  3. hdu 4512 吉哥系列故事——完美队形I(最长公共上升自序加强版)

    首先要去学习最长公共上升子序列LCIS.然后是对n*n效率的算法进行优化,这里要注意的是能够求出来的序列中间能够有一个最高的.刚開始将输入的数组进行逆置,写下来发现这可能存在问题. 只是详细是什么也没 ...

  4. Angular 学习笔记——ng-repeat 隔行换色

    <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...

  5. ThinkPHP的sql_mode的默认设置,导致无效信息被插入

    在thinkphp中的DbMySql.class.php和DbMySqli.class.php中每次连接mysql后,都会自动设置sql_mode=''; mysql_query("SET ...

  6. _.pick lodash

    http://lodash.think2011.net/pick _.pick(object, [props]) 创建一个从 object 中选中的属性的对象. 参数 object (Object) ...

  7. STL学习笔记(第二章 C++及其标准程序库简介)

    本章重点是介绍与C++标准程序库相关的几个最重要的语言新特性 template(模板) 程序库中几乎所有东西都被设计成template形式.所谓templates,是针对“一个或多个尚未明确的型别”所 ...

  8. TCP/IP详解 卷一(第十九章 TCP的交互数据流)

    TCP需要同时处理两类数据:块数据.交互数据. 本章将以Rlogin应用为例观察交互数据的传输过程. 交互式输入 首先观察在一个Rlogin连接上键入一个交互命令时所产生的数据流(每键入一个交互按键都 ...

  9. hadoop:WordCount问题总结

    今天玩了一下hadoop的MapReduce,中途遇到了几个问题,在此记录一下. 1.一切按照配置完成之后,hadoop namenode format,start-all.sh启动,使用jps查看进 ...

  10. TCP应用程序通信协议的处理

    TCP应用程序通信协议的处理 flyfish 2015-6-29 一 流式处理 TCP是一种流协议(stream protocol).TCP数据是以字节流的形式传递给接收者的,没有固有的"报 ...