是否有可能使我的" raw_input - rmip "接受并转换iprange(192.168.1.1/28),然后扫描所有iprange和端口?我尝试用IPset模块做到这一点,但我有一些错误。
#!/usr/bin/env python
import socket, subprocess,sys
import os
from netaddr import *
subprocess.call('clear',shell=True)
rmip = raw_input("\t enter your ip address: ")
r1 = int(raw_input("\t enter start port :\t"))
r2 = int(raw_input("\t enter end port :\t"))
for ips in IPSet([rmip]):
try:
for port in range(r1,r2):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(1)
result = sock.connect_ex((ips, port))
if result == 0:
print " [-] Port Open: --->\t", port
sock.close()
except KeyboardInterrupt:
print "You stop this "
sys.exit()
except socket.gaierror:
print "Hostname could not be resolved"
sys.exit()
except socket.error:
print "could not connect to server"
sys.exit()
输出:
enter your ip address: 129.1.1.1/24
enter start port : 1
enter end port : 4000
Traceback (most recent call last):
File "index.py", line 17, in <module>
result = sock.connect_ex((ips, port))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
TypeError: coercing to Unicode: need string or buffer, IPAddress found