Conjunto de scripts Python para automação de processos internos e resolução de desafios de segurança (CTF) desenvolvidos durante estágio no SERPRO (Serviço Federal de Processamento de Dados).
- Sobre o Projeto
- Funcionalidades
- Tecnologias Utilizadas
- Estrutura do Projeto
- Detalhamento dos Módulos
- Pré-requisitos
- Instalação
- Como Usar
- Licença
Este repositório reúne ferramentas de automação criadas para otimizar fluxos de trabalho internos e soluções desenvolvidas para a CTF Security Week do SERPRO. O projeto demonstra habilidades em:
- Automação de processos com Selenium WebDriver e PyAutoGUI
- Web scraping e manipulação de interfaces web corporativas
- Criptoanálise — quebra de PRNG (MT19937) e RSA com primos gêmeos
- Programação de sockets para comunicação cliente-servidor
- Engenharia reversa de algoritmos criptográficos
- Extração automática de dados do sistema ALM (Application Lifecycle Management)
- Preenchimento automático de formulários no sistema Pontua
- Integração entre dois sistemas corporativos (ALM ↔ Pontua)
- Tratamento de dropdowns dinâmicos (Angular
ng-select) - Fluxo com confirmação do usuário em etapas críticas
- Coleta de 624 outputs do gerador pseudoaleatório via socket
- Reconstrução completa do estado interno do Mersenne Twister
- Operações de untemper para reverter as transformações do MT19937
- Predição dos próximos 25 números para capturar a flag
- Fatoração de chave RSA explorando a proximidade dos primos (Método de Fermat)
- Cálculo do inverso modular para obter a chave privada
- Decriptação automatizada de múltiplos desafios em sequência
- Comunicação via socket com parsing dinâmico das respostas do servidor
| Tecnologia | Uso |
|---|---|
| Python 3.8+ | Linguagem principal |
| Selenium WebDriver | Automação de navegador (Microsoft Edge) |
| PyAutoGUI | Interação com interface gráfica (prompts e diálogos) |
| WebDriver Manager | Gerenciamento automático do driver do Edge |
| Sockets (stdlib) | Comunicação TCP com servidores CTF |
| Regex (stdlib) | Parsing e extração de dados das respostas |
| Math (stdlib) | Operações matemáticas para criptoanálise |
Automation-Serpro/
├── Automation/
│ ├── automation.py # Automação principal ALM ↔ Pontua
│ ├── automation_corrigido.py # Versão corrigida da automação
│ └── teste.py # Script de teste para componentes isolados
├── advinhacao.py # Desafio CTF: Predição MT19937
├── gemeos.py # Desafio CTF: RSA com primos gêmeos
├── LICENSE # Licença MIT
└── README.md
Script principal que automatiza o fluxo de contagem de Pontos de Função, eliminando trabalho manual repetitivo.
Arquitetura:
- Classe
automation— Page Object Pattern aplicado aos sistemas ALM e Pontua- Locators centralizados em dicionário para fácil manutenção
- Métodos genéricos:
obter_textoElemento(),clicar_botao(),preencher_campo() - Suporte a dropdowns Angular (
ng-select) e HTML padrão (<select>) - Tratamento de campos de data, rich text editors e comentários
Fluxo de execução (12 etapas):
- Solicita link do ALM ao usuário via prompt
- Inicia o Microsoft Edge com perfil autenticado
- Extrai dados: resumo, número da demanda, solicitante, data, código de serviço
- Navega para o sistema Pontua em nova aba
- Preenche automaticamente todos os campos da demanda
- Configura e salva a contagem (método SFP, roteiro SERPRO V3)
- Retorna ao ALM e registra o comentário com o resultado
- Anexa o link do Pontua como referência
Solução para o desafio de "adivinhação" da CTF Security Week, que explora a vulnerabilidade do Mersenne Twister quando outputs são expostos.
Conceitos aplicados:
- Untemper — Reversão das operações de bit-shift e XOR do MT19937
- Clonagem de estado — Reconstrução do array interno de 624 valores de 32 bits
- Previsão determinística — Após clonar o estado, todos os outputs futuros são previsíveis
Implementação:
# Classe MT19937 completa com twist() e extract_number()
# Funções de untemper: undo_right_shift_xor() e undo_left_shift_xor_mask()
# Comunicação via socket TCP com o servidor do desafioSolução para o desafio de criptografia RSA onde N = p × q e os primos p e q são gêmeos (diferem por 2), tornando a fatoração trivial.
Conceitos aplicados:
- Fatoração de Fermat — Eficiente quando
peqsão próximos:N = a² - b² - Inverso modular — Cálculo de
d = e⁻¹ mod φ(N)usandopow(e, -1, phi) - Decriptação RSA —
m = c^d mod N, com conversão de inteiro para bytes
- Python 3.8+
- Microsoft Edge (para a automação de navegador)
- Bibliotecas Python (apenas para o módulo de automação):
selenium
webdriver-manager
pyautogui
Os scripts de CTF (
advinhacao.pyegemeos.py) utilizam apenas a biblioteca padrão do Python.
# Clone o repositório
git clone https://github.com/Augustuuuuu/Automation-Serpro.git
cd Automation-Serpro
# Instale as dependências (apenas para automação)
pip install selenium webdriver-manager pyautoguicd Automation
python automation.pyO script abrirá uma caixa de diálogo solicitando o link do ALM. O restante do fluxo é automático, com confirmações nas etapas-chave.
# Predição MT19937
python advinhacao.py
# RSA com primos gêmeos
python gemeos.py
⚠️ Os scripts CTF requerem acesso à rede interna do SERPRO (desafio.ctfsecurityweek.serpro).
Este projeto está licenciado sob a MIT License.
Desenvolvido por Augusto Saboia.