① python使用scp輸入兩個密碼
目錄
一、安裝pywifi
二、構建wifi密碼字典
注意啦!本地興起大齡再婚群,單身進
廣告
三、python實現wifi破解
四、結果展示
4.1選擇要破解的wifi名稱
4.2獲取字典
4.3成功破解
一、安裝pywifi
pywifi是在python中一個用於操作無線介面的模塊,可以跨平台使用,Windows和Linux都支持
在notebook或者pycharm、anaconda中安裝
pipinstallpywifi
二、構建wifi密碼字典
一般字典包括數字(0-9)、字母(a-z,區分大小寫)、特殊字元(!@#$%^&*()_+=-)
② python 實現ssh的執行遠端命令和scp的不同機器文件傳輸功能
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
def ssh_cmd(ip, passwd, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
try:
i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('password: ')
ssh.sendline(passwd)
ssh.sendline(cmd)
r = ssh.read()
print r
ret = 0
except pexpect.EOF:
print "EOF"
ssh.close()
ret = -1
except pexpect.TIMEOUT:
print "TIMEOUT"
ssh.close()
ret = -2
return ret
利用pexpect模塊我們可以做很多事情,由於他提供了自動交互功能,因此我們可以實現ftp,telnet,ssh,scp等的自動登錄,還是比較實用的。根據上面的代碼相信讀者已經知道怎麼實現了(python就是那麼簡單!)。
用
上面的代碼去完成任務還是比較費時間的,因為程序要等待自動交互出現,另外ubuntu用ssh連接就是比較慢,要進行一系列的驗證,這樣才體現出ssh
的安全。我們要提高效率,在最短的時間內完成。後來我發現了python裡面的paramiko模塊,用這個實現ssh登錄更加簡單。看下面的代碼:
復制代碼 代碼如下:
#-*- coding: utf-8 -*-
#!/usr/bin/python
import paramiko
import threading
def ssh2(ip,username,passwd,cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
# stdin.write("Y") #簡單交互,輸入 『Y'
out = stdout.readlines()
#屏幕輸出
for o in out:
print o,
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
cmd = ['cal','echo hello!']#你要執行的命令列表
username = "" #用戶名
passwd = "" #密碼
threads = [] #多線程
print "Begin......"
for i in range(1,254):
ip = '192.168.1.'+str(i)
a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
a.start()
上面的程序還是有些技巧的:
1.
利用多線程,同時發出登錄請求,同時去連接電腦,這樣速度快很多,我試了一下,如果不用多線程,直接一個一個挨著執行的話,大約5~10秒鍾才能對一台電
腦操作完,具體時間要根據命令的來決定,如果是軟體安裝或者卸載時間要更長一些。這樣下來怎麼也要一二十分鍾,用多線程後就快多了,所有的命令執行完用了
不到2分鍾!
2.最好用root用戶登錄,因為安裝或者卸載軟體的時候如果用普通用戶又會提示輸入密碼,這樣又多了一次交互,處理起來就比較麻
煩!安裝軟體時apt-get install xxx
最好加上「-y」參數,因為有時安裝或刪除軟體時提示是否繼續安裝或卸載,這又是一次自動交互!加上那個參數後就沒有人機交互了。
3. 循環時循環所有ip,因為計算機的ip是路由器自動分配的,保險起見,最好全部都執行,保證沒有遺漏的主機
4.遠端執行命令時如果有交互,可以這樣用 stdin.write("Y")來完成交互,「Y」就是輸入「Y」。
5.把所有的命令放到一個列表裡面,遍歷列表可以依次執行列表裡面的命令
6.為了更好的進行控制,最好在電腦上提前把root用戶打開,裝好ssh伺服器並讓其開機自動執行。
③ 怎樣用python實現scp
scp 功能很強大,但需要人工輸入 password, 當然可以通過把 公鑰保存在遠程主機的 ~/.ssh 目錄中,而後就不用輸入password,但這需要配置.
用 sshpass 可能在命令輸入 password, 但 需要用 「sudo apt-get install sshpass」 安裝
如果不想用上面兩種方法,可以用 expect 編寫腳本可以幫助我們自動交互
雖然 Python 也提供 pexpect 模塊,但既然 expect 很簡單,為何不直接用 os.system() 去執行呢?
下面是我編寫的類,實現了遠程復制
[html] view plain
class RemoteShell:
def __init__(self, host, user, pwd):
self.host = host
self.user = user
self.pwd = pwd
def put(self, local_path, remote_path):
scp_put = '''
spawn scp %s %s@%s:%s
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "%s\r"
} "password:" {send "%s\r"}
expect eof
exit'''
os.system("echo '%s' > scp_put.cmd" % (scp_put % (os.path.expanser(local_path), self.user, self.host, remote_path, self.pwd, self.pwd)))
os.system('expect scp_put.cmd')
os.system('rm scp_put.cmd')
但發現每次文件都沒有復制完,我想看expect 究竟做了什麼事情,還好 expect 提供 -d 參數給出更多的信息。
最後發現是被復制文件太大,expect 超時退出了
在腳本前加入 「set timeout -1" 就OK了
[html] view plain
scp_put = '''
set timeout -1
spawn scp %s %s@%s:%s
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "%s\r"
} "password:" {send "%s\r"}
expect eof
exit'''
④ python初學問題,colon expected什麼意思
colon expected是缺少冒號的意思。
題主的程序中缺少了冒號,程序無法正確執行時會提示錯誤原因,「colon expected」意思是缺少冒號,需要檢查程序代碼哪裡缺少冒號,這段程序需要在if x+y+z == 10後面和else後面分別加入英文冒號:來保證程序正確性。
這段程序正確的語法示例如下:
(4)pythonscpexpect擴展閱讀
1、python的基本語法:
Python語言利用縮進表示語句塊的開始和退出(Off-side規則),而非使用花括弧或者某種關鍵字。增加縮進表示語句塊的開始,而減少縮進則表示語句塊的退出。縮進成為了語法的一部分。
2、python多行語句寫法:
Python語句中一般以新行作為語句的結束符,但可以使用斜杠( )將一行的語句分為多行顯示。使用if、while、while、try時要以冒號:結尾,並換行將條件塊內容統一縮進。
⑤ python中通過try-except語句提供什麼功能
Python: 異常處理try-except語句和with語句的使用如下: