我创建了一个基本的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。
我不知道如何实现此功能,在线查看无济于事。任何帮助将不胜感激。
答案 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)