python实现FTP弱口令扫描器与简单端口扫描器

python实现FTP弱口令扫描器与简单端口扫描器

目录

FTP弱口令扫描器

简单端口扫描器

参考:

https://blog.csdn.net/rebelqsp/article/details/22109925

https://www.aliyun.com/jiaocheng/434055.html?spm=5176.100033.2.10.3571581eheCuHX

FTP弱口令扫描器

# Ftp匿名扫描器的实现,需要使用FTP这个类
# Ftp这个类实现了Ftp客户端的大多数功能,比如连接Ftp服务器、查看服务器中的文件、上传、下载文件等功能,

import  ftplib
import time
import argparse

#FTP匿名登录扫描
# 首先用主机名构造了一个Ftp对象(即ftp),然后用这个ftp调用不带任何参数的login()函数即表示要匿名登录这个Ftp服务器,如果登录过程中没有产生异常,则表明匿名登录成功,否则匿名登录失败!
def anonScan(hostname): #参数是主机名
    try:
        with ftplib.FTP(hostname) as ftp:#创建Ftp对象
            ftp.login() #Ftp匿名登录
            print(‘\n[*] ‘ + str(hostname) + " FTP Anonymous login successful!") #不抛出异常则表明登录成功
            return True
    except Exception as e:#抛出异常则表明匿名登录失败
         print(‘\n[-] ‘ + str(hostname) + " FTP Anonymous logon failure!")
         return False

# FTP弱口令扫描==暴力破解
# Ftp弱口令的扫描依赖于用户名和密码字典,我们的实验环境中会提供 pwd.txt 作为密码字典,字典的格式如下图所示:
# 用户名:密码

# 循环从字典中读取用户名和密码并尝试登陆,登陆成功则表明找到用户名和密码。由于这个函数将主机名定义成了可以用“,”分割的字符串。找到密码并不会终止程序,而是会继续扫描其他主机的弱口令,直到所有的主机都扫描一遍。
def vlcLogin(hostname, pwdFile):#参数(主机名,字典文件)
    try:
        with open(pwdFile, ‘r‘) as pf:#打开字典文件
            for line in pf.readlines(): #循环读取字典文件中的每一行
                time.sleep(1) #等待1秒
                userName = line.split(‘:‘)[0] #从读取的内容中取出用户名
                passWord = line.split(‘:‘)[1].strip(‘/r‘).strip(‘/n‘) #从读取的内容中取出密码
                print(‘[+]‘+str(hostname)+‘:Trying: ‘ + userName + ‘:‘ + passWord)
                try:
                    with ftplib.FTP(hostname) as ftp:#以主机名为参数构造Ftp对象
                        ftp.login(userName, passWord) #使用读取出的用户名密码登录Ftp服务器
                        #如果没有产生异常则表示登录成功,打印主机名、用户名和密码
                        print(‘[*] ‘ + str(hostname) + ‘ FTP Login successful: ‘+ userName + ‘:‘ + passWord)
                        return (userName, passWord)
                except Exception as e:
                # 产生异常表示没有登录成功,这里我们不用管它,继续尝试其他用户名、密码
                    pass
            print("破解失败")

    except IOError as e:
            print(‘Error: the password file does not exist!‘)
            print(‘[-] Cannot crack the FTP password, please change the password dictionary try again!‘)
            return (None,None)

def main():
    parser = argparse.ArgumentParser(description=‘FTP Scanner‘)
    # 添加-H命令dest可以理解为咱们解析时获取-H参数后面值的变量名,help是这个命令的帮助信息
    parser.add_argument(‘-H‘, dest=‘hostName‘, help=‘The host list with ","space‘)
    parser.add_argument(‘-f‘, dest=‘pwdFile‘, help=‘Password dictionary file‘)
    options = None
    try:
        options = parser.parse_args()
    except:
        print(parser.parse_args([‘-h‘]))

    ip = str(options.hostName)
    pwdFile = str(options.pwdFile)

    if  anonScan(ip):pass
    else:vlcLogin(ip,pwdFile)

if __name__ == ‘__main__‘:
    main()

简单端口扫描器

这里使用多线程的操作是很有必要的。这里,一个很自然的思路就是为每一个端口单独开一个线程进行扫描。
所以你也可以将需要扫描的端口列表定为从Nmap中得到的前1000个使用频率最高的端口,例如下面:port_list = [1,3,6,9,13,17,19,20,21,22,23,24,25,30,32,37,42,49,53,70,79,80,81,82,83,84,88,89,99,106,109,110,113,119,125,135,139,143,146,161,163,179,199,211,222,254,255,259,264,280,301,306,3]

  

对于一个给定的ip地址,扫描的过程是这样的:
1. 每一个端口创建一个线程,添加到线程列表
2. 利用connect_ex函数对该(ip,port)进行连接操作。 3. 调用thread.start()和thread.join()方法,使扫描的子线程开始工作并且命令主线程等待子线程死亡后再结束。4. 重复这个过程直到所有的端口都被扫描过。

  

import socket, time, threading
socket.setdefaulttimeout(3)

def socket_port(ip,port):
    """
    输入IP和端口号,扫描判断端口是否开放
    """

    try:
        if port>=65535:
            print(‘端口扫描结束‘)
        s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result=s.connect_ex((ip,port)) #返回值为0则表示端口open
        if result==0:
            print(ip+‘:‘,port,‘端口开放‘)
        s.close() #
    except:
        print(‘端口扫描异常‘)

