python扫描指定范围IP加范围端口扫描
先扫描范围IP出来存文档中
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import os
import sys
class Ping_ip(object):
def __init__(self, start_ip, end_ip):
self.start_ip = start_ip
self.end_ip = end_ip
def check(self):
mask_one = re.match(r"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\.([0-9]{1,3})", self.start_ip)
re_one = mask_one.group(1)
self.startip_host = mask_one.group(2)
mask_two = re.match(r"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\.([0-9]{1,3})", self.end_ip)
re_two = mask_two.group(1)
self.endip_host = mask_two.group(2)
self.net_works = re_one
return re_one,re_two
def run(self):
start_host = int(self.startip_host)
end_host = int(self.endip_host) + 1
for i in range(start_host, end_host):
self.str_i = self.net_works + "." + str(i)
if sys.platform == "linux":
self.ping_re = os.system("ping -w 2 -c 2 %s" % self.str_i)
else:
self.ping_re = os.system("ping %s" % self.str_i)
self.write_txt()
def write_txt(self):
try:
if self.ping_re == 0:
f_write = open("ping_test.txt", "a")
f_write.write("%s is up \n" % self.str_i)
else:
f_write = open("ping_test.txt", "a")
f_write.write("%s is down \n" % self.str_i)
except Exception as res:
print(res)
finally:
f_write.close()
def main():
start_ip = input("请输入开始ip地址: ").strip()
end_ip = input("请输入结束ip地址: ").strip()
check_ip = Ping_ip(start_ip, end_ip)
re_one, re_two = check_ip.check()
if re_one != re_two:
print("你输入的网络位不正确")
exit()
check_ip.run()
print("=" * 50)
print("结果存在当前路径下的:ping_test.txt中,请打开查看")
print("=" * 50)
if __name__ == '__main__':
main()
下面是第2个脚本,上面先扫描出来,下面这段再扫描端口。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import socket
import re
class FindPort(object):
def __init__(self, start_port, end_port):
self.start_port = start_port
self.end_port = end_port + 1
def read_txt(self):
with open("ping_test.txt") as f:
for i in f.readlines():
if "up" in i:
re_one = re.match(r"[0-9|.]{7,15}", i)
self.line_ip = re_one.group()
self.run()
def run(self):
for port_nu in range(self.start_port, self.end_port):
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip_port = (self.line_ip, port_nu)
result = tcp_socket.connect_ex(ip_port)
if result == 0:
self.up_port = str(port_nu)
self.write()
tcp_socket.close()
def write(self):
try:
f_w = open("%s.txt" % self.line_ip, "a")
f_w.write(self.up_port + "\n")
except Exception as result_s:
print(result_s)
finally:
f_w.close()
def main():
start_port = int(input("请输入开始端口: ").strip())
end_port = int(input("请输入结束端口: ").strip())
ports = FindPort(start_port, end_port)
ports.read_txt()
if __name__ == '__main__':
main()