文章目录 1 写在前面 2 需求分析 3 几个方法 4 原理分析 5 方法实践 5.1 工具准备 5.2 详细步骤 6 经验总结 7 参考链接 8 更多分享
作者:架构师李肯
一个专注于嵌入式iot领域的架构师。有着近10年的嵌入式一线开发经验,深耕iot领域多年,熟知iot领域的业务发展,深度掌握iot领域的相关技术栈,包括但不限于主流rtos内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、主流iot云平台的对接、嵌入式iot系统的架构设计等等。拥有多项iot领域的发明专利,热衷于技术分享,有多年撰写技术博客的经验积累,连续多月获得rt-thread官方技术社区原创技术博文优秀奖,荣获csdn博客专家、csdn物联网领域优质创作者、2021年度csdn&rt-thread技术社区之星、rt-thread官方嵌入式开源社区认证专家、rt-thread 2021年度论坛之星top4、华为云云享专家(嵌入式物联网架构设计师)等荣誉。坚信【知识改变命运,技术改变世界】!
1 写在前面 在平时工作中的网络编程开发,少不了要通过抓取网络报文来分析网络问题的应用场景。有的时候,你可能通过代码排查得焦头烂额,毫无头绪,但是只要一把网络报文拎出来一看,一下子思路就打开了。
但是,一个嵌入式设备要怎么才能抓取其网络设备呢?
假如我们的这个嵌入式设备,跑的就是普通的 rtos 系统,不像嵌入式linux系统那样,还可以使用诸如 tcpdump 这种命令行工具来抓取网络报文,他们可能连基本的debug输入都不一样有,仅有一个输出log的串口。
那么,面对这种嵌入式设备,我们能够怎么抓取其网络报文呢?
本文将为你揭晓答案,且文中描述的方法也是笔者多年调试网络问题,一直在使用的方法,希望对大家有所帮助。
2 需求分析 回到问题本身,其实需求还是比较明确的,就是需要抓取一个嵌入式设备的网络报文,且这个设备不具备命令行抓取的能力,只能使用外部设备辅助完成。
同时,这个嵌入式设备可能使用的是 以太网通讯、4g/5g等蜂窝网络通讯、wi-fi通讯,针对这样多样化的通讯方式,是否能找出一种比较通用的抓包方式,满足这几种通讯方式下的抓包需求,这是我们所追求的。
3 几个方法 本文先简单介绍下,面对这种嵌入式设备的网络抓包场景,可能使用到的几种方法,但本文将会重点介绍其中的一种,其他的几种,后面有空再另行整理。
使用路由器、交互就镜像抓包 使用pc无线热点捕获抓包 使用网络代理(中转服务器)抓包 使用特殊工具抓无线空口数据包 以上几种方法,各个各的优势,适用于不同的应用场景,灵活选用即可。
像我这边目前碰到的应用场景,都是一些基于 wi-fi 通讯的终端设备,所以对我而言,采用第二种 pc无线热点捕获 抓包,就是一个最佳选择。
4 原理分析 使用 pc无线热点捕获抓包 的这种方式,网络拓扑图如下所示:
5 方法实践 5.1 工具准备 如上面描述的抓包原理,你需要:
一台具备网络能力的pc主机:如果设备需要连公网,这台主机还需要具备公网连接的能力;
一个迷你的无线网卡:最简单的就类似 360wi-fi 那种usb无线网卡;如果你准备的主机是一台笔记本的话,则可以不需要额外准备外置的无线网卡;
windows下的wireshark抓包工具:强大的网络报文抓取和分析工具;
若干终端设备:配置好终端设备,使其连接由pc发射处理的无线热点。
5.2 详细步骤 1)第一步自然把相关的工具准备好,相关的软件安装好
安装wireshark可以参考 教程,最重要的是,记得把 winpcap 和 usbpcap 安装上:
2)配置pc环境,把无线热点给发射出来
这里如果是 笔记本自带了无线网卡的,可以参考这个 教程 把无线热点搞起来。
如果是台式主机,需要外置无线网卡的,强力建议使用 360wi-fi,主要是廉价、便捷,应用这种抓包场景绰绰有余。
另外,它还有一个配套的上位机工具,长这样,基本就可以一件傻瓜式地就可以把无线热点给发射出来;同时,在上位机这还能看到当前有哪些设备正连着这个无线热点,真的非常地方便。
3)配置终端设备连接对应的无线热点
上面的步骤完成后,终端设备就可以连接上对应的无线热点了,这个时候理论上,终端就已经借助pc的网络能力,它自己也具备了对外连接网络的能力。
4)操作wireshark抓包工具
打开wireshakr软件,在首页会看到很多网卡设备,有无线的,也有有线的,这些有波浪线的表示当前有网络数据在流动:
但是,你可能会发现这里并没有那个发射无线热点的 网卡设备 (图中的wlan是我笔记本的内置无线网卡)。
我们可以查看下系统 网卡适配器:
5)配置下无线网卡适配器【关键步骤】
这个时候我们需要去配置一下无线网卡适配器,找到对应的无线网卡:
右键 -》属性,找到下面的这个选项,勾选上,最后确认:
6)刷新wireshark的网卡设备列表
wireshark的主界面,再菜单栏找到【捕获】-> 【刷新接口列表】,这个时候下面就会把无线网络给显示出来了:
7)启动wireshark抓包
双击对应的无线网卡设备,开始启动抓包,同时在终端发起一些网络交互,这时就可以看到wireshark中有网络报文刷出来了。动态图如下所示:
8)wireshark的网络报文过滤
这个操作需要知道终端侧,在访问哪个服务器,比如访问百度网页,我们需要先知道百度的ip是多少,然后利用wireshark的过滤规则,直接把这部分网络报文给帅选出来。
比如我这里查到的百度域名解析出来的ip地址是:14.215.177.224,那么我就可以这么过滤抓包,动态图如下:
比如我要抓取tls相关报文,我可以利用 端口号是443 这个特性来抓取报文:
同时,你的终端设备要访问其他服务器,也是可以用相同的操作原理把它抓出来。
9)实战网络报文分析
值得注意的是,我们这里抓取的报文可能是纯tcp的,也可能是tls的,使用wireshark的报文分析工具就可以分析出来了。
具体可以参考一些网络报文分析教程,这里不再赘述。
6 经验总结 抓包方法很多,适合自己的才是最好的; 无论哪种抓包方法,能拿到有效的网络报文就是王道,至少操作的便捷性,能用能知道; wireshark分析网络报文的能力很重要,几个重要的基础操作一定要非常熟练; 分析网络报文需要具备扎实的网络基本功,必要的时候,好好补一补网络报文的核心知识。 7 参考链接 wireshark安装教程 win10系统创建wifi热点的两种方法 wireshark使用教程 wireshark常用过滤使用方法 360随身wifi - 360wifi官网 8 更多分享 欢迎关注我的github仓库01workstation,日常分享一些开发笔记和项目实战,欢迎指正问题。
同时也非常欢迎关注我的csdn主页和专栏:
【csdn主页:架构师李肯】
【rt-thread主页:架构师李肯】
【c/c++语言编程专栏】
【gcc专栏】
【信息安全专栏】
【rt-thread开发笔记】
【freertos开发笔记】
有问题的话,可以跟我讨论,知无不答,谢谢大家。
AI产业的未来毋庸置疑 但“火拼”落地场景的时代已经到来
关于一机多联58mm便携蓝牙热敏打印机整体解决方案的介绍和应用
5G离我们究竟还有多远
意法半导体2017年第四季度财报回顾
蔚来与恩智浦开展4D成像雷达合作 可实现高级别智能驾驶功能
【RT-Thread学习笔记】如何抓取终端的网络报文
数字货币将会在2030年之前取代大约25%的国家货币
土耳其市场的安卓新机谷歌不合作了
一种基于全HVPE生长的垂直GaN肖特基势垒二极管
基于单片机和CH371USB接口芯片实现虚拟示波器的设计
空中客车Skyways无人机为海上船舶运送了首批包裹,只需10分钟
西门子SMART200 PLC和西门子1200 PLC的Modbus TCP通讯实例
磷酸铁锂电池全介绍
React Native重构即将完成,改善版本有何不同?
控制系统与自动驾驶安全设计的关系
什么是同步多处理器
如何选择非接触式检测的液位传感器?
研究人员提出利用5G移动网络容量过剩的新方法
详解为什么要在微控制器上使用TinyML?与TinyML的作用和潜力
电气装备用电线电缆的主要生产工艺流程