伙计们,我正在尝试一个简单的端口扫描程序,以使用socket.connect_ex((192.169.10.1, 80))
它来验证端口是打开还是关闭,但是它想传递多个IP和端口,因此我使用了list并使用for循环对其进行了迭代。我只获得列表中第一个IP的结果,第二个IP没有给出正确的结果,而是总是运行elif块,这可能是什么问题?有人可以指导我哪里出问题了。
我的密码:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
iplst = ['193.169.10.100', '193.169.10.101']
ports = [80, 80]
for i,j in zip(iplst,ports):
result = sock.connect_ex((i,j))
if result == 0:
print("open" , i)
elif result != 0:
print("closed", i)
Run Code Online (Sandbox Code Playgroud)
输出:
open 193.169.10.100
closed 193.169.10.101
Run Code Online (Sandbox Code Playgroud)
但是我敢肯定,两个端口都是开放的
您需要为每个(IP,端口)创建一个新的套接字:
import socket
ips = ['193.169.10.100', '193.169.10.101']
ports = [80, 80]
for ip, port in zip(ips, ports):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((ip, port))
sock.close()
assert result == 0
Run Code Online (Sandbox Code Playgroud)
同样,在完成后关闭套接字也是一个好习惯。
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |