那天晚上
小明和你一樣
在某個小網站上搜尋某些
私密的學習資料
突然看到論壇有人提供了
一個非常牛逼的資源
小明懷着激動的心情
下載了下來
他懷着激動的心情
打開了這個壓縮文件
看到就隻有這麼一個 txt
小明就是一頓雙擊
可是突然發現
這玩意居然需要密碼
???
褲子都脫了
你給我看這個?
小明隻好找到樓主
求他給下解壓密碼
對方隻是冷淡的回應了一句
“250塊錢不講價”
小明摸了摸自己
剛穿上褲子的口袋
感歎了一句:
罵了一句樓主沒良心之後
小明歎了口氣...
回到 zip 文件面前
想着碰碰運氣
随便輸了幾個密碼
可惜都是錯誤的
這可咋辦呢?
看不到文件内容
心理賊難受
過了一會
小明靈光一閃
這不,關注了
“學習 Python 的正确姿勢”
這個公衆号有段時間了
自己用 Python 來把密碼給破解了
應該不難吧?
于是小明看了一下
Python 文檔
找到了一個叫做
zipfile 的庫
專門用來操作 zip 文件的
往下拉
小明突然看到這個方法
小明心中一樂
這不正是我想要的嘛
使用 extractall 方法解壓文件
pwd 傳入 zip 密碼就可以了
自己不知道密碼
一個一個試就太慢了
小明突然想到了這玩意
讓 Python 瘋狂的去調用這個 extractall 方法
每次傳入的 pwd 都不同
直到試到密碼正确為止
這不就隻是時間問題了麼?
思路有了
代碼撸起
小明希望可以開發一個破解腳本
說不定以後還可以用得着
像這樣
可以讓 Python 直接暴力破解
也可以傳入自定義的密碼字典文件去破解
于是他使用了 click 來定義
命令參數的使用
可以通過 b 的參數值
判斷使用哪種破解方式
首先來寫一下字典破解的方式
使用這種方式
說明用戶手上有密碼字典文件了
那麼隻要讀取這些密碼
挨個去解壓就 ok
首先使用 ZipFile 打開
要破解的壓縮文件
接着打開用戶傳入的字典文件
挨個密碼讀取
接着就可以調用 extractall
來依次嘗試密碼了
如果沒報密碼錯誤
說明密碼正确
把正确的密碼打印出來
否則就是錯誤密碼
或者
你這字典密碼壓根就沒有正确的密碼
ok
傳入一個 10000 個密碼的字典文件
試着運行一波
恩,還可以
不過字典文件密碼太少
沒那麼輕易找得到
接下來再來寫另一種情況
當用戶字典密碼文件找不到正确的
或者用戶壓根就沒有字典密碼咋辦
可能你也想到了
可以使用叠代呀
于是
小明把鍵盤的按鈕都
死命敲了個遍
然後使用 itertools 的 product
就可以叠代生成各種密碼了
比如要生成各種 6 位的密碼
就可以這樣
運行起來就是這樣的
因為不知道密碼的長度
所以可以從一位數的密碼開始生成
然後逐個擊破
同樣的
将每次生成的密碼
逐個嘗試
如果發現一位數的密碼都不正确
就将生成的密碼長度 1
以此類推
來試試
恩,有内味了
寫完之後
小明就開始跑他的壓縮文件了
等啊等啊等啊
感覺密碼應該不是很簡單
需要等一段時間
索性就讓它跑着
然後睡覺去了
小明第二天起來
發現密碼出來了!!
雖然小明感覺被這密碼
嘲諷了一番
但還是懷着激動的心情
小明打開了壓縮文件
輸入了密碼
密碼正确
打開文件
天機不可洩露
小明看到之後
直接哭暈在廁所
(完)
本故事純屬虛構
如有雷同
???
咱們下回見
peace!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!