def ip_scan(ip,thread_list):
    """
    输入IP,扫描IP的0-65534端口情况
    """

    try:
        print(‘开始扫描 %s‘ % ip)
        start_time=time.time()
        for i in range(0,65534):
            t = threading.Thread(target=socket_port,args=(ip,i))
            t.start()
            thread_list.append(t)
        for thread in thread_list:
            thread.join()
        print(‘扫描端口完成,总共用时 :%.2f‘ %(time.time()-start_time))
    except:
        print(‘扫描ip出错‘)

if __name__==‘__main__‘:
    ip=input(‘Input the ip you want to scan:\n‘)
    thread_list=[]
    lock = threading.Lock()
    ip_scan(ip,thread_list)

  

原文地址:https://www.cnblogs.com/-wenli/p/10258203.html

时间: 2024-08-08 22:57:35

python实现FTP弱口令扫描器与简单端口扫描器的相关文章

FTP弱口令猜解【python脚本】

ftp弱口令猜解 python脚本: #! /usr/bin/env python # _*_ coding:utf-8 _*_ import ftplib,time username_list=['root','ftp','admin'] password_list=['root','123','ftp','oracle'] def ftp(ip,port=21): for username in username_list: user =username.rstrip() for passw

弱口令检测和端口扫描

一.实验环境 在Linux 6.0 以上版本上操作,并且用远程连接虚拟机rhk-2 二.操作脚本 1.光盘挂载 > mount /dev/cdrom /mnt 2.创建用户和设置用户密码 > useradd lisi > passwd lisi 3.建立yum仓库 > cd /etc/yum.repos.d/ > vim aaa.repo > ---[aaa] > ---name=test > ---baseurl=file:///mnt > ---e

mac/unix系统:C++实现一个端口扫描器

在比较早以前,我用过S扫描器, 以及大名鼎鼎的nmap扫描器, 可以快速扫描某个主机开放的端口, 今天使用C实现这样一个软件, 编译环境为Mac, 系统版本10.11.6: #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <unistd.h> #include <time.h> #include <sys/types.h> #include

python 写的http后台弱口令爆破工具

# -*- coding: utf-8 -*- # 利用python 写的多线程爆破后台用户名+密码(自备字典),比较实用,即使是在信息安全这么重视的今天,还是有人不加验证码或者异常访问限制之类的登陆验证方式,这样就很# 容易被弱口令爆破工具拿下,(本代码仅限学习实用,禁止进行web攻击,不承担法律责任) import urllib2 import urllib import httplib import threading headers = {"Content-Type":&quo

python ssh弱口令爆破多线程脚本及遇到的一些错误与问题

练习写了个SSH弱口令爆破多线程脚本,遇到的问题 1.一开始想import pexpect 中的pxssh 然而却一直该有错误, ImportError: cannot import name spawn google了下问题都说的很模糊也不清楚.有的说是pexpect模块没安装好,有的说是python import的问题,因为在lib中已经有了spawn模块,与pexpect模块中的spawn重名了,所以报错.但也都没说清楚该这么弄.最后在here这里看到了问题原因,原来是pexpect根本不

X-SCAN扫描器插件(MYSQL弱口令以及Mongodb未授权)

因为在很多时候的内网扫描里面没有授权的WIN的好用的,稍微小点的弱口令扫描器(生成报告,多种服务),编译成了插件,再自己弄了个MONGODB的扫描插件用着. X-SCAN加载以后: MONGODB.plug: MYSQL.plug: 扫描: X-SCAN Scan Plugs1.MYSQL弱口令扫描2.MONGODB未授权扫描 X-SCAN下载:http://www.xfocus.net/tools/200507/1057.html SDK:http://www.xfocus.net/proje

使用Python编写简单的端口扫描器的实例分享【转】

转自 使用Python编写简单的端口扫描器的实例分享_python_脚本之家 http://www.jb51.net/article/76630.htm -*- coding:utf8 -*- #!/usr/bin/python # Python: 2.7.8 # Platform: Windows # Authro: wucl # Program: 端口扫描 # History: 2015.6.1 import socket, time, thread socket.setdefaulttim

linux安全---系统更新+弱口令检测工具+nmap扫描工具

1.添加yum及更新系统 a.更新设置: echo  "0 3 * * 6 yum -y  update" >>/var/spool/cron/root b.添加repo源也叫yum源 添加国内mirrors,提速: cd  /etc/yum.repos.d/ mv  ./*  /root/ wget http://mirrors.aliyun.com/repo/Centos-6.repo   ##下载阿里云yum源 yum  makecache  ##生成缓存 yum  

批量扫内网弱口令

公司弱口令一直没有杜绝掉,很多时候都需要安全部门定期扫描,发现弱口令,责令运维去修改弱口令 今天推荐一款比较不错的工具 hydra 和medusa 这两款都是kali 和bt 自带的 hydra 很奇怪,功能一直无法实现,重点介绍medusa 用法很简单 medusa -h ip -u user -P password -M ssh/ftp/telnet/http 支持很多服务破解 -H target_ip  list  批量扫弱口令