通过 ICMP 传输文件

问题描述 投票:0回答:4

我正在学习网络。我想通过ICMP协议传输文件,然后通过wireshark捕获网络流量来解码原始数据。但我不知道如何通过ICMP协议传输文件。所以我的问题是如何通过 ICMP 在主机之间传输文件。 非常感谢。

networking icmp
4个回答
5
投票

如果您坚持使用 ICMP 发送数据(这在某些用例中是合理的),我建议您阅读这篇文章那一篇。第一个还包含使用 ICMP 传输数据的客户端和服务器的概念验证 C 代码。您可以在这里找到另一个用 C++ 编写的示例

此方法背后的想法是使用 ICMP Echo (ping) 请求和响应的数据(有效负载)部分来传输数据(或本例中的文件)。大多数设备都会回复 ICMP Echo (ping) 请求,因此这是当其他协议(例如 ssh、smb、ftp 等)被阻止时传输文件的一种方式。


0
投票
理论上,解决方案是使用 python/scapy 制作一个数据包

from scapy.all import * pkt = IP(dst="1.2.3.4",src="5.6.7.8") / ICMP(type=8) / (b"This is a s3cr3t string") ) send( pkt )
要发送文件,您可以将其分成几个块,以便每个块都适合数据包,以 Base64 编码每个块,然后在接收端对其进行解码/重新组装。


0
投票
我认为任何协议都可以用来发送数据……只要您可以操作至少一位(或“标志”),就可以以 1 或 0 的流形式发送数据。莫尔斯电码。但是,由于路由路径更改,您可能会遇到丢包和/或 ping 以错误顺序到达的情况。可能的?是的。可靠的?不。


-2
投票
如果您研究

TCP/IP层,您会发现ICMP是一个互联网层协议,其目的是:

互联网控制消息协议(ICMP)是互联网协议族中的一个支持协议。它被网络设备(如路由器)用来发送错误消息和操作信息。

所以ICMP不是像HTTP或FTP等那样的数据传输协议。从技术上讲,在任何情况下都不可能使用ICMP作为数据传输协议,除非您更改ICMP的结构和所有编码,然后它将不再是ICMP。

© www.soinside.com 2019 - 2024. All rights reserved.