最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼

 更新時(shí)間:2023年08月27日 10:03:30   作者:NewJune  
很多瀏覽器都貼心地提供了保存用戶密碼功能,用戶一旦開啟,就不需要每次都輸入用戶名、密碼,非常方便,作為python腳本,能否拿到用戶提前保存在瀏覽器中的用戶名密碼,用以自動(dòng)登錄呢,下面我們就來看看吧

很多瀏覽器都貼心地提供了保存用戶密碼功能,用戶一旦開啟,就不需要每次都輸入用戶名、密碼,非常方便。作為python腳本,能否拿到用戶提前保存在瀏覽器中的用戶名密碼,用以自動(dòng)登錄呢?必須有,小爬已經(jīng)提前踩過很多坑,找到了可行的方案。

以Chrome瀏覽器為例,瀏覽器中的用戶數(shù)據(jù)(包含加密后的密碼)都存在下圖所示的位置中:

文件的路徑就像這樣 C: => Users => <Your_Name> => AppData =>Local => Google => Chrome => User Data =>Local State

由于每臺(tái)電腦的用戶名是不確定的,因此小爬這里用python中的OS庫來動(dòng)態(tài)得到:

local_computer_directory_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome","User Data", "Local State")

知道了具體位置后,我們需要先拿到加密后的密文,顯然該密碼肯定不是以明文的形式保存在文件中,否則安全無法保證。獲取密文之前,還得先知道用于加密的密鑰,這需要先安裝pycryptodomex庫,直接用pip來安裝即可。一切就緒,現(xiàn)在編寫一個(gè)獲取密鑰的python函數(shù):

import os,json,base64,sqlite3,win32crypt,shutil
from Cryptodome.Cipher import AES
#需要安裝pip install pycryptodomex 庫
from datetime import  datetime, timedelta
def fetching_encryption_key():
    '''動(dòng)態(tài)獲取保存用戶數(shù)據(jù)的文件的路徑,然后讀出加密后的密文'''
    local_computer_directory_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome","User Data", "Local State")
    with open(local_computer_directory_path, "r", encoding="utf-8") as f:
        local_state_data = f.read()
        local_state_data = json.loads(local_state_data)
    # decoding the encryption key using base64
    encryption_key = base64.b64decode(
    local_state_data["os_crypt"]["encrypted_key"])
    # remove Windows Data Protection API (DPAPI) str
    encryption_key = encryption_key[5:]
    # return decrypted key
    return win32crypt.CryptUnprotectData(encryption_key, None, None, None, 0)[1]

有了這個(gè)密鑰,咱們還需要編寫一個(gè)解密的方法將密碼變成明文,考慮到Chrome瀏覽器的版本80之前和之后用了截然不同的加密手段,因此,對應(yīng)的解密方法也不同,小爬將他們一并整合到解密的函數(shù)中:

def password_decryption(password, encryption_key):
    try:
        iv = password[3:15]
        password = password[15:]
        # generate cipher
        cipher = AES.new(encryption_key, AES.MODE_GCM, iv)
        # decrypt password
        return cipher.decrypt(password)[:-16].decode()
    except:
        try:
            return str(win32crypt.CryptUnprotectData(password, None, None, None, 0)[1])
        except:
            return "No Passwords"

核心搞定之后,還涉及到一個(gè)知識(shí)點(diǎn),用于某個(gè)網(wǎng)站登錄的用戶名 以及加密后的密文存儲(chǔ)在哪里?別急,還是之前提到的Local State文件,其實(shí)它是一個(gè)本地sqlite3數(shù)據(jù)庫文件,我們可以借助sqlite3庫以及sql語法輕松獲取。當(dāng)然需要先知道目標(biāo)網(wǎng)站的域名,比如小爬就想取本地chrome瀏覽器中我自己保存用于登錄博客園網(wǎng)站(base_url="cnblogs.com")的用戶名密碼。另外需要注意的是,同一個(gè)網(wǎng)站,瀏覽器是支持同時(shí)保存幾組用戶名密碼的。代碼示例如下:

