1. 程式人生 > 實用技巧 >Nginx proxy_pass詳解

Nginx proxy_pass詳解

我們的密碼破解工具一共分為如下六個部分,前面四個部分我們都有在之前的文章中介紹過了

  • 使用者圖形介面——GUI程式設計
  • 密碼字典獲取——Excel檔案讀取
  • 資料庫類——MySQL、Oracle和SQL server
  • 郵件類——IMAP、POP3和SMTP
  • 檔案傳輸類——FTP
  • 運維類——SSH

今天我們再將剩下來的ssh、ftp和SQL server協議的登入過程模擬出來看一看。

SSH登入驗證

SSH的登入需要我們安裝一個paramiko第三方模組,安裝命令:

pip install paramiko

我們的登入驗證程式碼是這樣的

import paramiko

server_ip = '192.168.106.1'
port = 22
user = 'admin'
password = 'admin'
print("=======破解SSH協議========")
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
ssh.connect(hostname=server_ip, port=port, username=user, password=password)
print("使用者名稱:%s,密碼:%s登入成功\n" % (user, password))
except:
print("使用者名稱:%s,密碼:%s無法登入成功\n" % (user, password))

從程式碼中看出我們要驗證SSH使用者名稱密碼需要四個引數:伺服器地址、伺服器埠、使用者名稱和密碼。輸出使用者名稱密碼的驗證結果

FTP登入驗證

FTP連線可以直接使用python內建模組——ftplib,連線過程編碼如下:

import ftplib

server_ip = '127.0.0.1'
port = 21
user = 'admin'
password = 'admin'
print("=======破解FTP協議========")

ftp = ftplib.FTP()
ftp.connect(server_ip, port)
try:
ftp.login(user, password)
ftp.quit()
print("使用者名稱:%s,密碼:%s登入成功\n" % (user, password))
except:
print("使用者名稱:%s,密碼:%s無法登入成功\n" % (user, password))

從程式碼中看出我們要驗證FTP使用者名稱密碼需要四個引數:伺服器地址、伺服器埠、使用者名稱和密碼。輸出使用者名稱密碼的驗證結果

SQL server登入驗證

連線SQL server資料庫需要我們安裝第三方模組——pymssql,安裝命令如下:

pip install pymssql

安裝完成後,我們的使用者名稱密碼驗證編碼如下:

import pymssql

server_ip = '192.168.106.100'
port = '51502'
user = 'sa'
password = '123456'
print("=======破解SQL server協議========")
try:
pymssql.connect(server_ip, user, password,port=port)
print("使用者名稱:%s,密碼:%s登入成功\n" % (user, password))
except :
print("使用者名稱:%s,密碼:%s無法登入成功\n" % (user, password))

同樣是可以看到我們驗證SQL server的使用者名稱密碼需要四個輸入引數:伺服器地址、伺服器埠、使用者名稱和密碼。輸出使用者名稱密碼的驗證結果

總結

接下來我們同樣總結一下這三個協議的輸入輸出引數。

經過兩天的時間對協議的連線梳理,我們發現所有的協議破解都是需要四個輸入引數:伺服器地址、伺服器埠、使用者名稱和密碼。但是對於郵件協議和其它網路協議不一致的地方在於它們的使用者名稱需要符合特殊的格式。

這樣梳理之後,我們發現我們的密碼破解工具輸入引數應該是五個,除了前面說的伺服器地址、伺服器埠、使用者名稱和密碼以外,再新增一個破解的協議型別。輸出為破解結果。