Coleta informações de perfis públicos para engenharia social.
Contexto
Metadados são "dados sobre os dados". Quando alguém tira uma foto ou cria um PDF, o arquivo armazena informações invisíveis que podem ser fatais para a segurança de uma empresa:
- Coordenadas GPS: Podem revelar a localização exata de um escritório remoto ou da casa de um executivo.
- Nomes de Usuários: PDFs costumam salvar o nome do autor e o caminho do diretório (ex:
C:\Users\gabriel.pontes\Documents\projeto_secreto.docx), revelando o padrão de nomes de usuário da rede. - Software e Versões: Indica se a empresa usa versões desatualizadas do Office ou Adobe, que possuem vulnerabilidades conhecidas.
Possibilidades de Implementação
- Imagens (Pillow): Focada em extrair dados EXIF de JPEGs e PNGs.
- PDFs (PyPDF2): Extrai o histórico de criação, software utilizado e autor do documento.
- Recursividade: Criar um script que varre uma pasta inteira (ou um site) e extrai metadados de todos os arquivos encontrados automaticamente.
Código
Para esta lição, utilizaremos a biblioteca Pillow (PIL) para imagens. Ela é a biblioteca padrão e mais robusta para manipulação de imagens em Python.
Requisito: pip install Pillow
from PIL import Image
from PIL.ExifTags import TAGS
def extract_image_metadata(image_path):
print(f"{'='*60}")
print(f" 30 LESSONS IN PYTHON FOR PENTEST - LIÇÃO 06")
print(f" FERRAMENTA: METADATA EXTRACTOR")
print(f"{'='*60}")
print(f"[*] Analisando arquivo: {image_path}\n")
try:
# Abre a imagem
img = Image.open(image_path)
# Extrai os dados EXIF
exif_data = img._getexif()
if not exif_data:
print("[-] Nenhum metadado EXIF encontrado neste arquivo.")
return
print(f"[+] Metadados encontrados:\n")
for tag_id, value in exif_data.items():
# Converte o ID numérico da tag para um nome legível (ex: GPSInfo, Software)
tag_name = TAGS.get(tag_id, tag_id)
print(f" {tag_name:20}: {value}")
except Exception as e:
print(f"[!] Erro ao processar a imagem: {e}")
if __name__ == "__main__":
# Para testar, use o caminho de uma foto real tirada por um celular
# extract_image_metadata("foto_teste.jpg")
print("[!] Por favor, forneça o caminho de uma imagem (JPG) com dados EXIF para o teste.")