Linux 下扫描以太网ip 地址段的小工具
Tofloor
poster avatar
walking2017
deepin
2017-11-28 02:10
Author
本帖最后由 walking2017 于 2017-12-4 17:59 编辑

2017-11-03
利用周末时间加了一个功能,对于扫出来的IP (终端)可以进一步进行端口试连接,确定对方机器的某端口是否是开放的( UDP 、TCP);分享的数据库中有我收集一个表,里面几乎收录所有知名软件、服务绑定的端口,便于做分析用.

Linux 下扫描以太网ip 地址段,获取远程IP的网卡 MAC 地址与 hostname ;并根据MAC 地址的前6位 查询出设备厂商。 

开发环境: DEEPIN 15.1 Qt5.7

项目为CLion 2017 ( 集成开发环境 )的工程,可以用cmake 直接编译。Qt 只是构建了界面下层都是C原生socket 实现,没有采用Qt的库,理论上兼容性会更好一些。 运行时需要 sudo 权限。

多年写过一个windows 版本,最近刚刚换了工作岗位,对linux 平台还在熟悉中,边学边用... 利有周末时间折腾了一下重造轮子,
顺便说一下DEEPIN 的桌面版非常赞;




BUG 肯定还有不少,求指导拍砖....
分享:
https://github.com/gaochong2012/ELANTool.git
Reply Favorite View the author
All Replies
avatar
187******09
deepin
2017-11-28 02:40
#1
只能扫出IP字段,其他字段显示不粗来啊,还有你指定的cmake版本是3.8,源里最高3.7,还要手动改一下VERSION 3.7
Reply View the author
avatar
sudo_free
deepin
2017-11-28 03:11
#2
我觉得可以试试python的scapy库
Reply View the author
Comments
399913628
2017-11-29 01:14
如果可以还是C来的强些吧?虽然麻烦一些。
avatar
walking2017
deepin
2017-11-28 04:32
#3
https://bbs.deepin.org/post/149076
只能扫出IP字段,其他字段显示不粗来啊,还有你指定的cmake版本是3.8,源里最高3.7,还要手动改一下VERSION ...

需要用 sudo 运行,要权限
Reply View the author
avatar
187******09
deepin
2017-11-28 05:03
#4
https://bbs.deepin.org/post/149076
需要用 sudo 运行,要权限

还是没有啊
Reply View the author
avatar
要讲武德
deepin
2017-11-28 05:45
#5
膜拜.大神
Reply View the author
avatar
iminto
deepin
2017-11-28 06:16
#6
其实 nmap 这个命令行就足够了
Reply View the author
avatar
azs
deepin
2017-11-28 06:29
#7
nmap, 桌面版本 zenmap

还是赞赏lz
Reply View the author
avatar
walking2017
deepin
2017-11-29 00:29
#8
多线程处理得有问题,已经修正了;速度还行,255 台扫完5秒左右。
Reply View the author
avatar
sudo_free
deepin
2017-11-29 01:36
#9
https://bbs.deepin.org/user/18774 怎么定义强?方便简单算不算强?

我是从scapy入坑python的,是真的简单好用,而且跨平台
Reply View the author
avatar
181******81
deepin
2017-11-29 05:41
#10
https://bbs.deepin.org/post/149076
@399913628 怎么定义强?方便简单算不算强?

我是从scapy入坑python的,是真的简单好用,而且跨平台

我只是觉得,如果可以在不太难、时间相差不多情况下,能节省资源提高运行效率就节省资源提高运行效率咯,毕竟如果每个程序都不计硬件资源的跑,对于我这穷B,还是很难受的。
Reply View the author
avatar
wtz
deepin
2017-11-29 10:38
#11
IPV4 Address: "192.168.42.45"
Netmask:  "255.255.255.0"
Broadcast: "192.168.42.255"
0 "192.168.42.45"
initDBTable()
Error SQLiteFunt::initDBTable()
源IP[192.168.42.45]  源MAC[0A:F4:22:8E:A9:42] 目的IP[192.168.0.1]
设置socket接收超时成功
创建socket SOCK_PACKET 成功
Note: 创建ARP请求包 ......
--------------------------------

