我编写此脚本是为了测试单个 IP 地址,以探测 smtp 服务器上的特定用户名进行渗透测试。我现在尝试移植此脚本来运行相同的测试,但移植到一系列 IP 地址而不是单个 IP 地址。谁能阐明如何实现这一目标?
#!/usr/bin/python
import socket
import sys
users= []
for line in sys.stdin:
line = line.strip()
if line != '':
users.append(line)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((sys.argv[1], 25))
fp = s.makefile('rwb')
fp.readline()
fp.write('HELO test.example.com\r\n')
fp.flush()
fp.readline
for user in users:
fp.write('VRFY %s\r\n\ ' % user)
fp.flush()
print '%s: %s' % (user, fp.readline().strip())
fp.write('QUIT\r\n')
fp.flush()
s.close()
最佳答案
如果您使用的是 Python3.3+,这很简单
import ipaddress # new in Python3.3
start_ip, end_ip = however_you_get_these_as_strings()
ip_networks = ipaddress.summarize_address_range(
ipaddress.IPv4Address(start_ip),
ipaddress.IPv4Address(end_ip))
# list of networks between those two IPs
for network in ip_networks:
for ip in network:
# ip is an ipaddress.IPv4Address object
probe(str(ip))
# which converts nicely to str
关于用于探测 smtp 服务器的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28371555/