def get_url_credential(base_url):
    '''如果chrome瀏覽器本地存儲(chǔ)了OA密碼,則返回用戶和密碼列表,否則返回False'''
    key = fetching_encryption_key()
    db_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local",
                        "Google", "Chrome", "User Data", "default", "Login Data")
    filename = "ChromePasswords.db"
    shutil.copyfile(db_path, filename) # 為了避免程序bug將原有的login Data 文件損壞,復(fù)制一份出來供程序用
    # connecting to the database
    db = sqlite3.connect(filename)
    cursor = db.cursor()
    cursor.execute("select origin_url, action_url, username_value, password_value, date_created, date_last_used from logins order by date_last_used")
    user_name,pass_word=None,None
    userInfos=[] # 用于存放多組同一個(gè)網(wǎng)站的用戶名 密碼
    for row in cursor.fetchall():
        main_url = row[0]
        if base_url in main_url:
            user_name = row[2]
            pass_word = password_decryption(row[3], key)
            userInfos.append([user_name,pass_word])
    cursor.close()
    db.close()
    try:
        os.remove(filename)
    except:
        pass
    return userInfos

到此這篇關(guān)于詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼的文章就介紹到這了,更多相關(guān)python提取瀏覽器密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Django之a(chǎn)dmin組件的使用和源碼剖析

    詳解Django之a(chǎn)dmin組件的使用和源碼剖析

    本篇文章主要介紹了詳解Django之a(chǎn)dmin的使用和源碼剖析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • python中如何使用正則表達(dá)式的非貪婪模式示例

    python中如何使用正則表達(dá)式的非貪婪模式示例

    貪婪與非貪婪模式影響的是被量詞修飾的子表達(dá)式的匹配行為,下面這篇文章主要給大家介紹了關(guān)于python中如何使用正則表達(dá)式的非貪婪模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-10-10
  • Python queue隊(duì)列原理與應(yīng)用案例分析

    Python queue隊(duì)列原理與應(yīng)用案例分析

    這篇文章主要介紹了Python queue隊(duì)列原理與應(yīng)用,結(jié)合具體案例形式分析了Python queue隊(duì)列的原理、功能、實(shí)現(xiàn)方法與使用技巧,需要的朋友可以參考下
    2019-09-09
  • Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析

    Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python多線程結(jié)合隊(duì)列下載百度音樂的方法

    Python多線程結(jié)合隊(duì)列下載百度音樂的方法

    這篇文章主要介紹了Python多線程結(jié)合隊(duì)列下載百度音樂的方法,實(shí)例分析了Python多線程及文件下載的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python設(shè)計(jì)模式創(chuàng)建型原型模式

    Python設(shè)計(jì)模式創(chuàng)建型原型模式

    這篇文章主要介紹了Python原型模式,原型模式即Prototype?Pattern,指用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象,下面我們就來看具體的介紹內(nèi)容吧,希望對你的學(xué)習(xí)有所幫助
    2022-02-02
  • pytorch中LN(LayerNorm)及Relu和其變相的輸出操作

    pytorch中LN(LayerNorm)及Relu和其變相的輸出操作

    這篇文章主要介紹了pytorch中LN(LayerNorm)及Relu和其變相的輸出操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python進(jìn)行特征提取的示例代碼

    Python進(jìn)行特征提取的示例代碼

    這篇文章主要介紹了Python進(jìn)行特征提取的示例代碼,幫助大家更好的進(jìn)行數(shù)據(jù)分析,感興趣的朋友可以了解下
    2020-10-10
  • Python中的策略模式之解鎖編程的新維度

    Python中的策略模式之解鎖編程的新維度

    策略模式是一種設(shè)計(jì)模式,通過定義一系列算法,將它們封裝起來,并且使它們可以相互替換,從而使算法的變化獨(dú)立于使用算法的客戶,本文給大家介紹Python中的策略模式之解鎖編程的新維度,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • Python3實(shí)現(xiàn)從文件中讀取指定行的方法

    Python3實(shí)現(xiàn)從文件中讀取指定行的方法

    這篇文章主要介紹了Python3實(shí)現(xiàn)從文件中讀取指定行的方法,涉及Python中l(wèi)inecache模塊操作文件的使用技巧,需要的朋友可以參考下
    2015-05-05

最新評論

保康县| 常宁市| 西畴县| 当阳市| 海城市| 玛纳斯县| 玉龙| 信丰县| 舟山市| 德保县| 凤台县| 右玉县| 翼城县| 临沧市| 灵川县| 穆棱市| 乾安县| 鄱阳县| 上饶县| 宿松县| 攀枝花市| 田阳县| 高邮市| 峨山| 涟源市| 旌德县| 措勤县| 平阳县| 阳朔县| 曲阳县| 白河县| 南江县| 阿拉善盟| 东乡族自治县| 霍山县| 介休市| 泗水县| 礼泉县| 青浦区| 鱼台县| 北碚区|