Python--简单的端口扫描器

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.0
playload:./Scan.py www.xxx.zzz'''
    payload = sys.argv
    print '\n'
    scan(payload[1])

if __name__=='__main__':
    main()

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows系统下使用Python-nmap可以进行网络扫描和端口扫描Python-nmap是一个Python库,它封装了Nmap安全扫描工具的功能,可以通过Python代码来调用Nmap进行扫描操作。 要在Windows系统中使用Python-nmap,首先需要确保已经安装了Python和Nmap。以下是使用Python-nmap的基本步骤: 1. 安装Python:从Python官方网站下载并安装适合您系统Python版本。 2. 安装Nmap:从Nmap官方网站下载并安装适合您系统的Nmap版本。 3. 安装Python-nmap库:打开命令提示符或者PowerShell,并执行以下命令来安装Python-nmap库: ``` pip install python-nmap ``` 4. 编写Python代码:创建一个Python脚本文件,例如`scan.py`,并在其中编写扫描代码。以下是一个简单的示例: ```python import nmap nm = nmap.PortScanner() result = nm.scan('127.0.0.1', '22-443') for host in result['scan']: print('Host: %s' % host) for port in result['scan'][host]['tcp']: print('Port: %s\tState: %s' % (port, result['scan'][host]['tcp'][port]['state'])) ``` 上述代码使用了`nmap.PortScanner()`创建了一个扫描对象,然后使用`scan()`方法对指定IP地址和端口范围进行扫描。扫描结果存储在`result`变量中,可以根据需要进行处理和输出。 5. 运行Python脚本:在命令提示符或者PowerShell中执行以下命令来运行Python脚本: ``` python scan.py ``` 执行后,您将看到扫描结果输出在命令行中。 希望以上介绍对您有帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值