Ошибка ICMP-инъекции с Немезидой в Mac OS

867
Stefan Midjich

Это началось с простой задачи: отправить пакет ICMP типа 8 и кода 0 на хост в моей сети. Так как я использую свой Mac для всего, я установил Немезиду, используя 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
Просто рыбалка здесь, но что если вы попробуете `sudo -s` и затем выполните команду? squircle 13 лет назад 0
@ та же проблема. В FreeBSD я даже не использую sudo для этого, у меня просто открыт корневой терминал. Я пробовал это на OS X тоже, та же проблема. Stefan Midjich 13 лет назад 0
Ну, это то, что делает `sudo -s`; откройте корневой терминал. Так что я думаю, что это не проблема с разрешениями ... squircle 13 лет назад 0

1 ответ на вопрос

0
Majenko

Это похоже на сбой 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 из исходного кода и связать Немезиду с этой новой копией.

Вы читаете мои мысли, а также исходный код. Спасибо. Stefan Midjich 13 лет назад 0

Похожие вопросы