扫描子网范围,Python 2.7端口扫描程序

时间:2017-07-18 13:01:25

标签: python python-2.7 sockets

我创建了一个基本的Python端口扫描程序,它允许我扫描IP地址或主机名,并可以指定特定的端口,或定义一系列要扫描的端口。我的代码如下:

function myFunction() {
var str = document.getElementById("demo").innerHTML; 
var res = str.replace("Hi", "Hello");
document.getElementById("demo").innerHTML = res;
}

我知道所有这些代码是如何工作的,但我需要实现一个允许我扫描IP地址的本地子网的功能,所以如果我运行程序为(python portscanner.py -t 192.168.1.0 -p 1 -50)它将扫描本地子网中的所有IP,即192.168.1.1 - 192.168.1.255。

我不知道如何实现此功能,在线查看无济于事。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

built-in ipaddress module可以帮助您解决此问题。链接的文档页面包括以下示例:

>>> net4 = ipaddress.ip_network('192.0.2.0/24')
>>> for x in net4.hosts():
...     print(x)  
192.0.2.1
192.0.2.2
192.0.2.3
192.0.2.4
...
192.0.2.252
192.0.2.253
192.0.2.254

我强烈建议您考虑使用CIDR Notation来显示IP地址范围,因为该库可以直接处理表示。

由于评论显示您需要一个最后一个字节为零的IP地址才能被视为/24子网,我建议您在main函数中使用以下内容:

tgtHost = options.tgtHost
if tgtHost.endswith('.0'):
    hosts = ipaddress.ip_network(tgtHost+'/24')
else:
    hosts = [tgtHost]
...
# port handling stuff
...
for tgtHost in hosts:
    portScan(tgtHost, tgtPorts)