1. tcpdump选项

它的命令格式为:

tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ][ -s snaplen ] [ -w file ] [ expression ]

抓包选项:

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

-i interface:指定tcpdump需要监听的接口。可以使用'any'关键字表示所有网络接口。

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

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

-N:不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。

-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:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

2. 基本的使用方法

1、抓取所有经过指定网络接口上的数据包

tcpdump -i eth0

如果不指定网络接口,则默认抓取第一个网络接口,一般是eth0

tcpdump

2、过滤主机

tcpdump -i eth1 host 192.168.1.1
tcpdump -i eth1 src host 192.168.1.1 //接收192.168.1.1发送的数据包
tcpdump -i eth1 dst host 192.168.1.1 //发往192.168.1.1的数据包

src 指定源地址,192.168.1.1

dst 指定目的地址,192.168.1.1

3、过滤端口

tcpdump -i eth1 port 25
tcpdump -i eth1 src port 25
tcpdump -i eth1 dst port 25

4、网络过滤

tcpdump -i eth1 net 192.168
tcpdump -i eth1 src net 192.168
tcpdump -i eth1 dst net 192.168

5、协议过滤

tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp

6、常用表达式

非 : ! or "not" (去掉双引号)
且 : && or "and"
或 : || or "or"

抓取主机10.3.19.185和主机10.3.19.186或10.3.19.187的通信

tcpdump 'host 10.3.19.185 and (10.3.19.186 or 10.3.19.187)'

抓取主机10.3.19.185除了和主机10.3.19.186之外所有主机通信的数据包

tcpdump host 10.3.19.185 and ! 10.3.19.186

抓取主机10.3.19.185除了和主机10.3.19.186之外所有主机通信的IP包

tcpdump ip host 10.3.19.185 and ! 10.3.19.186

抓取主机10.3.19.185所有在TCP 80端口的数据包

tcpdump tcp port 80 and host 10.3.19.185

抓取送到主机10.3.19.185的80端口的数据包:

tcpdump dst port 80 and host 10.3.19.185

抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数

tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据

tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

7、保存到文件a.cap

tcpdump -i eth1 port 25 -w a.cap

3.wireshark使用

3.1 界面介绍

主界面

wireshark与对应的OSI七层模型

tcp抓包具体内容

3.2 wireshark过滤器的使用

几个最常用的关键字,“eq” 和 “==”等同,可以使用 “and” 表示并且,“or”表示或者。“!" 和 "not” 都表示取反。

ip地址过滤

# 对源地址为192.168.0.1的包的过滤
ip.src == 192.168.0.1
# 对目的地址为192.168.0.1的包的过滤
ip.dst == 192.168.0.1
# 对源或者目的地址为192.168.0.1的包的过滤
ip.addr == 192.168.0.1
ip.src == 192.168.0.1 or ip.dst == 192.168.0.1
# 要排除以上的数据包,我们只需要将其用括号囊括,然后使用 "!" 即可。
!(表达式)

协议的过滤

# 仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。
http
# 需要捕获多种协议的数据包,也只需对协议进行逻辑组合即可。
http or telnet
# 排除某种协议的数据包
not arp
!tcp

端口的过滤(视协议而定)

# 捕获某一端口的数据包
tcp.port == 80
# 捕获多端口的数据包,可以使用and来连接,下面是捕获高端口的表达式
udp.port >= 2048

针对长度和内容的过滤

# 针对长度的过虑(这里的长度指定的是数据段的长度)
udp.length < 30 http.content_length <=20
# 针对数据包内容的过滤
http.request.uri matches "vipscu" //(匹配http请求中含有vipscu字段的请求信息)

3.3 分析过程

 ⚡ root@VM_35_1_centos  ~  curl archerwong.cn
# root @ VM_33_19_centos in ~ [10:17:47] C:1
$ tcpdump -n host 118.25.194.34 and port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
10:52:19.047261 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [S], seq 188644742, win 29200, options [mss 1424,sackOK,TS val 608533047 ecr 0,nop,wscale 7], length 0
10:52:19.047290 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [S.], seq 162038118, ack 188644743, win 28960, options [mss 1460,sackOK,TS val 1190782418 ecr 608533047,nop,wscale 7], length 0
10:52:19.051949 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 608533051 ecr 1190782418], length 0
10:52:19.051979 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [P.], seq 1:78, ack 1, win 229, options [nop,nop,TS val 608533051 ecr 1190782418], length 77: HTTP: GET / HTTP/1.1
10:52:19.051986 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [.], ack 78, win 227, options [nop,nop,TS val 1190782423 ecr 608533051], length 0
10:52:19.107820 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [P.], seq 1:1398, ack 78, win 227, options [nop,nop,TS val 1190782479 ecr 608533051], length 1397: HTTP: HTTP/1.1 200 OK
10:52:19.112434 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [.], ack 1398, win 250, options [nop,nop,TS val 608533112 ecr 1190782479], length 0
10:52:19.112605 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [F.], seq 78, ack 1398, win 250, options [nop,nop,TS val 608533112 ecr 1190782479], length 0
10:52:19.112650 IP 10.105.33.19.http > 118.25.194.34.56490: Flags [F.], seq 1398, ack 79, win 227, options [nop,nop,TS val 1190782484 ecr 608533112], length 0
10:52:19.117308 IP 118.25.194.34.56490 > 10.105.33.19.http: Flags [.], ack 1399, win 250, options [nop,nop,TS val 608533117 ecr 1190782484], length 0

