- vous devez mettre dans la constante $NOM_PROFIL_FIREFOX le nom du répertoire du profil de Firefox (il est placé dans %appdata%\Mozilla\Firefox\Profiles\) ;
- le script doit être exécuté quand Firefox n'est pas en cours d'exécution ;
- EcritCookiesDansTXT (ligne 34) lit le(s) cookie(s) dans cookies.sqlite et le(s) stocke dans le fichier texte $FICHIER_COOKIES ;
- EcritCookiesDansBaseDeDonnees (ligne 35) lit le(s) cookie(s) dans le fichier texte $FICHIER_COOKIES et enregistre le contenu dans cookies.sqlite ;
- dans l'exemple, LitCookiesDansBaseDeDonnees lit les cookies dont l'hôte contient "mozilla" (ligne 43).
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <SQLite.au3>
#include <SQLite.dll.au3>
Opt("MustDeclareVars", 1)
Global Const $NOM_PROFIL_FIREFOX = "VOTRE_REPERTOIRE_DE_PROFIL_FIREFOX" ; IMPORTANT : mettez votre répertoire !!!
Global Const $FICHIER_COOKIES = "cookies.txt"
Global Const $FICHIER_BD_COOKIES = @AppDataDir & "\Mozilla\Firefox\Profiles\" & $NOM_PROFIL_FIREFOX & "\cookies.sqlite"
If Not FileExists($FICHIER_BD_COOKIES) Then
    MsgBox(16, "Erreur", "Le fichier " & $FICHIER_BD_COOKIES & " n'existe pas !")
    Exit -1
EndIf
; démarrage de SQLite
_SQLite_Startup()
If @error > 0 Then
    MsgBox(16, "SQLite Erreur", "SQLite.dll ne peut être chargé !")
    Exit -1
EndIf
ConsoleWrite("_SQLite_LibVersion=" &_SQLite_LibVersion() & @CR)
; ouverture de la base de données
_SQLite_Open($FICHIER_BD_COOKIES)
If @error > 0 Then
    MsgBox(16, "SQLite Erreur", "Impossible de charger la base de données !")
    Exit -1
EndIf
EcritCookiesDansTXT($FICHIER_COOKIES, LitCookiesDansBaseDeDonnees())
;~ EcritCookiesDansBaseDeDonnees($FICHIER_COOKIES)
_SQLite_Close()
_SQLite_Shutdown()
Func LitCookiesDansBaseDeDonnees()
    Local $hQuery, $aRow, $sMsg
    _SQLite_Query(-1, "SELECT * FROM moz_cookies WHERE host LIKE '%mozilla%';", $hQuery)
    If @error Then
        MsgBox(0, "", @error)
        Return SetError(@error, "", -1)
    EndIf
    While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
        $sMsg &= $aRow[0] & ","
        $sMsg &= $aRow[1] & ","
        $sMsg &= $aRow[2] & ","
        $sMsg &= $aRow[3] & ","
        $sMsg &= $aRow[4] & ","
        $sMsg &= $aRow[5] & ","
        $sMsg &= $aRow[6] & ","
        $sMsg &= $aRow[7] & ","
        $sMsg &= $aRow[8] & @LF
    WEnd
    Return $sMsg
EndFunc   ;==>LitCookiesDansBaseDeDonnees
Func EcritCookiesDansTXT($fichierCookies, $cookies)
    ; fait une sauvegarde du fichier
    FileMove($fichierCookies, $fichierCookies & ".sauv", 1)
    ; ouvre le fichier en écriture
    Local $fichier = FileOpen($fichierCookies, 2)
    If $fichier = -1 Then
        MsgBox(0, "Erreur", "Impossible d'ouvrir " & $fichierCookies)
        Return SetError(1)
    EndIf
    FileWrite($fichier, $cookies)
    FileClose($fichier)
EndFunc   ;==>EcritCookiesDansTXT
Func EcritCookiesDansBaseDeDonnees($fichierCookies)
    Local $_moz_id, _
            $_moz_name, _
            $_moz_value, _
            $_moz_host, _
            $_moz_path, _
            $_moz_expiry, _
            $_moz_lastAccessed, _
            $_moz_isSecure, _
            $_moz_isHttpOnly
    Local $i
    Local $contenuFichierCookies
    Local $a_listeCookies, $a_ElementsCookie
    Local $fichier = FileOpen($fichierCookies, 0)
    If $fichier = -1 Then
        MsgBox(0, "Erreur", "Impossible d'ouvrir " & $fichierCookies)
        Return SetError(1)
    EndIf
    $contenuFichierCookies = FileRead($fichier)
    FileClose($fichier)
    ; récupère la liste de tous les cookies présents dans le fichier
    $a_listeCookies = StringSplit($contenuFichierCookies, @LF)
    If @error Then
        MsgBox(0, "Erreur", "Pas de cookies trouvés dans le fichier.")
        Return SetError(1)
    EndIf
    ; boucle qui récupère les éléments de chaque cookie du fichier texte
    ; et les enregistres ensuite dans la base de données
    For $i = 1 To $a_listeCookies[0] - 1
        ; récupère les éléments du cookie
        $a_ElementsCookie = StringSplit($a_listeCookies[$i], ",")
        If @error Then
            MsgBox(0, "Erreur", "Impossible de récupérer les éléments des cookies.")
            Return SetError(1)
        EndIf
        $_moz_id = $a_ElementsCookie[1]
        $_moz_name = $a_ElementsCookie[2]
        $_moz_value = $a_ElementsCookie[3]
        $_moz_host = $a_ElementsCookie[4]
        $_moz_path = $a_ElementsCookie[5]
        $_moz_expiry = $a_ElementsCookie[6]
        $_moz_lastAccessed = $a_ElementsCookie[7]
        $_moz_isSecure = $a_ElementsCookie[8]
        $_moz_isHttpOnly = StringStripCR($a_ElementsCookie[9])
        ; supprime d'abord le cookie s'il existe déjà sous cette id
        _SQLite_Exec(-1, _
                'DELETE ' & _
                'FROM moz_cookies ' & _
                'WHERE id="' & $_moz_id & '";')
        If @error Then
            MsgBox(0, "", @error)
            Return SetError(@error, "", -1)
        EndIf
        ; ajoute le cookie à la base de données
        _SQLite_Exec(-1, _
                "INSERT INTO moz_cookies (id,name,value,host,path,expiry,lastAccessed,isSecure,isHttpOnly) " & _
                "VALUES('" & _
                $_moz_id & "','" & _
                $_moz_name & "','" & _
                $_moz_value & "','" & _
                $_moz_host & "','" & _
                $_moz_path & "','" & _
                $_moz_expiry & "','" & _
                $_moz_lastAccessed & "','" & _
                $_moz_isSecure & "','" & _
                $_moz_isHttpOnly & _
                "');")
        If @error Then
            MsgBox(0, "", @error)
            Return SetError(@error, "", -1)
        EndIf
    Next
EndFunc   ;==>EcritCookiesDansBaseDeDonnees
 
