主题 : ARP查找局域网正在使用的IP及其MAC 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 13889
精华: 0
发帖: 53
金钱: 270 两
威望: 54 点
综合积分: 106 分
注册时间: 2010-01-30
最后登录: 2012-04-07
楼主  发表于: 2010-05-07 12:35

 ARP查找局域网正在使用的IP及其MAC

小弟写了个程序,可以查找出局域网内正在使用的IP及所对应的MAC,在x86下完全没问题,已经可以查找出并在table上显示出相关内容,如下图所示。
但是下载到开发板就发ARP请求包出错了,用Wireshark抓包发现目标IP地址左移了16位,比如发送192.168.150.5变成发送150.5.0.0。
其中的主要文件有ip.cpp、ip.h、searchIP.c、searchIP.h,因有C程序与C++程序而使用C/C++混合编译。
若执行时在Terminal窗口出现Get host’s information failed提示信息,那么要在searchIP.c文件中的70与83行修改为相应的网卡名。






(1)在还没有做图形界面时,即只有这两个文件(searchIP.c、searchIP.h)时也出现过像现在这样的问题,即在虚拟机下可以,但下载到开发板上后也是出现发送192.168.150.5变成发送150.5.0.0。后来将结构体修改后在开发板上也能成功运行,所修改的结构体如下:
        struct arp_pkt {
                struct ether_header eh;//
                struct ether_arp ea;
                //u_char padding[18];      //修改之处:将此行注释便成功运行于开发板
        } req;


(2)下载开发板时,是用arm-linux-gcc编译产生的可执行文件
在虚拟机下时,是用linux-generic-g++编译产生可执行文件


(3)有图形界面后,在searchIP.c文件中添加如下语句在    if(searchingIP==startIP)socketinit();语句之后
searchingIP=searchingIP>>16;     //右移16位
在开发板上运行将出现发送192.168.150.5变成发送192.168.0.0
在开发板上运行时,本来只有接收到口响应包才会把IP及其MAC地址写到table上,但在发出192.168.0.0
或150.6.0.0之后,开发板仍然将192.168.0.0或150.6.0.0直接写到table表格中的IP列上,MAC列空白,如图所示
  
  



各位大侠帮帮忙啊!!!!!!!在下感激不尽啊!!!!!!!!!

以上问题已经实现,不过上面的方法在开发板上还是行不通,期待高手解决!!!!
[ 此帖被gen216ius在2010-05-24 00:13重新编辑 ]
描述:ARM版
附件: getUsedIPcpp.rar (23 K) 下载次数:41
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-05-07 13:18
呵呵,这个问题挺新鲜的。研究一把
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 13889
精华: 0
发帖: 53
金钱: 270 两
威望: 54 点
综合积分: 106 分
注册时间: 2010-01-30
最后登录: 2012-04-07
2楼  发表于: 2010-05-07 15:32
谢谢kasim加入!!!!!!
级别: 侠客
UID: 13889
精华: 0
发帖: 53
金钱: 270 两
威望: 54 点
综合积分: 106 分
注册时间: 2010-01-30
最后登录: 2012-04-07
3楼  发表于: 2010-05-08 16:11

等着吧
我自己已经试尽了多种办法,但还是没有成功,只能求助于大家了,大家帮帮忙啊!!!!小弟感激不尽啊!!!
[ 此帖被gen216ius在2010-05-09 10:12重新编辑 ]
级别: 侠客
UID: 13889
精华: 0
发帖: 53
金钱: 270 两
威望: 54 点
综合积分: 106 分
注册时间: 2010-01-30
最后登录: 2012-04-07
4楼  发表于: 2010-05-09 10:13
级别: 侠客
UID: 5706
精华: 0
发帖: 119
金钱: 780 两
威望: 406 点
综合积分: 238 分
注册时间: 2009-05-05
最后登录: 2011-05-22
5楼  发表于: 2010-05-11 17:32
下来研究研究看看
级别: 侠客
UID: 13889
精华: 0
发帖: 53
金钱: 270 两
威望: 54 点
综合积分: 106 分
注册时间: 2010-01-30
最后登录: 2012-04-07
6楼  发表于: 2010-05-12 21:20
[ 此帖被gen216ius在2010-05-13 08:08重新编辑 ]
级别: 侠客
UID: 13889
精华: 0
发帖: 53
金钱: 270 两
威望: 54 点
综合积分: 106 分
注册时间: 2010-01-30
最后登录: 2012-04-07
7楼  发表于: 2010-05-24 00:44
帖子中所要实现的功能已经实现,但上面问题仍然还是没有解决!!期待高手解决!!!!