Python端口扫描器
我是python的新手,在某一点上被卡住了。我想只使用python 3内置库创建端口扫描程序(意味着避免scapy等),我有以下代码:Python端口扫描器,python,sockets,port,Python,Sockets,Port,我是python的新手,在某一点上被卡住了。我想只使用python 3内置库创建端口扫描程序(意味着避免scapy等),我有以下代码: import socket for i in range(1,26): s = socket.socket() s.settimeout(0.5) ip = "74.207.244.221" #scanme.nmap.org response = s.connect_ex((ip, i)) if response: pr
import socket
for i in range(1,26):
s = socket.socket()
s.settimeout(0.5)
ip = "74.207.244.221" #scanme.nmap.org
response = s.connect_ex((ip, i))
if response:
print ("%d\tclose" %i)
else:
print ("%d\topen" %i)
s.close()
现在,我想在此基础上添加两个功能:即
- 第一种情况,正常配置:
>>> os.strerror(s.connect_ex((ip, 81))) 'Connection refused'
- 其次,对于手动iptables:
iptables -A OUTPUT -p tcp --dport 81 -j DROP >>> os.strerror(s.connect_ex((ip, 81))) 'Resource temporarily unavailable'
setsockopt
TCP选项,但在linux上有:
net.ipv4.tcp_syn_retries
但是,由于您限制了套接字的超时,所有未在0.5秒内完成的操作都将超时。因此,很可能只有1或2个SYN将离开工作站。我希望现有的每个端口扫描仪都能比声誉为1的新手编写的代码工作得更好。虽然此代码可能会回答这个问题,但提供有关此代码为什么和/或如何回答这个问题的附加上下文可以提高其长期价值。
#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socekt.SOCK_STREAM)
host = 74.207.244.221
def portscan(port):
try:
s.connect((host,port))
return True
else:
return False
for x in range(1,255):
if portscan(x):
print('Port',x,'Is Open')