自学python时写的简易端口扫描器
# -*- coding: utf-8 -*- import socket import re def get_port_status(server_ip, server_port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(3) try: s.connect((server_ip, server_port)) print('{} port {} is opened'.format(server_ip, server_port)) except Exception as err: pass finally: s.close() def main(): ip = input('暂不支持域名\r\n请输入IP地址(默认为127.0.0.1):') pattern_ip = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}') # pattern_cn = re.compile(r'(\w+\.){2}\w+') # host_cn = pattern_cn.match(ip) host_ip = pattern_ip.match(ip) if ip != '': if host_ip: # socket.gethostbyname(ip) ip = host_ip.group() else: print('格式输入错误') exit(-1) else: ip = '127.0.0.1' port = input('请输入端口,多个端口号以空格分隔(默认为1-65535):') if port == '': port_start = 1 port_end = 65536 port = range(port_start, port_end) for p in port: get_port_status(ip, int(p)) elif port != '': port = port.split(' ') for i in port: get_port_status(ip, int(i)) else: get_port_status(ip, port) if __name__ == '__main__': main()