HackTools————6.Python端口扫描器二

本文介绍了一款使用Python编写的简易端口扫描器。该工具通过Socket连接目标主机的指定端口来判断其是否开放,并能显示开放端口对应的服务类型。文中还提供了完整的源代码及运行示例。

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

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

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

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

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

程序源代码如下:

#-*- coding:utf-8 -*-  
#定义扫描的端口  
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.0 
playload:./Scan.py www.xxx.zzz'''  
    payload = sys.argv  
    print '\n'  
    scan(payload[1])  
  
if __name__=='__main__':  
    main()  
这个程序扫内网地址还挺快的,但是扫外网的有些端口比较慢,还有待优化!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值