@MasonWheeler-что работал большой для меня, пока я не понял, сколько шоколада я ел! Я с тех пор перешли на без сахара (тоже без сорбита, Господи...) ГУМ, и так как я спокойно жевать и я выбрасываю его в, Знаете, мусорный бак, никто не был раздражен этим. Это не значит, что я не могу сделать новый и новый, или что я думаю, мы не должны. Моя проблема заключается в том, что когда я делаю, его компания намерена претендовать на право собственности на него. Используйте [править] ссылке под вашим постом, если вы хотите обновить его. Не размещайте рядом-одинаковые ответы. Все подключено через WiFi, хотя мой основной компьютер, который всегда подключен к Пи подключены через @GerardH локальных сетей.Пилле Я не знакома с продюсером iTunes, но с большинством приложений, вы можете редактировать панели инструментов. Попробуйте правой кнопкой мыши по нему.

Вы, вероятно, нашли ошибку ядра. Может быть, я не должны пойти так далеко, как называл его ошибка, так это может быть просто, что поддержка определенного идентификатора карты не были добавлены в код ядра.

Код ettercap дело с физического уровня выглядит следующим образом:

 переключатель (ППП.ifr_hwaddr.sa_family)
{
 дело ARPHRD_ETHER:
 дело ARPHRD_METRICOM:
директиву #ifdef ARPHRD_LOOPBACK
 дело ARPHRD_LOOPBACK: 
#за endif
 л->link_type = DLT_EN10MB;
 л->link_offset = 0xe;
перерыв;
 дело ARPHRD_SLIP:
 дело ARPHRD_CSLIP:
 дело ARPHRD_SLIP6:
 дело ARPHRD_CSLIP6:
 дело ARPHRD_PPP:
 л->link_type = DLT_RAW;
перерыв;
 дело ARPHRD_FDDI:
 л->link_type = DLT_FDDI;
 л->link_offset = 0x15;
перерыв;
 /* Маркерное Кольцо */
 дело ARPHRD_IEEE802:
 дело ARPHRD_IEEE802_TR:
 дело ARPHRD_PRONET:
 л->link_type = DLT_PRONET;
 л->link_offset = 0x16;
перерыв;

по умолчанию:
 и snprintf(л->err_buf, LIBNET_ERRBUF_SIZE,
 "неизвестный физическом уровне введите 0x%X",то
ППП.ifr_hwaddr.sa_family);
 Гото плохо;
}

И вы можете проверить значения всех тех, кто определяет внутри каталога/usr/включать/нетто/if_arp.сек. И да, 0x323, оказывается, не быть любой из них. Кроме того 0x323 не любое известное устройство для чистой/if_arp.ч

Вот тестовая программа для заполнения икр.ifr_hwaddr.sa_family и распечатать его:

код #include <errno значение.ч>
#включить заголовочный файл <stdio.ч>
#включить <строка.ч>
#включить <Арпа/инет.ч>
#включают в файле <sys/ioctl вызов.ч>
#включить <stropts.ч>

#включить <чистый/если.ч>
код #include <netinet/if_ether.ч>
#включить <сеть/if_arp.ч>

инт
основной(АГДС, типа char** argv в)
{
 структура промежуточной ППП;
 инт ФД = -1;
 символ *недвижимость = аргумент argv[1];

 ФД = в Socket(PF_INET, SOCK_PACKET, htons(ETH_P_ALL));
 если (ФД == -1)
{
 если (значение errno == возникновения ошибки EPERM) {
 функции printf("номер uid/euid так 0 или CAP_NET_RAW возможностей\п");

 } еще {
 функции printf("сокет: %з\п", использовать strerror(errno значение));
}
 возвращение 1;
}

 функцию memset(&ППП, 0, оператор sizeof (ППП));
 функції strncpy(ИФР.ifr_name, недвижимость, оператор sizeof (ППП.ifr_name) -1);
 ППП.ifr_name[функция strlen(недвижимость)] = '\0';

 если (в ioctl(FD, то SIOCGIFHWADDR, &ППП) < 0 )
{
 функции printf("SIOCGIFHWADDR: %з\п", использовать strerror(errno значение));
 возвращение 1;
}

 функции printf( "ИФР: [%08x] sa_family [%02x]\Н"
 , икр.ifr_hwaddr, икр.ifr_hwaddr.sa_family);
 возврат 0;
}

Половина ее просто скопировал из кода ettercap по. В любом случае, компиляция должна быть тривиальной ССЗ -о'прог прог.с (учитывая, что источник назван прог.С) и вы должны запустить его с интерфейсом имя в качестве первого аргумента. например

[корень@ОАЗ ~]# /домашний/grochmal/tmp/и либнет/тест enp3s0
ППП: [24240001] sa_family [00]
[корень@ОАЗ ~]# /домашний/grochmal/tmp/и либнет/тест wlp2s0
ППП: [22000001] sa_family [00]

(это на моей машине)


Мы видим, что sa_family заполняется:

функции ioctl(FD, то SIOCGIFHWADDR, &ИСО)

Который работает так:

 структуру struct net_device *пр = dev_get_by_name_rcu(чистый, ППП->ifr_name);

...

 дело SIOCGIFHWADDR:
 если (!Дэв->addr_len)
 функцию memset(ИФР->ifr_hwaddr.sa_data, 0,
оператор sizeof(ИФР->ifr_hwaddr.sa_data));
еще
 функции memcpy(ИФР->ifr_hwaddr.sa_data, Дэв->dev_addr,
мин(оператор sizeof(ИФР->ifr_hwaddr.sa_data),
(реализация)разработка->addr_len));
 ИФР->ifr_hwaddr.sa_family = Дев->тип;
 возврат 0;

Где dev_get_by_name_rcu является ядром макрос, который заполняет структуру struct net_device. И так как у нас ППП->ifr_hwaddr.sa_family = Дэв->тип; заполняет sa_family тоже.


Я нашел отчет об ошибке на Кали Linux страница об этом sa_family, но Кали не использовать последнюю версию ядра.

Поэтому я бы запустить тестовую программу, чтобы убедиться, что он печатает:

ППП: [********] sa_family [323]

Тестовая программа должна быть запущена с правами root, поскольку он использует сокеты.

И затем я хотел бы попробовать новую версию ядра, чтобы проверить, будет ли ошибка была исправлена в 4.отделение ядра х (например, в Gentoo или Arch). Например, работает прямо с компакт-диска с ССЗ. Тестовая программа не имеет требований к библиотеке, поэтому он может быть легко составлен на живом компакт-диске.

Это глубокая, как я могу пойти в код ядра. Как именно sa_family определяется из устройства хэш, вне меня.