我目前正在使用hexinject(嗅探器和注入器),并且在使用gcc创建其目标文件后,当我尝试运行它时,它显示它无法打开适配器。
这是源文件的代码部分,它调用pcap_open_live函数;
/* Parse cmdline options */
parseopt(argc, argv);
/* Open the output device */
if ( (fp = pcap_open_live( options.device, // name of the device
BUFSIZ, // portion of the packet to capture
1, // promiscuous mode
-1, // read timeout
errbuf // error buffer
)) == NULL)
{
fprintf(stderr,"\nUnable to open the adapter. %s is not supported.\n", options.device);
return 1;
}
我在终端使用的命令是;
chetan@chetan-VirtualBox:~/hexinject-1.0/hexinject$ ./hexinject -s -i eth0
Unable to open the adapter. eth0 is not supported.
现在我尝试使用lspci检查控制器并显示;
chetan@chetan-VirtualBox:~/hexinject-1.0/hexinject$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02)
我试过ifconfig eth0并显示;
chetan@chetan-VirtualBox:~/hexinject-1.0/hexinject$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:34:d0:0f
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe34:d00f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13497 errors:0 dropped:0 overruns:0 frame:0
TX packets:11729 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10512163 (10.5 MB) TX bytes:1754437 (1.7 MB)
这意味着eth0没有问题。 但那么为什么它没有显示出应有的输出。 我在Windows 8主机上的VirtualBox上使用Ubuntu。此处使用的是hexinject的版本1.0。以下是sourceforge链接http://sourceforge.net/projects/hexinject/files/hexinject-1.0/。
我是网络编程的新手,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
首先,pcap_open_live()
完全要求errbuf
用于错误说明,但您错过了在邮件中打印它。您可以将其内容添加到打印件中,以备将来使用。
其次,我90%确定原因是您以普通用户身份启动程序,没有root权限(我猜这是由于$
shell提示符后缀)。默认情况下,仅允许root用户连接到网络接口,或者至少允许具有CAP_NET_ADMIN
和CAP_NET_RAW
功能的用户连接到网络接口。您可以在su
,sudo
或模拟。