我有一个电气硬件(电源逆变器),它硬连线到我的路由器,并定期将使用数据传输给第三方供应商。供应商为用户提供了一个方便的 Web 界面,供用户查看其数据图表,甚至调整设置。
虽然这很好,但我宁愿不完全依赖第三方网站来查看我自己的使用数据。令我烦恼的是,我真的无法控制这些数据被发送到哪里和何时,甚至无法直接了解什么正在发送。我想以某种方式拦截该数据,亲自查看它发送的内容并将其存储在我自己的数据库中。我猜这类似于中间人攻击,只不过我没有发起攻击,而且我是相关数据的所有者。
我有一定程度的 API 使用经验,但对网络硬件却毫无经验。我想做的事情可行吗?该怎么做?
更新:
逆变器使用型号为 EESE-D200 的 DB9 端口加密狗。加密狗如下所示:
答案1
Linux 机器是拦截数据的绝佳工具。理想的做法是拥有 2 个网络端口并拦截在它们之间传输的数据 - 尽管使用单个端口和一些创造性的网络设置也可能实现。该主题有多种解决方案和变体 - 这是其中一种可能性:
步骤 1 - 配置接口
使用 2 个 IP 地址配置您的 Linux 机器。如果您有以太网和 WIFI 连接,请像现在一样使用 WIFI 连接进行互联网通信,并将逆变器以太网插入以太网端口,然后使用您未在网络中使用的静态 IP 地址重新配置以太网接口。(IP 范围 172.16.0.0 网络掩码 255.255.255.0 通常是一个不错的选择 - 下面我假设您已在 172.16.0.1 上配置了以太网端口)或
如果你有 2 个以太网连接,请执行与上述相同的操作,使用 1 个连接连接互联网,另一个连接连接逆变器或
如果您只有 1 个以太网连接,事情会稍微困难一些。您需要在同一个以太网连接上启动 2 个虚拟接口。这可以通过 ip addr add 172.160.0.1/24 dev eth0 等命令来实现
在新网络上使用静态 IP 地址重新配置逆变器,并使用 Linux 机器外的网关(例如 172.16.0.2 网络掩码 255.255.255.0 或 /24,网关 172.16.0.1。您可以使用任何您喜欢的工作 DNS 服务器 - 我使用 1.1.1.1。)
第 2 步 - 让 Linux 机器进行路由。
使用以下命令启用转发
sysctl -w net.ipv4.ip_forward=1
echo 1 > /proc/sys/net/ipv4/ip_forward设置网络地址转换。(双重 NAT 很麻烦,但很简单,而且可能在这里就足够了)使用以下命令。您需要将 wlan0 更改为接口的地址(wlan = WIFI,eth0 = 以太网设备插入此处)
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE iptables -A FORWARD -i eth0 -j ACCEPT
此时,如果幸运的话,您的逆变器应该能够通过 Linux 机器访问互联网。
步骤 3 - 拦截流量
这里没有单一的解决方案,但您可以从像 tcpdump -nX -i eth0 src 或 dst 172.16.0.2 这样的命令开始,它将把所有通过 eth0 且 src 或 IP 地址为 172.16.0.2 的流量转储为十六进制和可读流量。
例如,另一个版本将以易于阅读的形式转储 DNS 流量 - tcpdump -i eth0 src 或 dst 172.16.0.2 和端口 53