2016-03-11 3 views
1

Мне нужно создать небольшой размер tcpdump для встроенного проекта, над которым я работаю. Поскольку размер памяти моего встроенного устройства ограничен, мне нужно снять все нежелательные функции в TCPDUMP при его создании. Моя цель - сделать исполняемый размер tcpdump менее 300 КБ. После использования опции «strip tcpdump» и отключения параметров пакета в конфигурации я достиг 750 КБ. Для этого я хочу удалить все возможности декодирования протокола tcpdump. Я хочу, чтобы tcpdump не имел больше возможностей для создания шестнадцатеричных дампов. У меня есть приведенный ниже список нежелательных протоколов, которые необходимо удалить.Создание пользовательского небольшого размера TCPDUMP исполняемого файла в порядке от 100 до 300 КБ

print-802_11.c 
print-802_15_4.c 
print-ah.c 
print-ahcp.c 
print-aodv.c 
print-aoe.c 
print-ap1394.c 
print-atalk.c 
print-atm.c 
print-babel.c 
print-bootp.C 
print-bt.c 
print-calm-fast.c 
print-carp.c 
print-cdp.c 
print-cfm.c 
print-chdlc.c 
print-cip.c 
print-cnfp.c 
print-dccp.c 
print-decnet.c 
print-dtp.c 
print-dvmrp.c 
print-eap.c 
print-egp.c 
print-eigrp.c 
print-enc.c 
print-esp.c 
print-fddi.c 
print-forces.c 
print-ipx.c 
print-isakmp.c 
print-isoclns.c 
print-juniper.c 
print-krb.c 
print-lane.c 
print-m3ua.c 
print-sip.c 
print-sl.c 
print-sll.c 
print-sunatm.c 
print-zephyr.c 
print-usb.c 
print-vjc.c 
print-vqp.c 
print-timed.c 
print-tipc.c 
print-token.c 

Я начал удалять их из Makefile.in и удалять вызовы функций вручную в исходном коде. Но потом я понял, что этот подход не масштабируется.

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

Я новичок в этом. Поэтому, пожалуйста, объясните.

+0

какую библиотеку вы используете для создания tcpdump? uclibc? –

ответ

1

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

Нет, таких параметров конфигурации нет. Вам придется сделать это немасштабируемым способом.

0

«Я хочу, чтобы удалить все возможности декодирования протокола о ТСРйитре. Я хочу, чтобы ТСРйитр не иметь больше возможностей, что шестнадцатеричный дампа. [...] Является ли есть лучший способ сделать это?»

Я думаю, что есть, но с совсем другим подходом.

Если все, что вы хотите от tcpdump является:

  • способность определения интерфейса,

  • поставить этот интерфейс на беспорядочном режиме или нет, или в режиме монитора, если это интерфейс Wi-Fi ,

  • применить фильтр захвата,

  • , а затем выплюнуть выход в Интернет ле или в шестнадцатеричном на стандартный вывод,

... вы бы лучше написать свой собственный с нуля, используя libpcap (что tcpdump использует BTW).

Это не должно быть не более 100-400 строк кода C в зависимости от параметров, которые вы хотите иметь, вы будете иметь очень, очень небольшой исполняемый файл, и не более, чем зависимостей tcpdump которые требуют libpcap в любом случае. Вся сложность заключается в раскрытии, когда вы удаляете все это, то, что у вас есть, в основном ... a pcap loop.

Это не так сложно, и я смотрю на меня гораздо меньше, чем на ваш подход, а также на более интересную работу.

Там в учебник, чтобы начать с (30-60 минут для чтения):

http://www.tcpdump.org/pcap.html

... в конце этого руководства, вы будете уже есть ядро ​​программы.

И вы можете найти кучу информации (и задавать вопросы) в соответствующих SO тегов:

https://stackoverflow.com/tags/libpcap/info

https://stackoverflow.com/tags/pcap/info

... и около 70 хорошо написанных страниц человека документирования полный pcap API (вы в конечном итоге используете, возможно, 10-20 из них).

Смежные вопросы