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了

Linux使用tcpdump抓取网络数据包示例相关推荐

  1. 用C++实现网络编程---抓取网络数据包的实现方法

    From: http://blog.csdn.net/zjl_1026_2001/article/details/2191311 做过网管或协议分析的人一般都熟悉sniffer这个工具,它可以捕捉流经 ...

  2. 四、小程序|App抓包(四)-Tcpdump抓取手机数据包分析

    小程序|App抓包(四) Tcpdump抓取手机数据包分析 一.环境需求: 1.手机需要root 2.电脑上安装SDK(建议安装android studio)也可单独安装SDk也行 下载地址 : ht ...

  3. linux原始套接字抓取网络数据包

    基于linux的抓包 一.获取数据     当我们在做网络安全或者数据探测等工作经常会用到抓包.熟悉的工具有tcpdump.wireshark等,这里我们介绍如何使用C程序原始套接字在linux系统上 ...

  4. tcpdump 抓取icmp数据包

    #eth1 可以替换成你的网卡名称 -nn 显示 IP地址 和 Mac 地址 tcpdump -nn -i eth1 icmp 今天正好有时间做一个简单的补充 tcpdump 其实和wireshark ...

  5. Wireshark抓取网络数据包分析与监听

    1.前期准备 可以通过网络嗅探软件(wireshark.Sniffer. Ethereal等)对网络数据进行监听和分析,可以去捕获一个http数据包,分析数据包中的内容信息. 本文用Wireshark ...

  6. tcpdump抓取网络

    一.抓取机顶盒指定网口(wifi,eth)获取网络的过程包,dhcp协议: 连接好板子,将板子网线,电源线,以及插上一个u盘 打开xshell,新建会话,协议选择SERIA串口选择com3,点击连接 ...

  7. 使用Mac抓取iPhone数据包(二.RVI)

    转自:http://www.winddisk.com/2012/09/01/mac_capture_iphone_package_remote_virtual_interface/ 一.Remote ...

  8. Wireshark学习笔记——如何快速抓取HTTP数据包

    0.前言 在火狐浏览器和谷歌浏览器中可以非常方便的调试network(抓取HTTP数据包),但是在360系列浏览器(兼容模式或IE标准模式)中抓取HTTP数据包就不那么那么方便了.虽然也可使用Http ...

  9. iOS—网络实用技术OC篇网络爬虫-使用java语言抓取网络数据

    网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...

最新文章

  1. GDCM:dicom文件的临床试验注释的测试程序
  2. php ci 处理图片 裁剪,Codeigniter实现智能裁剪图片的方法
  3. python访问数据库如何解决高并发_使用 Python 和 Oracle 数据库实现高并发性
  4. ssh框架http后台乱码问题
  5. 王者荣耀总决赛因天气原因延期 玩家获得皮肤碎片等补偿
  6. JS总是带有一种神奇的魔力
  7. AspectJ——预编译方式实现AOP
  8. 半导体科普:封装,IC 芯片的最终防护与统整
  9. Linux下MongoDB非正常关闭启动异常解决方法
  10. Ribbon风格下,依然叫菜单或者菜单卡、菜单页
  11. VS C++ 字符大写变换 字符小写变换 tolower toupper
  12. java用画正弦函数_用java语言绘制正弦曲线
  13. esxi 虚拟机的控制台上键盘无法输入
  14. 机器学习模型融合实战指南
  15. 编程之美-中国象棋将帅问题
  16. 厉害!6 岁学编程,19 岁收月薪 2 万 的 Offer | 程序人生 2020
  17. cuter(cuter)
  18. pvid与access的关系_关于Trunk、Hybrid、Access、Tag、Untag、Pvid的关系
  19. activiti的流程事件
  20. linux开发板lcd按压,嵌入式Linux裸机开发(十五)——LCD

热门文章

  1. numpy.lib.stride_tricks.as_strided() 高效切分数组
  2. 麦芒七怎么装鸿蒙,华为麦芒7怎么进行双清_清理缓存和恢复出厂设置的方法
  3. android点击事件的优先级,android中进程的优先级
  4. 定时器:SetTimer
  5. 深度学习——人工神经网络再掀研究热潮
  6. Dubbo 源码分析 - 集群容错之 LoadBalance
  7. VisualVM——JDK自带的性能分析工具
  8. 程序员究竟该如何提高效率
  9. Tomcat源码分析(一)------ 架构
  10. JVM源码—教你傻瓜式编译openjdk7