我有一个嵌入式设备,该设备使用TCP和UDP使用一系列端口上的自定义协议以及DHCP,DNS,NTP和ICMP ping连接到Internet。它有两个接口-GPRS调制解调器和以太网套接字。

我想构建一个代理,以便可以篡改以太网端的通信。理想情况下,这将是一个允许选择转发或拦截和修改通信的框架。 >
任何人都有指导吗?

编辑:这与逆向工程有关,因为不了解自定义协议。通过对连接进行MITM,可以更好地理解协议,例如数据包丢失时会发生什么?看起来序号重要吗?等

#1 楼

我认为“连接到互联网”仅表示“使用DHCP查找IP参数,然后使用所发现的内容发送TCP / UDP数据包”。我怀疑该设备实际上会检查“ Internet”是否可以访问,只是它可能尝试连接DNS找到IP地址的服务器。端口以跟踪设备在网络上的工作,或者在设备要求时返回某些计算机的IP作为路由器。之后,每个数据包都会发送到您的计算机,您可以在其中检查,丢弃或更改它。重新编写所有TCP连接-我不知道UDP是否也能正常工作。在文档中,有许多建议如何与路由表打交道,以通过计算机路由通信,因此,无论您是使用它们的软件进行扩展还是编写自己的软件,它都将有所帮助。

评论


一旦连接到网络,设备便会连续ping通网关和服务器,因此它实际上是在检查与Internet的连接。已经使用带有镜像端口的交换机进行监视,但这不允许我丢弃数据包,对吗?由于交换机已经将它们发送到网关。

– Cyber​​gibbons
2014年5月23日下午6:54

不,仅交换机是不允许您丢弃数据包的。如果您是我,我会设置一个Linux机器,然后更改dhcp以将该Linux机器作为设备的路由器返回。然后,使用iptables根据模式丢弃数据包,或将其重新路由到包装盒上的某些软件,然后使用mitmproxy更改发生的情况。 mitmproxy文档上有一些不错的示例。

–贡特拉姆·布洛姆(Guntram Blohm)
2014年5月23日7:10

#2 楼

如果要分配控制权,请尝试另一种方法:Scapy


Scapy是功能强大的交互式数据包处理程序。它能够伪造或解码各种协议的数据包,在线发送它们,捕获它们,匹配请求和答复等等。