资讯专栏INFORMATION COLUMN

嵌入式linux系统的开发——tcpdump网络工具的应用

blastz / 2748人阅读

摘要:前言作为网络开发人员来说是最为流行的网络分析工具,可以捕捉网络中的数据报文,提供关于网络协议上的各种信息,一般在上的等平台上应用。

前言

作为网络开发人员来说Wireshark是最为流行的网络分析工具,可以捕捉网络中的数据报文,提供关于网络协议上的各种信息,一般在PC上的Windows、Linux等平台上应用。在嵌入式linux系统中由于硬件资源的限制,并且多数设备也不具备图形界面,无法使用Wireshark,但Linux下具有tcpdump这个强大的网络数据采集工具,通常我们可以使用tcpdump和Wireshark两者相结合的方式进行抓包分析。

tcpdump是基于Unix系统的命令行式的数据包嗅探工具(sniffer),可以抓取传输在网卡上的数据报文。从网络安全方面考虑,只有具备root权限的用户才可以执行tcpdump命令来获取网络上任何经过它的数据报文,即网卡的混杂模式,而普通用户无法看到网络上的数据报文。tcpdump可以使用BPF语言指定抓包过滤器以获取所需的数据报文,捕获后的数据报文存储为.cap格式,可直接用wireshark打开查看。

本文主要介绍如何使用tcpdump抓取数据报文,以及结合Wireshark进行数据分析的方法。

tcpdump安装

在LEDE发行版的配置界面中选择tcpdump选项,编译后会在bin/packages/mipsel_24kc/base
路径下生成tcpdump_4.9.2-1_mipsel_24kc.ipk、libpcap_1.8.1-1_mipsel_24kc.ipk,
其中 libpcap为tcpdump的依赖库,将ipk包添加至设备文件系统目录下进行安装。

opkg install libpcap_1.8.1-1_mipsel_24kc.ipk
opkg install tcpdump_4.9.2-1_mipsel_24kc.ipk

tcpdump语法

输入命令tcpdump开始捕获经过第一个网口的所有数据报文,在控制台上输出简要的信息,可增加-v或-vv后缀显示完整的报文信息,可针对网络协议、主机地址、端口等关键字以及and、or、not等逻辑语句过滤无用的报文信息。

tcpdump采用命令行方式,它的命令格式如下所示,包含了多种选项,如-c为收到指定数量的报文后停止捕获;-w为直接将捕获到的报文存储为路径下的文件;-expression为BPF语法编写的用于过滤报文的正则表达式(libpcap库中支持伯克利包过滤Berkeley Packet Filter语法),如果一个报文满足表达式的条件则会被捕获,如果未给出任何条件,则网络上所有的报文都会被捕获,如指明关键字 host 192.168.1.1则表明捕获192.168.1.1主机的报文。

主要选项说明:
-A:以ASCII编码打印每个报文(不包括链路层的头)
-a:将网络地址和广播地址转变成名字
-c:收到指定数量报文后停止捕获
-C:用于判断-w选项将报文写入的文件的大小是否超过该值,超过则新建文件(文件名后缀为1、2、3依次增加)
-d:将匹配信息包的代码以人们能够理解的汇编格式给出
-dd:将匹配信息包的代码以c语言程序段的格式给出
-ffffd:将匹配信息包的代码以十进制的形式给出
-D:列出当前主机的所有网卡编号和名称,与选项-i配合使用
-e:在输出行打印出数据链路层的头部信息
-f:将外部的Internet地址以数字的形式打印出来
-F:从指定的文件中读取表达式,忽略其它的表达式
-i:监听指定网卡上的数据流,未指定则使用最小编号的网卡,选项-D查看设备网卡,linux 2.2 内核及之后的版本支持any网卡,用于指代任意网卡
-l:未使用-w选项,则将报文打印到标准输出终端(默认)
-n:显示ip地址,而不是主机名
-N:不列出域名
-O:不将数据包编码最佳化
-p:不让网络界面进入混杂模式
-Q:显示输入|输出|输入输出报文
-q:快速输出,仅列出少数的传输协议信息
-r:从指定的文件中读取包(这些包一般通过-w选项产生)
-s:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,由于ethernet MTU为1500字节,使用默认参数会导致包数据丢失
-S:用绝对而非相对数值列出TCP关联数
-t:在输出的每一行不打印时间戳
-tt:在输出的每一行显示未经格式化的时间戳记
-T:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议)
-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv:输出详细的报文信息
-x/-xx/-X/-XX:以十六进制显示包内容
-w:不打印报文,直接写入文件中
-expression:过滤报文的表达式,包括类型关键字(host、net、port),传输方向关键字(src 、dst),协议关键字(fddi、ip、arp、rarp、tcp、udp),逻辑运算关键字(not、!、and、&&、or、||),以及gateway、broadcast、less、greater等。便于更直观显示,可在命令中将表达式以单引号包含,如tcpdump
-i eth0 "tcp and net 192.168.1.1 or host 192.168.1.100"
tcpdump应用