Invalid hardware address: Succès
QObject::~QObject: Timers cannot be stopped from another thread

然后就退出了。
Reply View the author
avatar
walking2017
deepin
2017-11-29 22:02
#12
https://bbs.deepin.org/post/149076
IPV4 Address: "192.168.42.45"
Netmask:  "255.255.255.0"
Broadcast: "192.168.42.255"

MACDB2.db 看一下你下载的文件中有没有这个文件,放到你执行文件一起就可以了。我程序里忘了做文件打开失败的提醒,汗...
Reply View the author
avatar
wtz
deepin
2017-11-30 03:11
#13
https://bbs.deepin.org/post/149076
MACDB2.db 看一下你下载的文件中有没有这个文件,放到你执行文件一起就可以了。我程序里忘了做文件打开失 ...

没有啊,这个文件要自己写吗?
Reply View the author
avatar
walking2017
deepin
2017-11-30 17:01
#14
https://bbs.deepin.org/post/149076
没有啊,这个文件要自己写吗?


确定文件在的,这是一个数据库里面有最新的IEEE 分配给各厂商的的MAC 地址表
Reply View the author
avatar
wtz
deepin
2017-12-01 00:26
#15
https://bbs.deepin.org/post/149076
确定文件在的,这是一个数据库里面有最新的IEEE 分配给各厂商的的MAC 地址表
...

可以运行了。
顺便也建议把CMake的版本改一下,我这边用cmake 3.7,必须要修改CMakeList强行编译。
Reply View the author
avatar
不避风云
deepin
2017-12-01 03:21
#16
不会就是实现了这个命令吧。
Reply View the author
avatar
不避风云
deepin
2017-12-01 03:21
#17
sudo nmap -sP -PI -PT 192.168.1.0/24
Reply View the author
avatar
walking2017
deepin
2017-12-01 17:16
#18
https://bbs.deepin.org/post/149076
sudo nmap -sP -PI -PT 192.168.1.0/24

不是的,我上面github 有公开代码 https://github.com/gaochong2012/ELANTool.git

没用使调命令行的方法,不好实时控制返回结果,
刚刚开始换到linux 平台上做开发,业余练练手;

原理比较简单,获取MAC 地址就是向目标IP 发一次ARP 的问询包,超时之内收到了回包中就包含了MAC 地址;超时没有收到回包就有可能目标机器不存在或不响应也有可能丢了。
获取对方的机器名有点老套,构造一个NetBiosNS 格式的封包发到对方的137 端口( UDP ) 上,由于是底层协议一般机器都会自动响应返回包就有对方的机器,取出来就可以了。
获取网卡适配器的厂商 是通过数据库查询而来 ,我公开的代码中一个IEEE 的发布数据库,全球厂商的MAC 都是向他们注册申请的。网卡MAC 地址12 位,前6位是厂商标识。ARP 获取MAC 之后就可以从数据库中查出厂商。

就这么简单。

Reply View the author
avatar
不避风云
deepin
2017-12-03 00:15
#19
https://bbs.deepin.org/post/149076
不是的,我上面github 有公开代码 https://github.com/gaochong2012/ELANTool.git

没用使调命令行的方法 ...

谢谢啊。支持支持。
Reply View the author
avatar
walking2017
deepin
2017-12-05 02:01
#20
利用周末时间加了一个功能,对于扫出来的IP (终端)可以进一步进行端口试连接,确定对方机器的某端口是否是开放的( UDP 、TCP);分享的数据库中有我收集一个表,里面几乎收录所有知名软件、服务绑定的端口,便于做分析用.

所有已同步到 github 上
Reply View the author