Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Posts Tagged “C”

      Firefox stocke depuis quelques versions les mots de passe enregistrés dans une base de données SQLite dont le nom est signons.sqlite, plutôt que dans un fichier au format texte, comme précédemment (signons2.txt, signons3.txt). En ce qui concerne le chiffrement, il s’agit de 3DES en mode EDE, et la clé se trouve dans le fichier key3.db.

      Bref, pour déchiffrement et obtenir tout ça, il nous faut utiliser l’API PKCS#11 ainsi que NSS (Network Security Services), une bibliothèque cryptographique développée par Mozilla et bien évidemment utilisée par Firefox. Rapidement, en commençant le développement de ce petit bout de code qui me semblait trivial au départ, j’ai remarqué que la difficulté … ne venait étrangement pas du code en lui même, mais de l’API NSS de Mozilla qui est très peu documenté (second lien avec comme mot clé “nss api” sur Google : “NSS API is lack of doc | Linux Developer Network” …). Au final j’ai donc préféré sortir Ollydbg et faire un peu de reverse engineering sur un outil closed source qui récupérait ces identifiants à des fins malicieuses. En dehors de ces bibliothèques pour le côté crypto, il nous faudra utiliser SQLite afin de lire le fichier signons.sqlite.

Voici le schéma de la table moz_logins qui nous intéresse :

  1.  
  2. CREATE TABLE moz_logins (id INTEGER PRIMARY KEY,
  3.                          hostname TEXT NOT NULL,
  4.                          httpRealm TEXT,
  5.                          formSubmitURL TEXT,
  6.                          usernameField TEXT NOT NULL,
  7.                          passwordField  TEXT NOT NULL,
  8.                          encryptedUsername TEXT NOT NULL,
  9.                          encryptedPassword TEXT NOT NULL,
  10.                          guid TEXT,
  11.                          encType INTEGER);
  12.  

Et voici le code C (avec une légère utilisation de l’API Win32) permettant de récupérer tous ces jolis identifiants :
Read the rest of this entry »

Comments 2 Comments »

      Comment mettre des données dans le presse-papiers à partir d’un programme en console sous GNU/Linux ? Voici le problème que j’ai rencontré il y a peu de temps alors que je développais une application sans interface graphique en C. M’attendant à une solution triviale étant donné la simplicité du besoin, j’ai été surpris de ne pas trouver de réponse sur Google, malgré des recherches plutôt poussées.

      En effet, sous Windows par exemple, le snippet suivant suffit à placer une chaîne de caractères dans le presse-papiers :

  1.  
  2. char str[] = "chaine à copier";
  3.  
  4. HGLOBAL hText = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, sizeof(str));
  5. char *pText = (char *)GlobalLock(hText);
  6. strcpy(pText, str);
  7. GlobalUnlock(hText);
  8.  
  9. OpenClipboard(NULL);
  10. EmptyClipboard();
  11. SetClipboardData(CF_TEXT, hText);
  12. CloseClipboard();
  13.  
  14. GlobalFree(hText);
  15.  

Sous GNU/Linux, c’est assez différent et malheureusement plus complexe à mettre en oeuvre. Tout d’abord, il est nécessaire de connaître les points suivants :

  • En plus du presse-papiers, est accessible sous GNU/Linux un tampon de sélection primaire (accessible avec le bouton du milieu de la souris), ainsi qu’un tampon de sélection secondaire (généralement non-modifiable directement par l’utilisateur).
  • C’est le serveur X qui gère les mécanismes liés à ces tampons.
  • Le serveur X n’alloue pas un tampon mémoire général accessible à toutes les applications graphiques, mais le contenu des sélections et du presse-papiers sont communiqués entre clients (communication peer-to-peer).

Read the rest of this entry »

Comments 3 Comments »

 
Le premier article du blog est là !

Il s’agit d’un article traitant du module Memcheck de Valgrind, qui permet de détecter les fuites de mémoire (memory leak) ainsi que d’autres mauvaises utilisations de la mémoire.

Vous pouvez le télécharger ICI

J’espère que vous prendrez plaisir à le lire et qu’il vous sera utile.

Fireboot

Comments No Comments »