Python--简单的端口扫描器

来源:互联网 发布:js改变inpute宽度 编辑:程序博客网 时间:2024/04/28 03:10

Python端口扫描器

最近开始看Python网络编程,写了一个简单的端口扫描器,原理很简单。就是用socket连接对应的端口,若能连接成功则端口开启,否则关闭。这是一个命令行工具,在命令行下运行:

Scan.py www.csdn.net
显示如图:


对于其中的几个点做下说明:

1、gethostbyname()  获取远程设备的IP地址

2、sys.argv  获取命令行参数,其中argv[0]是程序的路径


#-*- coding:utf-8 -*-#2105-03-18#定义扫描的端口Port = [ 80,21,23,22,25,110,443,1080,3306,3389,1521,1433]#定义端口对应的服务Server = ['HTTP','FTP','TELNET','SSH','SMTP','POP3','HTTPS','SOCKS','MYSQL','Misrosoft RDP','Oracle','Sql Server']import socket import sys#获取目标站点的IP地址def get_remote_machine_info(Domain):    try:        return socket.gethostbyname(Domain)    except socket.error,e:        print '%s: %s'%(Domain,e)        return 0#进行扫描def scan(Domain):    IP = get_remote_machine_info(Domain)    if IP:        result = []        for port,server in zip(Port,Server):            temp = []            try:                s = socket.socket()                print "Attempting to connect to "+Domain+': '+str(port)                s.connect((Domain,port))                #print 'Port '+str(port)+' open:\n'                temp.append(port)                temp.append(server)                result.append(temp)                s.close()            except:pass        if result:            print '\n'+Domain+': --> '+IP            print '\nThe Open Port:'            for i in result:                print Domain+': %4d -->%s'%(i[0],i[1])        def main():    print '''\nX-man Port Scan 1.0playload:./Scan.py www.xxx.zzz'''    payload = sys.argv    print '\n'    scan(payload[1])if __name__=='__main__':    main()

这个程序扫内网地址还挺快的,但是扫外网的有些端口比较慢,还有待优化!

0 0
原创粉丝点击