Christophe Casalegno

Comment extraire des adresses email d’un fichier quelconque ?

Un moyen très simple d’extraire des adresses email d’un fichier quelconque, et notamment un binaire comme par exemple une base mysql en production est d’utiliser la commande string (qui permet de sortir les caractères affichables d’un fichier ou d’un flux) associée à la commande grep :

Exemple :
strings pathtoyourdatabase/* |grep -Eio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'|sort -u

Cette commande va extraire tous les caractères affichables de votre base de données MySQL puis rechercher le motif correspondant à une adresse email. Je n’ai volontairement pas pris l’expression régulière officielle pour une adresse email qui est plus précise mais bien trop longue, mais me suis contenté d’une expression correspondant à mes besoins.

Par exemple cette commande va analyser toutes les tables d’une base de donnée MySQL « mabase » et extraire les adresses email sans avoir besoin de se connecter à la base ou même qu’elle soit en fonctionnement :

strings /var/lib/mysql/mybase/* |grep -Eio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'|sort -u

J’ai également pu tester cette commande avec succès sur d’autres bases de données tel que postgresql :

strings /var/lib/pgsql/data/base/19981/* grep -Eio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'|sort -u
 
Christophe Casalegno
Vous pouvez me suivre sur : Twitter | Facebook | Linkedin | Telegram

Leave a Comment