Первые предупреждения:
./arpspoof.c:25: warning: 'struct ether_addr' declared inside parameter list
./arpspoof.c:25: warning: its scope is only this definition or declaration,
which is probably not what you want
./arpspoof.c:26: warning: 'struct ether_addr' declared inside parameter list
Это означает, что есть строка, похожая на:
extern somefunc(struct ether_addr *arg1, ...);
Нет предварительного объявления 'struct ether_addr
', что означает, что компилятор должен обрабатывать его как новый тип, который имеет область действия только для объявления функции. И, как отмечает компилятор, это не то, что вы хотите. Вы можете обойти это, предшествуя строке объявления:
struct ether_addr;
Это говорит компилятору, что тип будет определен в конце концов. До тех пор, пока компилятору не понадобятся подробные сведения о внутренней части структуры, вы можете передавать указатели с обычным отказом от языка C.
Ошибки говорят вам, что что-то серьезно сбито с толку. Код предполагает, что ETH_H будет определен, но это не так.
Существуют и другие объявления, отличающиеся от ожидаемых в коде, которые ведут к дальнейшим предупреждениям через файл. Скорее всего, проблемы «указатель из целого числа без приведения» - это функции, которые не объявлены, поэтому они предполагаются как функции, которые возвращают целое число, но на самом деле они являются функциями, которые возвращают «char *» и поэтому должны быть объявлены.
Когда я попытался скомпилировать dsniff, фаза настройки завершилась неудачно, поскольку она не нашла libnet.
Итак:
- Убедитесь, что у вас есть соответствующие библиотеки (если у вас есть URL для соответствующей 'libnet', это будет полезно) и соответствующие заголовки.
- Посмотрите на вывод конфигурации; возможно, он не анализирует все, что нужно анализировать.
- Посмотрите, можете ли вы найти какую-либо информацию о компиляции dsniff для MacOS X или одного из выпусков BSD (MacOS X / Darwin чем-то напоминает выпуски Unix для BSD).