tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04。

tcpdump的命令格式
tcpdump的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些笔者自己常用的参数:
tcpdump [-i 网卡] -nnAX '表达式'
各参数说明如下:
-i:interface 监听的网卡。
-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。
-A:以ascii的方式显示数据包,抓取web数据时很有用。
-X:数据包将会以16进制和ascii的方式显示。
表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件可以用and、or组合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。
下面进行一些命令测试,如果没有权限,可以先切换成root用户。

监听网卡eth0
$ tcpdump -i eth0
这个方式最简单了,但是用处不多,因为基本上只能看到数据包的信息刷屏,压根看不清,可以使用ctrl+c中断退出,如果真有需求,可以将输出内容重定向到一个文件,这样也更方便查看。

监听指定协议的数据
$ tcpdump -i eth0 -nn 'icmp'
这个是用来监听icmp协议的数据,就是ping命令使用的协议。类似的,如果要监听tcp或者是udp协议,只需要修改上例的icmp就可以了。ping下监听的机器,输出如下:

linux使用tcpdump抓包示例
每一行的各个数据表示的含义:
抓到包的时间 IP 发包的主机和端口 > 接收的主机和端口 数据包内容

监听指定的主机
$ tcpdump -i eth0 -nn 'host 192.168.1.231'
这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'
这样只有192.168.1.231这台主机发送的包才会被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'
这样只有192.168.1.231这台主机接收到的包才会被抓取。

监听指定端口
$ tcpdump -i eth0 -nnA 'port 80'
上例是用来监听主机的80端口收到和发送的所有数据包,结合-A参数,在web开发中,真是非常有用。

监听指定主机和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
多个条件可以用and,or连接。上例表示监听192.168.1.231主机通过80端口发送的数据包。

监听除某个端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'
如果需要排除某个端口或者主机,可以使用“!”符号,上例表示监听非22端口的数据包。

小结:
tcpdump这个功能参数很多,表达式的选项也非常多,非常强大,不过常用的功能确实不多。详情可以通过man查看系统手册。
另外在抓取web包的时候,发送网页内容都是很奇怪的字符,发现是apache开启了gzip压缩的缘故,关闭掉gzip压缩就可以了。在ubuntu 12.04下,编辑vim /etc/apache2/mods-enabled/deflate.load文件,将加载模块deflate_module的语句注释掉,然后重启apache就OK了。

--------------------------------------------------------------------------------------------------------

