<optgroup id="kjtai"><li id="kjtai"><source id="kjtai"></source></li></optgroup><acronym id="kjtai"><sup id="kjtai"></sup></acronym>

    <legend id="kjtai"><i id="kjtai"></i></legend>
    <span id="kjtai"><sup id="kjtai"></sup></span>
    <track id="kjtai"></track>
    1. tcpdump抓包及tshark解包方法介绍

      tshark是wireshark的命令行工具,通过shell命令抓取、解析报文。tcpdump是Linux系统下的抓包工具。wireshark和tcpdump都共同使用 libpcap作为其底层抓包的库,tshark也可以抓取报文。

      有时候需要在linux系统或者ARM开发板中进行抓包,使用tcpdump抓包更加方便,在这种场景下,一般使用tcpdump进行抓包,然后在Windows中使用wireshark来分析生成的包文件,在自动化分析或者自动化测试中,可以使用tshark来进行包解析。本文介绍使用tcpdump抓取报文后使用tshark进行报文解析。

      安装

      wireshark下载安装
      wireshark官网:https://www.wireshark.org/download.html

      # linux
      yum -y install wireshark
      yum -y install tcpdump
      

      tcpdump抓包

      tcpdump官方文档:https://www.tcpdump.org/index.html#documentation

      抓包

      抓取eth1网卡数据包,数据写入文件/tmp/packet.pcap

      tcpdump -i eth1 -w /tmp/packet.pcap  >/dev/null 2>&1 &
      

      其中

      • >/dev/null:将标准输出(控制台输出)重定向到/dev/null中,/dev/null代表 linux 的空设备文件。表示不输出内容
      • 2>&1:重定向绑定,错误输出(2)和标准输出(1)输出到同一个地方
      • >/dev/null 2>&1的作用就是丢弃标准输出和错误输出,不会输出任何信息到控制台。

      也可以只抓取特定协议的报文,比如过滤tcp报文:

      tcpdump -i eth1 tcp -w /tmp/packet.pcap  >/dev/null 2>&1 &
      

      停止抓包

      如果没有限制 tcpdump 抓包的数量(-c 参数),tcpdump 会持续抓包。可以通过 Ctrl+C 来停止抓包,或者杀掉tcpdump进程:

      killall -9 tcpdump
      

      杀掉tcpdump进程后会停止抓包。

      tshark命令解析数据包

      抓包完成后对数据包进行解析,下面介绍使用tshark解析数据包。

      tshark工具介绍

      tshark参考文档:https://www.wireshark.org/docs/man-pages/tshark.html

      如果要在windows命令行窗口使用tshark需要将Wireshark安装路径 C:\Program Files\Wireshark 添加到环境变量。

      Linux系统和windows系统tshark使用方法一样

      tshark命令解析数据包

      常用参数:

      • -r:指定需要解析的数据包
      • -T:指定数据包解析输出格式,支持格式见解码所有数据,这里介绍 -T fields,一般与-e 选项连用。
      • -e:指定过滤的字段
      • -E:可用于指定分隔符: separator=,:默认分隔符为缩进(\t)
      • -Y:过滤指定报文
      tshark [ -r <infile> ]  -T fields [ -e <field> ] -E <field print option> -Y <displaY filter>
      tshark -r packet.pcap -T fields -e 解析的字段 -E separator=,
      

      需要解析的字段可以通过Wireshark查看:
      选择要过滤的内容 -> 右键 -> Apply as Filter -> Selected

      例1:过滤具有源IP和目的IP字段的所有报文

      tshark -r packet.pcap -T fields -e ip.src -e ip.dst 
      

      例2:过滤源地址为fe80::ca3a:35ff:fe09:efa1的DHCPv6 Solicit报文,并读取UDP源端口号和IPv6目的地址。

      $ tshark -r packet.pcap -T fields  -E separator=, -Y dhcpv6.msgtype==1 -Y ipv6.src==fe80::ca3a:35ff:fe09:efa1 -e udp.srcport -e ipv6.dst
      ,ff02::2
      ,ff02::2
      ,ff02::16
      546,ff02::1:2
      546,ff02::1:2
      546,ff02::1:2
      546,ff02::1:2
      $ 
      

      过滤完成后进行进一步的分析
      比如可以使用grep命令进一步提取满足条件的报文
      过滤源地址或者目的地址为192.168.5.38的报文

      # linux
      tshark -r packet.pcap -T fields -e ip.src -e ip.dst | grep 192.168.5.38 
      # windows
      tshark -r packet.pcap -T fields -e ip.src -e ip.dst | findstr 192.168.5.38 
      

      也可以使用python、Java等高级语言进行进一步的分析,Python示例如下:

      result = os.popen("tshark -r packet.pcap -T fields -e ip.src -e ip.dst“)
      ret = result.read() # 
      for i, value in enumerate(ret.split("\n")):
            处理value值
            pass
      

      解码所有数据

      某些字段可能无法使用tshark过滤,这种情况下,可以先将pcap文件解码,tshark支持如下文件格式:

      ek|fields|json|jsonraw|pdml|ps|psml|tabs|text
      

      解码成xml和text格式文件:

      tshark -r packet.pcap -V -T pdml > packet.xml
      tshark -r packet.pcap -V -T text > packet.txt
      
      • -V:输出数据包详细信息
      • -T pdml:指定数据包解码输出格式为xml格式

      xml文档可以使用python的ElementTree工具解析:

      try:
          import xml.etree.cElementTree as ET
      except ImportError:
          import xml.etree.ElementTree as ET
      

      问题:windows tshark命令无效

      系统:windows10
      tshark已加入环境变量中
      输入tshark,显示:

      C:\Users\DELL>tshark
      The NPF driver isn't running.  You may have trouble capturing or
      listing interfaces.
      Capturing on '鏈湴杩炴帴* 9'
      

      WIreshark安装需要安装WinPcap,查看电脑已经安装了WinPcap。

      接下来以管理员身份运行命令行串口,输入net start npf 启动NPF,出现如下报错信息:

      C:\WINDOWS\system32>net start npf
      服务名无效。
      
      请键入 NET HELPMSG 2185 以获得更多的帮助。
      

      卸载WinPcap10,下载安装winpcap4.1.3:https://www.winpcap.org/install/default.htm

      重新输入net start npf 启动NPF:

      C:\WINDOWS\system32>net start npf
      请求的服务已经启动。
      
      请键入 NET HELPMSG 2182 以获得更多的帮助。
      

      启动成功!
      tshark命令也可以正常使用了

      --THE END--

      文章标题:tcpdump抓包及tshark命令解包方法介绍
      本文作者:hiyo
      本文链接:http://www.cbaiibvip.com/hiyong/p/14288239.html
      欢迎关注公众号:「测试开发小记」及时接收最新技术文章!

      posted @ 2021-02-01 19:43  测试开发小记  阅读(111)  评论(0编辑  收藏
      手机购彩 qq自动骂人工具 | 一个军长能调动多少人 | 峰回路转下一句 | 上海东方明珠渡劫 | 撩汉100句一问一答 | 鹅鹅鹅古诗搞笑版 | 年会歌曲简单好唱的歌 | 元旦祝福语简短10字 | 白话骂人大全 | 宇宙会不会是一个骗局 | 人类最后悔的十大发明 | 南海观音菩萨 | lol搞笑id | 搞笑歌曲改编 | 改编的搞笑歌曲 | 河南总部驻马店顺口溜 | 瘪犊子是什么意思 | 彩虹屁语录模板大全 | 骂渣男的短句 越毒越好 | 军长砸酒店是真的吗 |