HackTools————7、端口扫描器三

这是一个使用Python的threading模块进行多线程编程的端口扫描器改进版,相较于前一版本,此扫描器在运行效率上有显著提升。程序能够针对指定域名扫描常见端口并返回开放状态的服务类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是上一个扫描器的改进版,采用threading模块的多线程编程提高速率,效果和第一个版本相比提升了好几个档次,对比如图(最后一行的time是程序运行时间):



程序的说明将写在注释当中:

#-*- coding:utf-8 -*-  
#2105-03-25  
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']  
result = []  
  
import socket   
import sys  
import threading  
import time  
  
  
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,port,server):  
    temp = []  
    try:  
        s = socket.socket()  
        print "Attempting to connect to "+Domain+': '+str(port)  
        s.connect((Domain,port))  
        temp.append(port)  
        temp.append(server)  
        result.append(temp)  
        s.close()  
    except:  
        pass  
          
  
def output(Domain,IP):  
    if result:  
        print '\n'+Domain+': --> '+IP  
        print '\nThe Open Port:'  
        for i in result:  
            print Domain+': %4d -->%s'%(i[0],i[1])  
    else:  
        print 'None Port!'  
  
def main():  
    print '''''\nX-man Port Scan 2.0 
payload:./Scan.py www.xxx.zzz'''  
    payload = sys.argv  
    IP = get_remote_machine_info(payload[1])  
    print '\n'  
    for port,server in zip(Port,Server):  
        t = threading.Thread(target=scan,args=(payload[1],port,server,)) #for循环创建线程,每个端口开一个线程  
        t.setDaemon(True) #将线程声明为守护线程,使其可快速退出  
        t.start()  
        time.sleep(0.1) #每个线程之间设置时间间隔,避免输出混乱  
    output(payload[1],IP)  
  
if __name__=='__main__':  
    main()  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值