上面的抓取的一次实例,包括了三次握手,数据收发,四次挥手,具体可以结合wireshark分析

下面文章写得很详细,直接推荐下,不再copy过来了

https://blog.csdn.net/hry2015/article/details/79006671

tcpdump使用的更多相关文章

  1. 如何利用tcpdump对mysql进行抓包操作

    命令如下: tcpdump -s -l -w - dst -i eno16777736 |strings 其中-i指定监听的网络接口,在RHEL 7下,网络接口名不再是之前的eth0,而是 eno16 ...

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

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

  3. tcpdump、nc网络工具使用

    tcpdump: 网络嗅探器 nc: nmap: 端口扫描 混杂模式(promisc) C设置为监控,当A和B通信,C是无法探测到数据的,除非有交换机的权限,将全网端口的数据通信都发送副本到C的端口上 ...

  4. 【Network】TCPDUMP 详解

    参考资料: https://www.baidu.com/s?ie=UTF-8&wd=tcpdump%20%E6%8C%87%E5%AE%9Aip tcpdump非常实用的抓包实例:  http ...

  5. tcpdump抓取HTTP包

    tcpdump抓取HTTP包 tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 0x4745为"GET&quo ...

  6. 在php中使用strace、gdb、tcpdump调试工具

    [转] http://www.syyong.com/php/Using-strace-GDB-and-tcpdump-debugging-tools-in-PHP.html 在php中我们最常使用调试 ...

  7. tcpdump

    tcpdump tcp -i eth1 -t -s -c and dst port ! and src net -w ./target.cap (1)tcp: ip icmp arp rarp 和 t ...

  8. tcpdump的简单使用

    tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析 1.tcpdump host 192.168.8.49         获取主机192.168.8.49接收到和发出的所有分组 2. ...

  9. 超级详细Tcpdump 的用法

    1.抓取回环网口的包:tcpdump -i lo 2.防止包截断:tcpdump -s0 3.以数字显示主机及端口:tcpdump -n 第一种是关于类型的关键字,主要包括host,net,port, ...

  10. Linux中tcpdump的编译和使用

    tcpdump官网:http://www.tcpdump.org/ 转载于:http://www.cnblogs.com/hzl6255/p/6147985.html 目录 1. 介绍 2. 编译 2 ...

随机推荐

  1. Html 列表实现展开和收起

    HTML中,点击列表元素,在其下展开更多的小选项.不点的时候是收起来的.就是实现路由器左边的菜单那样的功能.怎么实现,知道的指点一下,谢谢了!! 最常见的方法是通过Javascript控制某标签的CS ...

  2. WEB测试—功能测试

    1. 链接测试        1.1 测试点: 是否添加链接 链接页面是否存在 链接页面与需求是否一致:页面的正确性.打开方式 等              一般,该链接测试在集成测试阶段(页面均开发 ...

  3. [转]MFC子线程中更新控件内容的两种办法

    一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线 ...

  4. rnnlm学习

    rnn-lm: 1.论文 2.公式推导 2.1 http://blog.csdn.net/a635661820/article/details/44462315 3. 工具 lstm-lm 1. 论文 ...

  5. ARM 汇编指令集 特点5:ARM 多级指令流水线

    1.为增加处理器指令流 的速度,ARM使用多级流水线. 就是举个例子: mov r1,#0 ,这条指令 分几个人做,一个人从存储器取指令,解码指令中用到的寄存器,寄存器运算. 这样三步 :如果一个人做 ...

  6. ASP.NET Core 运行原理剖析 (转载)

    1.1. 概述 在ASP.NET Core之前,ASP.NET Framework应用程序由IIS加载.Web应用程序的入口点由InetMgr.exe创建并调用托管.以初始化过程中触发HttpAppl ...

  7. Oracle中常用的语句

    1.查询锁表 SELECT a.object_name,b.session_id,c.serial#,c.program,c.username,c.command,c.machine,c.lockwa ...

  8. 我的前端工具集(六)Ajax封装token

    我的前端工具集(六)Ajax封装token   liuyuhang原创,未经允许禁止转载 在单点登陆中,或登陆验证后,不应该每次都验证用户名和密码, 也不应该将用户名密码存入cookie中(虽然很多都 ...

  9. ABAP术语-R/3 Repository Information System

    R/3 Repository Information System 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/11/1100076.ht ...

  10. 创建在类路径资源[applicationcontext]中定义名为“工厂”的bean时出错。:在设置bean属性“dataSource”时,无法解析对bean“dataSource”的引用;嵌套异常是org.springframe .beans.factory。BeanCreationException:创建名为“数据源”的bean时出错,该名称是在类路径资源[applicationcontext

    控制台报错: 创建在类路径资源[applicationcontext]中定义名为“工厂”的bean时出错.:在设置bean属性“dataSource”时,无法解析对bean“dataSource”的引 ...