Mac OS 上的 Nemesis ICMP 注入失败

Mac OS 上的 Nemesis ICMP 注入失败

这从一个简单的任务开始,向我网络中的主机发送类型 8 和代码 0 的 ICMP 包。由于我使用 Mac 做所有事情,所以我使用 macports 安装了 nemesis 并尝试了以下命令。

sudo nemesis icmp -i 8 -c 0 -P ./payload -D 172.16.148.133

这导致了错误。

ERROR: Incomplete packet injection.  Only wrote -1 bytes.

ICMP Injection Failure

从那时起,我根本无法在两台已知良好的 Mac 电脑上使用 nemesis icmp,我总是收到同样的错误。

所以当我注意到这一点时,我的反应是简单地在 FreeBSD 8.2 系统上从端口 nemesis 1.4 build 26 进行编译,与在 OS X 上相同。

运行正常,没有错误,用户很开心。:)

但我不想每次使用 nemesis 时都登录 FreeBSD 系统,那么这里出了什么问题?我尝试从 sourceforge 上的源代码编译 nemesis 1.4 build 26,链接到 macports 在 /opt 中安装的 libnet,但没有什么效果。

注意:我尝试使用 root 终端在两个系统上运行这个 nemesis 命令,而不仅仅是通过 sudo。

答案1

这看起来像是 libnet 的一个失败。从 nemesis 的源代码来看:

if (got_link)
    n = libnet_write_link_layer(l2, device, pkt, icmp_packetlen);
else
    n = libnet_write_ip(sockfd, pkt, icmp_packetlen);

if (verbose == 2)
    nemesis_hexdump(pkt, icmp_packetlen, HEX_ASCII_DECODE);
if (verbose == 3)
    nemesis_hexdump(pkt, icmp_packetlen, HEX_RAW_DECODE);

if (n != icmp_packetlen)
{
    fprintf(stderr, "ERROR: Incomplete packet injection.  Only wrote "
            "%d bytes.\n", n);
}

因此故障在libnet_write_ip()libnet_write_link_layer()

我建议从源代码手动重新编译 libnet,并将 nemesis 链接到该新副本。

相关内容