metagoofil
Outil d'extraction de métadonnées pour documents publics. Télécharge des fichiers (PDF, DOC, XLS, PPT) d'un domaine cible via Google et en extrait les métadonnées : noms d'utilisateur, versions de logiciels, adresses e-mail et chemins. Metadata extraction tool for public documents. Downloads files (PDF, DOC, XLS, PPT) from a target domain via Google and extracts metadata — usernames, software versions, email addresses, and paths.
↗ https://github.com/laramies/metagoofilOverview
metagoofil uses Google dorks to find documents hosted on a target domain, downloads them, and extracts metadata. Document metadata often reveals internal usernames, software versions, email addresses, Active Directory domain names, network paths, and printer information — all without touching the target’s systems.
Installation
git clone https://github.com/laramies/metagoofil
cd metagoofil
pip3 install -r requirements.txt
Basic Usage
Download and extract metadata from PDFs
python3 metagoofil.py -d example.com -t pdf -n 20 -o ./output/ -f results.html
Multiple file types
python3 metagoofil.py -d example.com -t pdf,doc,xls,ppt -n 50 -o ./output/
Save results
python3 metagoofil.py -d example.com -t pdf -n 10 -o ./docs/ -f report.html
Supported File Types
# Specify with -t (comma-separated):
# pdf, doc, docx, xls, xlsx, ppt, pptx, odp, ods, odt
# Most valuable:
# pdf — design docs, manuals, reports → author names, software
# docx — Word docs → author, company, last modified by
# xlsx — Spreadsheets → author, paths, formulas with server names
# pptx — Presentations → author, company, email addresses
python3 metagoofil.py -d example.com -t pdf,docx,xlsx -n 30 -o ./output/
Metadata Extracted
From PDF/DOC/XLS files:
Author → internal usernames (e.g., "jsmith")
Creator → software used (e.g., "Microsoft Word 2016")
Producer → PDF generator (reveals software stack)
Last Modified By → another internal username
Company → confirmed company name
Subject/Title → document classification
Comments → sometimes contain server names or paths
From DOCX/XLSX:
Author name
Last saved path (e.g., C:\Users\jsmith\Documents\...)
Printer name (e.g., \\printserver01\HP4200)
Company name
Template path
Analyzing Results
Extract unique usernames from results
grep -r "Author\|Creator\|Last Modified" output/ | \
awk -F: '{print $2}' | \
sort -u | \
grep -v "^$"
Extract email addresses
grep -r "@" output/ | grep -oE "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
Extract server paths
grep -r "\\\\" output/ | grep -oE "\\\\[a-zA-Z0-9._-]+"
Extract software versions (for CVE research)
grep -r "Microsoft\|Adobe\|LibreOffice" output/
Using Discovered Usernames
Usernames found → test as AD usernames Build username list
cat usernames.txt
Test with kerbrute
kerbrute userenum --domain example.com -dc DC01 usernames.txt
# Or format for email spraying
# If email format is firstname.lastname@example.com:
# Convert "John Smith" → john.smith@example.com
Tips
- Document metadata is a gold mine — often reveals the full AD domain name and naming convention
- Printer paths like
\\printserver01\HP-Financereveal internal server names - Software versions from Creator field help identify vulnerable software targets use
- Use exiftool for deeper metadata extraction from downloaded files
Help / Man page
metagoofil.py [options]
-d DOMAIN Target domain to search
-t TYPES File types: pdf,doc,xls,ppt (comma-separated)
-n N Number of files to download (default: 100)
-o DIR Output directory for downloaded files
-f FILE Output HTML report file
-l N Limit Google results to N pages
-e DELAY Delay between Google requests (seconds)
-u AGENT User agent string
Vue d’ensemble
metagoofil utilise des Google dorks pour trouver des documents hébergés sur un domaine cible, les télécharge et en extrait les métadonnées. Les métadonnées des documents révèlent souvent des noms d’utilisateur internes, des versions de logiciels, des adresses e-mail, des noms de domaine Active Directory, des chemins réseau et des informations d’imprimante, le tout sans toucher aux systèmes de la cible.
Installation
git clone https://github.com/laramies/metagoofil
cd metagoofil
pip3 install -r requirements.txt
Utilisation de base
# Télécharger et extraire les métadonnées des PDF
python3 metagoofil.py -d example.com -t pdf -n 20 -o ./output/ -f results.html
# Plusieurs types de fichiers
python3 metagoofil.py -d example.com -t pdf,doc,xls,ppt -n 50 -o ./output/
# Sauvegarder les résultats
python3 metagoofil.py -d example.com -t pdf -n 10 -o ./docs/ -f report.html
Types de fichiers pris en charge
# Spécifier avec -t (séparés par des virgules) :
# pdf, doc, docx, xls, xlsx, ppt, pptx, odp, ods, odt
# Les plus utiles :
# pdf → docs de conception, manuels, rapports → noms d'auteurs, logiciels
# docx → docs Word → auteur, société, dernière modification par
# xlsx → tableurs → auteur, chemins, formules avec noms de serveurs
# pptx → présentations → auteur, société, adresses e-mail
python3 metagoofil.py -d example.com -t pdf,docx,xlsx -n 30 -o ./output/
Métadonnées extraites
Depuis les fichiers PDF/DOC/XLS :
Author → noms d'utilisateur internes (ex. « jsmith »)
Creator → logiciel utilisé (ex. « Microsoft Word 2016 »)
Producer → générateur du PDF (révèle la stack logicielle)
Last Modified By → un autre nom d'utilisateur interne
Company → nom de la société confirmé
Subject/Title → classification du document
Comments → contiennent parfois des noms de serveurs ou des chemins
Depuis les fichiers DOCX/XLSX :
Nom de l'auteur
Chemin de dernière sauvegarde (ex. C:\Users\jsmith\Documents\...)
Nom de l'imprimante (ex. \\printserver01\HP4200)
Nom de la société
Chemin du template
Analyse des résultats
# Extraire les noms d'utilisateur uniques des résultats
grep -r "Author\|Creator\|Last Modified" output/ | \
awk -F: '{print $2}' | \
sort -u | \
grep -v "^$"
# Extraire les adresses e-mail
grep -r "@" output/ | grep -oE "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
# Extraire les chemins serveur
grep -r "\\\\" output/ | grep -oE "\\\\[a-zA-Z0-9._-]+"
# Extraire les versions de logiciels (pour la recherche de CVE)
grep -r "Microsoft\|Adobe\|LibreOffice" output/
Utilisation des noms d’utilisateur découverts
# Noms d'utilisateur trouvés → à tester comme noms d'utilisateur AD, construire la liste
cat usernames.txt
# Tester avec kerbrute
kerbrute userenum --domain example.com -dc DC01 usernames.txt
# Ou formater pour du spray d'e-mails
# Si le format d'e-mail est firstname.lastname@example.com :
# Convertir "John Smith" → john.smith@example.com
Conseils
- Les métadonnées de documents sont une mine d’or : elles révèlent souvent le nom de domaine AD complet et la convention de nommage
- Les chemins d’imprimante comme
\\printserver01\HP-Financerévèlent des noms de serveurs internes - Les versions de logiciels du champ Creator aident à identifier les logiciels vulnérables utilisés par la cible
- Utiliser exiftool pour une extraction de métadonnées plus poussée sur les fichiers téléchargés
Aide / Page de manuel
metagoofil.py [options]
-d DOMAIN Target domain to search
-t TYPES File types: pdf,doc,xls,ppt (comma-separated)
-n N Number of files to download (default: 100)
-o DIR Output directory for downloaded files
-f FILE Output HTML report file
-l N Limit Google results to N pages
-e DELAY Delay between Google requests (seconds)
-u AGENT User agent string