简单的抓包
Simple packet capturing
我有一个 GPS 跟踪器正在向我的服务器发送两个数据包。第一个包含 OBD 数据,在第二个中我们可以找到坐标。我有一个正在侦听特定端口 (Traccar) 的应用程序,但它仅捕获第二个数据包(尚未实现对没有坐标的数据包的支持)。
我想捕获这些数据包,读取 OBD 数据并将它们插入 SQL 数据库。我可以使用 tcpdump 手动执行此操作,但这当然不是解决方案。解决这个问题的最好和最有效的方法是什么?我应该使用 popen() 打开一个管道到 tcpdump 吗?还有其他办法吗?
管道' tcpdump:根据我的经验,解析 command/program 的输出总是有风险的。输出格式可能会根据程序的版本、运行 所在的平台以及使用的 LOCALE 而改变。当您部署软件时,这些惊喜就会出现。
对于更多的编码,第二个选项是嵌入 tcpdump 的核心,即 libpcap。没那么难,简单介绍一下:
http://www.tcpdump.org/pcap.html
...它会更干净,但仍然像使用 tcpdump 一样,您将 "naked on the wire" 只是看到以太网帧,而没有您可能需要的 IP、TCP、UDP 等层。
但这些(tcpdump 或 libpcap)是解决方法。
由于 Traccar 是开源的,您是否调查过添加所需功能的工作量?在这种情况下,我会花几个小时进行调查。
我有一个 GPS 跟踪器正在向我的服务器发送两个数据包。第一个包含 OBD 数据,在第二个中我们可以找到坐标。我有一个正在侦听特定端口 (Traccar) 的应用程序,但它仅捕获第二个数据包(尚未实现对没有坐标的数据包的支持)。 我想捕获这些数据包,读取 OBD 数据并将它们插入 SQL 数据库。我可以使用 tcpdump 手动执行此操作,但这当然不是解决方案。解决这个问题的最好和最有效的方法是什么?我应该使用 popen() 打开一个管道到 tcpdump 吗?还有其他办法吗?
管道' tcpdump:根据我的经验,解析 command/program 的输出总是有风险的。输出格式可能会根据程序的版本、运行 所在的平台以及使用的 LOCALE 而改变。当您部署软件时,这些惊喜就会出现。
对于更多的编码,第二个选项是嵌入 tcpdump 的核心,即 libpcap。没那么难,简单介绍一下:
http://www.tcpdump.org/pcap.html
...它会更干净,但仍然像使用 tcpdump 一样,您将 "naked on the wire" 只是看到以太网帧,而没有您可能需要的 IP、TCP、UDP 等层。
但这些(tcpdump 或 libpcap)是解决方法。
由于 Traccar 是开源的,您是否调查过添加所需功能的工作量?在这种情况下,我会花几个小时进行调查。