python扫描指定范围IP加范围端口扫描

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()

你可能感兴趣的:(python,python,linux)