Tag Archives: Firefox

Astuce pour Firefox

J’utilise cette technique lorsque j’entends le ventilateur de mon X220 tourner et que je vois Firefox en première position de la liste affichée par la commande htop (alors qu’aucun onglet ne semble devoir consommer spécialement beaucoup de mémoire). Si cela vous arrive, allez à l’adresse about:memory et cliquez sur «Minimize memory usage».

Nouvelle attaque sur les utilisateurs de Tor

Une attaque, une injection JavaScript, affecte les utilisateurs de Tor utilisant Windows et Firefox (version 17 et antérieure).

Je pense que la porté de cette attaque est limité car la plupart des utilisateurs de Tor devraient utiliser un Firefox à jour avec l’extension NoScript. Avec du recul je constate que le fait de désactiver JavaScript par défaut permet d’éviter de nombreuses attaques. D’autres extensions, certainement aussi utilisées par les utilisateurs de Tor, vous aideront à garder l’anonymat et naviguer en sécurité. Vous pouvez lire mes recommandations sur ce billet. J’ajouterai juste que depuis quelques semaines je n’utilise plus Ghostery.

En plus des extensions Firefox à utiliser, il est important de vérifier la configuration de votre navigateur. Y compris pour les autres navigateurs, par exemple Rekonq que j’aime bien. La capture suivante présente mes configurations en ce qui concerne la gestion des cookies:

Cookies Firefox

Cela peut paraître un peu restrictif mais une fois que vous aurez listé vos sites de confiance la qualité de la navigation ne sera pas dégradée. Ma configuration est identique pour Rekonq qui passe également par Privoxy/Tor puisque tout mon bureau KDE est connecté à Internet via Tor (y compris Blogilo utilisé pour poster ce billet). J’avais évoqué la démarche à suivre, très simple, sur ce billet. Par la même occasion vous pourrez aussi désactiver Java.

Extraire les mots de passe de Firefox

#!/usr/bin/env python
# ffpwdcracker - Crack the passwords stored using Firefox browser. The script currently works only on Linux.
#
# usage: ffpwdcracker [paths_to_location_of_files]
# Run it with no paramters to extract the standard Passwords from all Profiles of the current
# logged in User.
# Required files:
#    + key3.db
#    + signongs.sqlite 
#    + cert8.db 
# are used and needed to collect the passwords.
from ctypes import *
import struct
import sys
import os
import glob
import re
import time
import base64

#Password structures
class SECItem(Structure):
    _fields_ = [('type', c_uint),('data', c_void_p),('len', c_uint)]
        
class secuPWData(Structure):
    _fields_ = [('source', c_ubyte),('data', c_char_p)]

(SECWouldBlock, SECFailure, SECSuccess) = (-2, -1, 0)
(PW_NONE, PW_FROMFILE, PW_PLAINTEXT, PW_EXTERNAL) = (0, 1, 2, 3)

def errorlog(row,path):
    print("----[-]Error while Decoding! writting error.log:")
    print(libnss.PORT_GetError())
    try:
        f = open('error.log','a')
        f.write("-------------------\n")
        f.write("#ERROR in: %s at %s\n" %(path,time.ctime()))
        f.write("Site: %s\n"%row[1])
        f.write("Username: %s\n"%row[6])
        f.write("Password: %s\n"%row[7])
        f.write("-------------------\n")
        f.close()
    except IOError:
        print("Error while writing logfile - No log created!")

#reads the signons.sqlite which is a sqlite3 Database (>Firefox 3)
def readsignonDB(userpath,dbname):
    if libnss.NSS_Init(userpath)!=0:
        print("""Error Initalizing NSS_Init,\n
                propably no usefull results""")
    print("Dirname: %s" % os.path.split(userpath)[-1])
    import sqlite3
    conn = sqlite3.connect(userpath + os.sep + dbname)
    c = conn.cursor()
    c.execute("SELECT * FROM moz_logins;")
    for row in c:
        print("Site: %s" % row[1])
        uname.data  = cast(c_char_p(base64.b64decode(row[6])), c_void_p)
        uname.len = len(base64.b64decode(row[6]))
        passwd.data = cast(c_char_p(base64.b64decode(row[7])), c_void_p)
        passwd.len = len(base64.b64decode(row[7]))
        if libnss.PK11SDR_Decrypt(byref(uname), byref(dectext), byref(pwdata)) == -1:
            errorlog(row, userpath + os.sep + dbname)
        print("Username: %s" % string_at(dectext.data, dectext.len))
        if libnss.PK11SDR_Decrypt(byref(passwd), byref(dectext), byref(pwdata)) == -1:
            errorlog(row, userpath + os.sep + dbname)
        print("Password: %s" % string_at(dectext.data, dectext.len))
        print("")
    c.close()
    conn.close()
    libnss.NSS_Shutdown()

if __name__ == "__main__":
    # Point of entry in execution mode.
    ordner = sys.argv[1:]
    #Load the libnss3 linked file
    libnss = CDLL("libnss3.so")

    pwdata = secuPWData()
    pwdata.source = PW_NONE
    pwdata.data=0

    uname = SECItem()
    passwd = SECItem()
    dectext = SECItem()

    for user in ordner:
        signonfiles = glob.glob(user+os.sep+"signons*.*")
        for signonfile in signonfiles:
            (filepath,filename) = os.path.split(signonfile)
            filetype = re.findall('\.(.*)',filename)[0]
            if filetype.lower() == "sqlite":
                readsignonDB(filepath,filename)
            else:
                print("Unhandled Signons File: %s" % filename)
                print("Skipping") 

