'''
Python 扫描内网所有机器端口
'''
import socket
def main():
#定义一个变量来接收输入的开始IP
ip_start = input('请输入开始的IP地址(默认为本机IP):')
#如果IP为空则设置开始IP和结束IP
if ip_start == '':
ip_start = socket.gethostbyname(socket.gethostname())
ip_end = socket.gethostbyname(socket.gethostname())
#开始IP不为空则设置结束IP
else:
ip_end = input('请输入结束IP(默认为本机IP):')
#如果IP结束地址为空则设置结束IP地址
if ip_end == '':
ip_end = socket.gethostbyname(socket.gethostname())
#定义一个变量来接收需要扫描的端口
s = input('请输入目标主机端口,(默认扫描常用端口)')
#如果接收的端口变量为空,则设置默认扫描开始端口
if s == '':
portlist = [21,22,23,80,135,139,445,1433,1502,3306,3389,8080,9015]
#如果接收的端口变量不为空,则设置结束端口
else:
#将接收的端口s转换成int型变量
startport = int(s)
#定义一个变量接收结束端口
s = input('请输入目标主机结束端口:(默认:65535)')
#如果结束端口为空,则设置默认结束端口为65535
if s =='':
endport = 65535
#默认端口不为空,则将接收到的端口字符转换成int型
else:
#将结束端口s变量转换为int型
endport = int(s)
#用range()函数生成开始端口到结束端口列表
portlist = [i for i in range(startport,endport+1)]
#获取IP地址的前三部分,并转换成字符串
pre_ip='.'.join(ip_start.split('.')[:-1])
#获取开始IP的最后部分,并转换成整数类型
start=int(ip_start.split('.')[-1])
#获取结束IP的最后部分,并转换为整数类型
end=int(ip_end.split('.')[-1])
#从起始IP最后数字到结束IP最后数字加一遍历
for i in range(start,end+1):
#IP的前三部分加小圆点加最后部分,组合成IP
ip = pre_ip+'.'+str(i)
for port in portlist:
try:
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.settimeout(0.1)
sk.connect((ip,port))
sk.settimeout(None)
print('Server %s port %d ok!'%(ip,port))
sk.close()
#结果保存在文件中
f = open("IP_Port.txt,",'a')
f.write(ip+' : '+str(port)+'\n')
f.close()
except Exception:
#print('Server %s port %d Not ok!'%(ip,port))
#print('*',end=' ')
pass
if __name__ == '__main__':
#调用main()函数
main()
Python 扫描内网所有机器端口
猜你喜欢
转载自blog.csdn.net/zheng_ruiguo/article/details/84978871
今日推荐
周排行