Test de Debian GNU/Hurd

hurd

Hurd me semble plutôt stable par rapport à ce que l’on en dit généralement.

Bitmessage

Bitmessage est un système de messagerie publié en novembre 2012 et dont la popularité vient de faire un petit bon suite à l’affaire PRISM. Le système est décentralisé et fonctionne sans autorité de confiance. Une implémentation expérimentale Python est disponible.

Discours de Bruce Schneier sur le pouvoir et la sécurité

Un discours qui vaut vraiment le coup d’être écouté.

La sécurité avec le cloud computing: “someone else take care of it“. Et souvent nous navons d’autres choix que de donner une confiance totale.

pyAggr3g470r: recherche avec un index

whoosh

Le module Whoosh est maintenant utilisé pour indexer la base MongoDB de pyAggr3g470r et faire des recherches sur le contenu des articles (texte intégral). Whoosh est entièrement écrit en Python et vraiment rapide. Avec un processeur i7 il me faut environ 3 minutes pour indexer près de 60.000 entrées et quelques dixièmes de secondes pour effectuer une recherche exhaustive.

pyHIDS: Alertes IRC

pyHIDS peut maintenant envoyer des alertes sur un channel IRC via irker, comme le montre la capture décran ci-dessous.

Utiliser Tor de manière transparente

Voici la procédure si vous désirez que toutes vos applications clientes (navigateurs, kmail, apt-get, etc.) passent par Privoxy/Tor pour les connexions HTTP.

Find a Bike

Find a Bike, un site pour trouver un vélo en libre-service à proximité. Il utilise lAPI de JCDecaux ainsi que OpenStreetMap.

Comparaison des performances de Python 2.7 et 3.3 avec Ackermann

$ time python ackermann.py 3 12
32765
 
real    2m33.121s
user    2m32.518s
sys     0m0.088s
$ time python ackermann.py 3 12
32765

real    2m57.908s
user    2m57.316s
sys     0m0.068s
$ time python3.3 ackermann.py 3 12
32765

real    4m6.365s
user    3m18.204s
sys     0m47.452s

Tests effectués avec, dans l’ordre, Python 2.7.3, 2.7.4 et 3.3.1 sur cet algorithme. Nous voyons que malgré le fait que Python 3.* s’améliore (voir ce billet), Python 2.7 est toujours bien plus rapide. Ce test n’utilise pas d’itérateurs ou objets/structures complexes. Il s’agit simplement de l’implémentation naïve de la fonction d’Ackermann. Nous avions déjà fait quelques comparaisons entre différents langages.

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

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é denregistrement de mots de passe de Firefox, ce qui peut vite devenir embêtant avec un grand nombre didentifiants 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.

L’effet Streisand

Un exemple.