J’ai trouvé ce script sur Internet et je n’ai pas modifié grand chose. Il est pratique si vous voulez récupérer vos mots de passe rapidement. Certaines personnes reposent uniquement sur la fonctionalité d’enregistrement de mots de passe de Firefox, ce qui peut vite devenir embêtant avec un grand nombre d’identifiants si par mégarde vous perdez le fichier signongs.sqlite. De plus comme on peut le voir ici, il n’est pas très compliqué de récupérer ces informations.

Pour moi les meilleures solutions (certes contraignantes) pour stocker vos identifiants en sécurité sont:

  • dans un simple fichier texte chiffré avec votre clé privée. Le fichier reste chez vous, de préférence pas sur la même machine que la clé;
  • sur une feuille de papier. La feuille reste chez vous. Accessoirement le masochiste pourra par exemple appliquer un petit ROT13 à la main;
  • avec un logiciel comme KDE Wallet. Certainement la solution la moins contraignante.

Si un cambrioleur est attiré par votre maison pour ces informations vous avez d’autres problèmes que moi.

KDE Wallet et Google Chrome

Chrome - KDE Wallet

Ce que j’attends depuis un moment est arrivé [1, 2, 3]. Avec la version 10.0.648.18.dev de Google Chrome sur Squeeze et KDE 4.4.5. Ce navigateur utilise enfin KDE Wallet pour stocker les mots de passe. Et ce, par défaut, sans aucune configuration. C’est génial. Plus qu’à utiliser l’historique, les marque-pages et les favoris de KDE ;-)

D’un autre côté c’est un peu embêtant parce que j’utilise de plus en plus Firefox (Minefield en fait, qui est rapide et stable sans parler de l’interface) ne permetant pas cela. Je sais, il y a cette extension. Mais elle est toujours en beta et ne fonctionne pas avec ma version de Firefox. Maintenant si vous avec testé avec succès une autre solution, je suis preneur.

Intégration de Firefox à KDE 4

Finalement l’intégration de Firefox avec KDE 4 semble être en bon train. Le projet Fedora s’est attelé au problème et a déjà de bons résultats. En suivant l’URL précédente on peut voir que l’intégration de KWallet est plus vue comme une feature. En effet, une extension Firefox permet maintenant d’usiter KWallet.

En tout cas ça serait super que le travail soit général et s’applique facilement aux autres distributions.

Malheureusement côté performance ce journal confirme bien mes impressions: Firefox est assez à la traîne :-(

"Bye bye Firefox! let me know when it's fixed"

Ça fait déjà un peu plus d’un an que j’y songe: abandonner Firefox. Dans ce billet je vais évoquer les principales motivations de ce départ. Je tiens à préciser que bien entendu il s’agit uniquement de mon point de vue.

D’abord pour bien commencer, ce que me plaît dans ce navigateur:

  1. sécurité: réactivité pour les mises à jours. Certainement meilleur sur ce point que Konqueror ou Chrome ;
  2. innovation et respect des standards. D’où l’importante contribution de Firefox à la qualité du Web ;
  3. le nombre important d’extensions. D’ailleurs un problème va être de trouver les équivalents pour Konqueror ;
  4. la gestion des plantages ;
  5. la fondation Mozilla que j’apprécie beaucoup pour la qualité de son travail et sa contribution au libre.

Il reste donc pour moi un très bon navigateur, innovant  et qui a apporté beaucoup au Web. Cependant les points que je vais citer ci-dessous (du plus au moins important) me dérangent de plus en plus :

  1. le plus important pour moi. J’aime que mon bureau KDE soit bien intégré et je suis contre le stockage des mots de passe dans les navigateurs en général. Bon sous Firefox on peut toujours usité du mot de passe principal ;
  2. franchement sous Linux ce n’est pas encore ça. Ce que je trouve marrant c’est que actuellement Chrome en version de développement fonctionne bien mieux que Firefox/Iceweasel sur ma Debian (et Mandriva). Tandis que sur Windows c’est l’inverse. Et j’ai bien l’impression que Mozilla privilégie l’intégration sur Windows et rend même la vie des distributions GNU/Linux un peu plus compliquée. Y a qu’à lire les commentaires sur les Bug tracking des distributions et constater le décalage avec Windows pour les mises à jour importantes ;
  3. intégration avec KDE4 pas toujours parfaite et varie trop en fonction des mises à jours du système. De plus j’utilise souvent des systèmes dit non stable (testing, cooker). Évidemment l’intégration de Konqueror avec KDE est géniale (surtout KWallet, aKregator et les marques-pages). Et je trouve que Konqueror sous KDE4 est plutôt bien réussi ;
  4. malgré les progrès il reste toujours un peu lourd et pas très fluide sur mon système par rapport à Konqueror/Epiphany/Chrome ;
  5. certains vieux bugs qui trainent. Par exemple le fait que Firefox lance un processus java lorsqu’il rencontre une variable nommée “java” dans un fichier javascript. Ça se produit notamment sur mon CRM Plone ;
  6. j’aimerais bien que Mozilla s’inspire un peu sur le plan technique de Chrome en ce qui concerne les onglets (niveau mémoire…).

Voilà les mots clés sont donc intégration et stabilité sous Linux. Ce n’est peut être pas un abandon définitif. Si Mozilla apporte des solutions satisfaisantes aux deux premiers points je pourrais envisager de réutiliser Firefox. À suivre…

Mise à jour: Le problème de Chrome évoqué dans le commentaire de bnj à l’air de venir du fait que Chrome n’a pas le support @font-face par défaut. Il est en fait désactivé pour raison de sécurité. Pour pallier ce problème il faut lancer Chrome de cette manière : google-chrome –enable-remote-fonts. Cependant un Ctrl+A sur la page du test Acid3 montrera toujours des choses étranges.