Skip to content

Repository files navigation

Yabloko — Análise Investigativa de Metadados Apple

Sistema em Streamlit e SQLite para ingestão e análise de arquivos .xlsx enviados pela Apple (dados CONFIDENTIAL), com foco em atividade e investigação policial. Permite cruzar dados, identificar padrões (mesmo IP, mesmo local, dispositivos, timeline) e consultar perfis por DSID, e-mail, serial ou IMEI.

Parceria GENI / UFF e SR / RJ / PF

Funcionalidades principais

  • Ingestão resiliente: leitura dos modelos General, Nuvem e Cadastro a partir da pasta APPLE/, ignorando Data Guides (*_Data_Guide.xlsx) e arquivos temporários (~$...xlsx). Cabecalhos são detectados dinamicamente para cada planilha.
  • Log e idempotência: tabela ingestion_log evita reprocessar arquivos já ingeridos.
  • Geolocalização de IPs: durante a ingestão, IPs são resolvidos via GeoLite2 e gravados na tabela ip_geo (país, continente, timezone, latitude/longitude), reutilizados depois pelo app.
  • Mapas: página Mapa de IPs mostra IPs em mapa interativo (pydeck) com pontos ampliados e tabela enriquecida com país/continente; outras páginas focam dispositivos e timeline.
  • Cards em vez de tabelas: páginas como Perfil do investigado, Mapa de dispositivos e Compras e apps apresentam resumos em cards responsivos, com opção de ver as tabelas completas em expanders.
  • Glossário embutido: termos esotéricos (DSID, GCRM, GUID, etc.) aparecem explicados em st.caption logo abaixo das seções relevantes.

Requisitos

  • Python 3.12+
  • UV (gerenciador de pacotes e ambientes)

Instalação

# Na raiz do projeto
uv venv                    # se ainda não existir .venv
source .venv/bin/activate  # ativar ambiente
uv pip install -r requirements.txt

Configuração

Copie o arquivo de exemplo e ajuste se necessário:

cp .env.example .env

Variáveis (opcionais):

Variável Descrição Padrão
YABLOKO_WATCH_FOLDER Pasta monitorada pelo worker para novos .xlsx ./APPLE
YABLOKO_WORKER_INTERVAL Intervalo em segundos entre varreduras do worker 15
YABLOKO_DB_PATH Caminho do banco SQLite ./data/yabloko.db

Uso

1. Worker de ingestão (contínuo)

Monitora a pasta configurada a cada YABLOKO_WORKER_INTERVAL segundos e ingere novos arquivos .xlsx que seguem o padrão de confidencialidade (*APPLE_CONFIDENTIAL*.xlsx, variando por domínio), excluindo Data Guides. Arquivos já processados (registrados em ingestion_log) são ignorados.

# Usando o venv do projeto (recomendado)
./run_worker.sh           # Unix/macOS
run_worker.bat            # Windows

# Ou manualmente
python -m worker

Os arquivos de dados devem estar, por padrão, em APPLE/ na raiz do projeto ou na pasta indicada por YABLOKO_WATCH_FOLDER.

2. App Streamlit (cliente)

Interface com várias páginas:

  • Início: visão geral de contagens por tabela e últimos arquivos ingeridos.
  • Ingestão: upload de arquivos .xlsx diretamente para a pasta monitorada e botão Processar arquivos pendentes (chama o mesmo fluxo do worker).
  • Busca: pesquisa por DSID, e-mail, serial, IMEI, GUID ou IP em múltiplas tabelas.
  • Perfil: consolidação de informações de conta e dispositivos por DSID/e-mail, com cards e tabelas em expanders.
  • Timeline: eventos ordenados no tempo (compras, downloads, logins, etc.).
  • Mapa de IPs: lista e mapa interativo de IPs com geolocalização persistida em ip_geo.
  • Mapa de dispositivos, Compras e apps, Análise financeira, Investigação por dispositivo, Alertas e Créditos: visões especializadas para cruzar dispositivos, contas, transações e anomalias.
# Usando o venv do projeto (recomendado)
./run_app.sh              # Unix/macOS
run_app.bat               # Windows

# Ou manualmente
streamlit run app/streamlit_app.py

3. Worker + App juntos

Para subir os dois de uma vez (worker em background e app em primeiro plano):

./run_all.sh              # Unix/macOS — Ctrl+C encerra app e worker
run_all.bat               # Windows — duas janelas (worker + app)

Testes

uv run pytest tests/ -v

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages