Ошибка ICMP-инъекции с Немезидой в Mac OS
Это началось с простой задачи: отправить пакет ICMP типа 8 и кода 0 на хост в моей сети. Поскольку я использую свой Mac для всего, я установил Nemesis с помощью macports и попробовал следующую команду.
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
И с тех пор я вообще не мог использовать nemesis icmp с двух известных хороших компьютеров Mac, я всегда получаю одну и ту же ошибку.
Поэтому мой ответ, когда я заметил это, состоял в том, чтобы просто скомпилировать его в системе FreeBSD 8.2 из портов, nemesis 1.4 build 26, так же, как в OS X.
Работает так, как должно, без ошибок, счастливый пользователь.:)
Но я не хочу входить в систему FreeBSD каждый раз, когда хочу использовать Немезиду, так что здесь не так? Я попытался скомпилировать nemesis 1.4 build 26 из исходного кода на sourceforge, связав его с libnet, установленным macports в /opt, но это не имело значения.
Примечание: я попытался выполнить эту команду nemesis в обеих системах, используя корневой терминал, а не только через sudo.
1 ответ
Это похоже на сбой libnet. Из исходного кода Немезиды:
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 из исходного кода и связать Немезиду с этой новой копией.