Linux 以100到300KB的顺序构建定制的小型TCPDUMP可执行文件
我需要为我正在进行的嵌入式项目构建一个小规模的tcpdump。由于我的嵌入式设备的内存大小有限,我需要在构建TCPDUMP时去掉所有不需要的功能。我的目标是使tcpdump可执行文件的大小小于300KB。在使用“strip tcpdump option”并在configure中禁用包选项之后,我已经达到了750KB。为了实现这一点,我想删除tcpdump的所有协议解码功能。我希望tcpdump不再具有十六进制转储功能。我在下面列出了一个需要删除的不需要的协议的初始列表Linux 以100到300KB的顺序构建定制的小型TCPDUMP可执行文件,linux,build,build-process,tcpdump,Linux,Build,Build Process,Tcpdump,我需要为我正在进行的嵌入式项目构建一个小规模的tcpdump。由于我的嵌入式设备的内存大小有限,我需要在构建TCPDUMP时去掉所有不需要的功能。我的目标是使tcpdump可执行文件的大小小于300KB。在使用“strip tcpdump option”并在configure中禁用包选项之后,我已经达到了750KB。为了实现这一点,我想删除tcpdump的所有协议解码功能。我希望tcpdump不再具有十六进制转储功能。我在下面列出了一个需要删除的不需要的协议的初始列表 print-802_11.
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中删除这些函数,并在源代码中手动删除函数调用。但后来我意识到这种方法是不可伸缩的
有更好的方法吗?通过某种方式使用配置选项
我是新来的。所以请解释一下
有更好的方法吗?通过某种方式使用配置选项
不,没有此类配置选项。你必须用不可伸缩的方式来做
“我想删除tcpdump.I的所有协议解码功能
希望tcpdump不再具有十六进制转储功能。[…]是
有更好的办法吗?”
我认为有,但方法非常不同
如果您只想从tcpdump
中获取以下信息:
- 指定接口的能力
- 是否将此接口设置为混杂模式,如果是Wi-Fi接口,则设置为监视模式
- 应用捕获过滤器
- 然后将输出放入文件中或作为十六进制到标准输出
libpcap
(这就是tcpdump
使用的BTW)从头开始编写自己的
这应该不超过100-400行C代码,这取决于您想要的选项,您将有一个非常非常小的可执行文件,并且没有比tcpdump
更多的依赖项,这需要libpcap
。所有的复杂性都在解剖中,一旦你去除了所有这些,你所拥有的基本上就是。。。一个pcap
循环
这并不难,在我看来,这比你的方法要少得多,而且更有趣
首先有一个教程(阅读30-60分钟):
…在本教程结束时,您已经掌握了程序的核心
您可以在相关SO标签中找到大量信息(并提出问题):
…并且有大约70个写得很好的手册页记录完整的
pcap
API(您最终可能会使用其中的10-20个)。您正在使用哪个库来构建tcpdump?uclibc?