
Analisador heurístico offline que pontua SMS, mensagens de chat e links suspeitos em busca de indicadores de golpe e phishing, explicando cada sinal de alerta com guias de conscientização e um quiz.
Uma plataforma de conscientização sobre segurança cibernética. Cole um SMS, e-mail, mensagem de chat ou link suspeito e ela informa quais técnicas de golpe foram detectadas, por que cada uma importa e o que fazer em seguida.
Demonstração ao vivo: https://threatripper.onrender.com (plano gratuito do Render — a primeira visita após inatividade pode levar um minuto para ativar.)
É uma ferramenta de ensino, não um produto de segurança. Não há mecanismo antivírus, nem verificação de malware, nem verificação de remetente e nem serviço de reputação de domínio. Os links nunca são abertos.
Propósito e escopo. O Threatripper é uma ferramenta defensiva e educacional para detectar indicadores de golpe em textos. Ele não contém malware, código de exploração, kits de phishing, listas de credenciais ou qualquer capacidade ofensiva, e nunca faz requisições de rede. Todas as mensagens e domínios de exemplo no repositório usam nomes fictícios e reservados
.examplee existem apenas para demonstrar a lógica de detecção.Use-o apenas para proteger a si mesmo e aos outros. O uso indevido é contrário ao propósito do projeto; denuncie fraudes pelos canais oficiais (veja Limitações).
Quatro páginas, sem etapa de build, sem framework JavaScript, sem CDN:
| Página | Caminho | Propósito |
|---|---|---|
| Analisar | / | Cole uma mensagem ou link e receba um veredito pontuado e explicado |
| Conscientização | /awareness.html | Sete guias de tipos de golpe mais orientações de denúncia |
| Quiz | /quiz.html | Doze cenários avaliados no servidor com explicações |
| Histórico | /history.html | Suas análises recentes, com identificadores já redigidos |
A análise é deliberadamente explicável em vez de autoritativa. Cada ponto na escala corresponde a uma regra nomeada com uma severidade, uma confiança e uma frase explicando por que ela importa. A interface mostra todo o cálculo, incluindo os bônus de combinação, para que a saída possa ser contestada em vez de meramente aceita.
O que ele não faz:
Requer Python 3.11 ou mais recente.
git clone <your-repo-url> threatripper
cd threatripper
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Use "python3 -m pip", not a bare "pip": on a hardened distro (Kali, Debian,
# Fedora) pip may be an externally managed system binary that is blocked by
# PEP 668, and a bare "pip" will not resolve to the venv.
python3 -m pip install -r requirements.txt
python3 -m uvicorn backend.main:app --reload
Abra http://127.0.0.1:8000.
Todo o produto — API, catálogo de regras, banco de dados e interface web — é executado a partir desse
único processo em uma única origem. A documentação interativa da API está em /docs, o esquema OpenAPI bruto
em /openapi.json.
Para executar os testes:
python3 -m pip install -r requirements-dev.txt
python3 -m pytest
A mesma análise é executada a partir de um terminal. Esta é uma segunda interface, não uma segunda implementação: cada regra, pontuação, explicação e ação recomendada vem do mesmo AnalysisService que a aplicação web utiliza, pelo que as duas não podem divergir sobre o que é perigoso.
Sem servidor, sem porta, sem rede — útil quando a mensagem que está a analisar é o incidente.
# Analyse a pasted message
./threatripper.sh "URGENT: your account will be closed, share the OTP"
# Or pipe it in, which is the natural way to use it
pbpaste | ./threatripper.sh
# A bare link
./threatripper.sh "http://verify-account.example/login"
# The API payload, for scripts
./threatripper.sh "share your OTP" --json | jq .result.risk_level
# Only fail when it is serious
./threatripper.sh --fail-on critical "see you tomorrow" ; echo $? # 0
./threatripper.sh --fail-on critical "your bank account will be suspended in 24 hours, verify at http://bank-verify.example/login and share the OTP" ; echo $? # 1
# Stored history, shared with the web app
./threatripper.sh history
./threatripper.sh history --level critical --json
# Analyse without keeping any record
./threatripper.sh "share your OTP" --no-store
Um banner vermelho THREATRIPPER é impresso no início de uma execução interativa, desenhado
na face ANSI Shadow. Ele vai para stderr e é ignorado para --json e
sempre que a saída é canalizada ou redirecionada, para que nunca acabe num log ou quebre
um pipeline. --no-color mantém o banner mas remove a cor.
Cada glifo em ANSI Shadow é um caractere ambiguous-width do Leste Asiático, portanto em
alguns terminais — tipicamente um locale CJK, ou uma janela mais estreita que 78 colunas —
as linhas são renderizadas com larguras diferentes e as letras se desalinham. Nesse caso, o
banner recorre silenciosamente a uma face puramente ASCII. Substitua a escolha com
--banner shadow|ascii|none:
./threatripper.sh --banner shadow "message" # force the block letters
./threatripper.sh --banner ascii "message" # force the terminal-safe face
./threatripper.sh --banner none "message" # no banner at all
Assim como o aplicativo web, uma análise é adicionada ao histórico compartilhado por padrão —
a mesma prévia redigida, nunca o texto bruto. Passe --no-store para analisar
sem manter um registro.
./threatripper.sh analyze --help e ./threatripper.sh history --help listam todas as
opções. O launcher prefere o interpretador .venv do projeto e resolve sua
própria localização, então funciona a partir de qualquer diretório e com o virtualenv ativado ou
não. python3 -m backend.cli é equivalente.
Uma ferramenta de terminal é usada em scripts, então "isso encontrou algo?" precisa ser respondível sem analisar texto corrido.
| Código | Significado |
|---|---|
0 | Nada encontrado, no limite --fail-on ou abaixo dele |
1 | Algo foi encontrado no limite ou acima dele |
2 | A linha de comando estava errada |
3 | Não havia nada para analisar, ou a análise não pôde ser executada |
O limite padrão é suspicious. Passe --fail-on com qualquer faixa
(low, suspicious, medium, high, critical) para alterá-lo.
# Fail a deploy pipeline only on a serious finding
./threatripper.sh --fail-on critical "$MESSAGE" || echo "review this message"
Um erro de utilização nunca partilha deliberadamente um código com um achado, para que um script consiga distinguir "esta mensagem é perigosa" de "escreveu a flag mal". Uma faixa de risco não reconhecida também termina com código diferente de zero, em vez de reportar tudo limpo.