9

我正在尝试在 iPhone 上生成 ARP(地址解析协议)请求数据包并侦听返回的相关响应。

谷歌搜索让我陷入了死胡同。为了发送逻辑层数据包,我需要类似于原始套接字的东西,但需要超级用户权限才能创建它们。我试图避免越狱我的手机。

有很多 c 代码可以做到这一点,但由于权限,我找不到任何可以转换为 iOS 的东西。

当我决定 Wireshark 我拥有的几个网络发现应用程序时,我已经准备好认输了。即“Fing”和“Pinggy”(顺便说一句,向 Fing 和 Pinggy 致敬……很棒的应用程序!)

https://itunes.apple.com/us/app/pinggy/id562201096?mt=8

https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8

与这些 iPhone 应用程序一起运行 Wireshark 表明它们会执行从 XXX.XXX.X.0 一直到 XXX.XXX.X.255 的 ARP 扫描。我没有看到任何 ICMP 数据包与“ARP”同时发出。这让我相信在 iOS 上确实可以发送和接收 ARP 数据包。

我考虑过 ping 扫描,假设它会自行生成 ARP 请求。但是,我仍然需要一个原始套接字来收听响应,对吗?

问题:在逻辑层发送/接收数据包有什么可用的?专门用于发送接收ARP数据包?我错过了什么基本的东西吗?

提前致谢!

4

2 回答 2

3

当我尝试 ping 有问题的设备时,ARP 请求确实会发出。与 ping 扫描仪一起运行的 Wireshark 会话可以看到这一点。我发现我无法重现我之前看到的“丢失的设备”,这导致我问了我原来的问题。

所以,回答我自己的问题:在我的子网上进行简单的 ping 扫描时,ARP 请求是按 IP 地址发送的。我会看到 ARP 请求发出(使用 Wireshark)以及 ping 请求。如果您需要生成 ARP 请求,只需发送 ping 即可。

即使“有问题的”设备不会响应 ping 请求,也会通知 ARP 表它的存在。

于 2013-04-24T19:49:48.010 回答
1

你不能做你想做的事,并在 AppStore 中获取应用程序,因为你想要做的事情不在公共 API 中。

因此,为了在您自己的网络或企业分布式应用程序上进行测试,您可以做的一件事是查看私有/未记录的 API。

在https://github.com/nst/iOS-Runtime-Headers维护了一个这样的列表,但我不能保证它的准确性。

祝你好运!

于 2013-04-24T19:57:06.657 回答