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/metagoofil

Overview

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-Finance reveal 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-Finance ré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