tcpdump采用命令行方式,它的命令格式为:
      tcpdump[ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
          [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
          [ -T 类型 ] [ -w 文件名 ] [表达式 ]   

-a    将网络地址和广播地址转变成名字;
   -d    将匹配信息包的代码以人们能够理解的汇编格式给出;
   -dd    将匹配信息包的代码以c语言程序段的格式给出;
   -ddd   将匹配信息包的代码以十进制的形式给出;
   -e    在输出行打印出数据链路层的头部信息;
   -f    将外部的Internet地址以数字的形式打印出来;
   -l    使标准输出变为缓冲行形式;
   -n    不把网络地址转换成名字;
   -t    在输出的每一行不打印时间戳;
   -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
   -vv    输出详细的报文信息;
   -c    在收到指定的包的数目后,tcpdump就会停止;
   -F    从指定的文件中读取表达式,忽略其它的表达式;
   -i    指定监听的网络接口;
   -r    从指定的文件中读取包(这些包一般通过-w选项产生);
   -w    直接将包写入文件中,并不分析和打印出来;
   -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

示例:

1、如果要抓eth0的包,命令格式如下:

tcpdump -i eth0 -w /tmp/eth0.cap

2、如果要抓192.168.1.20的包,命令格式如下:

tcpdump -i etho host 192.168.1.20 -w /tmp/temp.cap

3、如果要抓192.168.1.20的ICMP包,命令格式如下:

tcpdump -i etho host 192.168.1.20 and icmp -w /tmp/icmp.cap

4、如果要抓192.168.1.20的除端口10000,10001,10002以外的其它包,命令格式如下:

tcpdump -i etho host 192.168.1.20 and ! port 10000 and ! port 10001 and ! port 10002 -w /tmp/port.cap

5、假如要抓vlan 1的包,命令格式如下:

tcpdump -i eth0 port 80 and vlan 1 -w /tmp/vlan.cap

6、假如要抓pppoe的密码,命令格式如下:

tcpdump -i eht0 pppoes -w /tmp/pppoe.cap

7、假如要抓eth0的包,抓到10000个包后退出,命令格式如下:

tcpdump -i eth0 -c 10000 -w /tmp/temp.cap

8、在后台抓eth0在80端口的包,命令格式如下:

nohup tcpdump -i eth0 port 80 -w /tmp/temp.cap &

转载于:https://blog.51cto.com/960302601/1658972

Linux系统抓包命令tcpdump使用实例相关推荐

  1. linux系统抓包命令snoop,各个OS下抓包方法

    使用命令: tcpdump -i eth1 -s 0 -C 2 -w jh.cap -I eth1: 是指定网卡, 2 : 是2兆一个文件; Jh.cap : 是文件名. 后面会跟一个数字自动加1 l ...

  2. linux抓包命令到文件,Linux下抓包命令tcpdump详解

    tcpdump是一个命令行实用程序,可用于捕获和检查进出系统的网络流量. 它是网络管理员中用于排除网络问题和安全测试的最常用工具. 尽管名称如此,使用tcpdump,您也可以捕获非TCP流量,例如UD ...

  3. linux服务器 抓包命令 tcpdump

    tcpdump -i any -s0 -w /home/tcp.pcap 单独总结tcpdump抓包的常用命令 主要语法 过滤主机/IP: tcpdump -i eth1 host 172.16.7. ...

  4. linux抓包tcpdump并保存,linux下抓包命令--tcpdump的使用

    例:tcpdump host 172.16.29.40 and port 4600 -X -s 500 tcpdupm host 172.16.29.40 and port 4600 -X -s 50 ...

  5. Linux下抓包命令Tcpdump

    一.命令概述 tcpdump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无 ...

  6. tcpdump linux服务器抓包命令

    linux服务器 抓包命令 tcpdump tcpdump -i any -s0 -w /home/tcp.pcap 单独总结tcpdump抓包的常用命令 主要语法 过滤主机/IP: tcpdump ...

  7. linux抓网卡数据包命令,Linux抓包命令tcpdump命令图解

    原标题:Linux抓包命令tcpdump命令图解 tcpdump命令-->用来将网络中传送的数据包的"头"完全截获下来提供分析,常见的有Wireshark.在Linux中输入 ...

  8. linux下 抓包工具下载,Linux下抓包工具tcpdump使用介绍

    Linux下抓包工具tcpdump使用介绍 发布时间:2012-11-30 17:11:39   作者:佚名   我要评论 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的 ...

  9. linux服务器udp抓包工具,Linux下抓包工具tcpdump使用介绍

    点评:在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一,本文将介绍Linux下抓包工具tcpdump使用,需要的朋友可以参考下 在传统的网络分析和测试技术中,嗅探器 ...

最新文章

  1. 深入理解 Spring Boot Starters 原理
  2. Python dir和vars的区别
  3. Oracle数据库管理
  4. HALCON示例程序circles.hdev边界轮廓的圆形拟合
  5. mysql参数化查询为什么可以实现_为什么参数化SQL查询可以防止SQL注入?
  6. 【博客话题】坚持的背影--记我的入门老师
  7. 一个小案例精通lamda表达式与函数式接口
  8. signature=de15a75f36f4ab4d3249c21fbaa05791,1-out-of-n Signatures from a Variety of Keys
  9. [bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业
  10. ps怎么制作流体_PS制作流体效果的字体
  11. C语言队列(排队)先进先出.实现全部函数
  12. 献给青春的歌 · 致「 腾讯QQ 18 岁」
  13. acme申请泛域名证书
  14. Are We Ready For Learned Cardinality Estimation实验环境搭建
  15. 编码器类型原理知识汇总(增量式/绝对式/绝对值)
  16. 32位低功耗MCU的设计
  17. 解决vue项目格式报错问题_@jie
  18. 可能是最全的|适合决策AI研究的自动驾驶模拟器评测(下篇)
  19. Focal loss 和 GHM
  20. 【智能制造】见识一下某航空企业的智能制造技术架构!

热门文章

  1. 行矩阵列矩阵D3DGLU3D
  2. 存储基础知识 - 磁盘寻址(CHS寻址方式、LBA寻址方式)
  3. FFmpegInterop 库在 Windows 10 应用中的编译使用
  4. NUC_HomeWork1 -- POJ1088(DP)
  5. 将数据导入DB2带自增字段的表
  6. 每个程序员都应该经历一次软考
  7. 路由与交换 基础 1:组播
  8. kali 安装java jdk
  9. 汇编 无条件转移和过程调用指令
  10. android 8.0 3D锁屏,Android 8.0 锁屏滑动无法解锁