1)抓取eth0上主机192.168.1.100报文,抓到100个包后退出

tcpdump -i eth0 host 192.168.1.100 -c 100 -n

2)抓取eth0上主机192.168.1.1报文,抓到100个包后退出

tcpdump -i eth0 host 192.168.1.1 -c 100 -n

3)抓取主机192.168.1.1和除了主机192.168.1.100之外所有主机通信的数据包:

tcpdump -i eth0 host 192.168.1.1 and ! 192.168.1.100 -c 100 -n

4)抓取eth0上80端口的TCP报文,抓到100个包后退出

tcpdump -i eth0 port 80 and tcp -c 100 -n

5)抓取eth0上主机192.168.1.1接收的所有报文,抓到100个包后退出

tcpdump -i eth0 dst host 192.168.1.1 -c 100 -n

6)抓取eth0上网络192.168.1.100发送,主机192.168.1.1 接收的所有报文,抓到100个包后退出

tcpdump -i eth0 src net 192.168.1.100 and dst host 192.168.1.1 -c 100 -n

7)默认情况下tcpdump抓包结果显示在控制台,为了进一步进行数据分析,可使用-w命令将抓包结果存放在文件中,用Wireshark打开查看。

tcpdump -w /tmp/wireopen.cap

8)抓取eth0上所有tcp、udp、icmp包,此处使用or关联过滤条件

tcpdump -i eth0 tcp or udp or icmp

9)抓取设备上所有网卡的报文,可使用-D选项查看设备支持的网卡,any为虚拟设备表示捕获所有的网卡报文

tcpdump -D

tcpdump -i any

4、 Wireshark查看

将存储在linux文件系统下的.cap文件通过winscp工具下载到本地,通过Wireshark工具可打开查看。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10769.html

相关文章

  • ARP 地址解析协议 教程

    摘要:就是着么一种将转换成地址的协议。根据以太网包字段,该消息通过广播发送。具体过程参见类似这样开始监听然后发送说明有这个地址。设置接口上的地址默认是添加路由和机器互以确保连接对上将自己的有线网卡设置为对的响应。https://segmentfault.com/a/实验准备 这是我的工具: 一台linux机器,内核支持ip转发,arp代理。带无线网卡和有线网卡。比如一台笔记本电脑。 li...

    Fourierr 评论0 收藏0
  • Android external扩展工程

    摘要:的扩展工程包含在文件夹中,这是一些经过修改后适应系统的开源工程,这些工程有些在主机上运行,有些在目标机上运行工程名称工程描述高级加密标准服务器主机自动生成语法分析器程序蓝牙库主机用于二进制文件生成补丁主机目标机压缩文件工具主机模板语言,包Android的扩展工程包含在external文件夹中,这是一些经过修改后适应Android系统的开源工程,这些工程有些在主机上运行,有些在目标机上运行; ...

    fnngj 评论0 收藏0
  • Linux 网络命令必知必会之 tcpdump,一份完整抓包指南请查收!

    摘要:简介是一款平台的抓包工具。第二条是,表示报文。后台回复加群,带你进入高手如云交流群参考我的公众号云计算网络,号内有书籍和视频资源,后台回复即可领取,分享的内容包括但不限于网络云计算虚拟化容器工具编程技术等内容,欢迎大家关注。 本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关...

    caige 评论0 收藏0
  • Linux 网络命令必知必会之 tcpdump,一份完整抓包指南请查收!

    摘要:简介是一款平台的抓包工具。第二条是,表示报文。后台回复加群,带你进入高手如云交流群参考我的公众号云计算网络,号内有书籍和视频资源,后台回复即可领取,分享的内容包括但不限于网络云计算虚拟化容器工具编程技术等内容,欢迎大家关注。 本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关...

    caspar 评论0 收藏0
  • 一文掌握 Linux 性能分析之网络

    摘要:这是性能分析系列的第四篇,前三篇在这里一文掌握性能分析之篇一文掌握性能分析之内存篇一文掌握性能分析之篇比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看监控,又包括网络链路上的包转发时延吞吐量带宽等指标分析。 本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二...

    wean 评论0 收藏0

发表评论

0条评论

blastz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<