Skip to content

augustosaboia/Automation-Serpro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Automation Serpro

Python Selenium License

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).


📋 Índice


📖 Sobre o Projeto

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

⚡ Funcionalidades

🔧 Automação de Contagem de Pontos de Função

  • 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

🔐 Desafio CTF — Predição de PRNG (MT19937)

  • 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

🔑 Desafio CTF — Quebra de RSA com Primos Gêmeos

  • 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

🛠 Tecnologias Utilizadas

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

📁 Estrutura do Projeto

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

🔍 Detalhamento dos Módulos

Automation/automation.py — Automação ALM ↔ Pontua

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):

  1. Solicita link do ALM ao usuário via prompt
  2. Inicia o Microsoft Edge com perfil autenticado
  3. Extrai dados: resumo, número da demanda, solicitante, data, código de serviço
  4. Navega para o sistema Pontua em nova aba
  5. Preenche automaticamente todos os campos da demanda
  6. Configura e salva a contagem (método SFP, roteiro SERPRO V3)
  7. Retorna ao ALM e registra o comentário com o resultado
  8. Anexa o link do Pontua como referência

advinhacao.py — Desafio CTF: Predição de PRNG

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 desafio

gemeos.py — Desafio CTF: RSA com Primos Gêmeos

Soluçã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 p e q são próximos: N = a² - b²
  • Inverso modular — Cálculo de d = e⁻¹ mod φ(N) usando pow(e, -1, phi)
  • Decriptação RSAm = c^d mod N, com conversão de inteiro para bytes

📦 Pré-requisitos

  • 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.py e gemeos.py) utilizam apenas a biblioteca padrão do Python.


🚀 Instalação

# 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 pyautogui

▶️ Como Usar

Automação de Pontos de Função

cd Automation
python automation.py

O script abrirá uma caixa de diálogo solicitando o link do ALM. O restante do fluxo é automático, com confirmações nas etapas-chave.

Desafios CTF

# 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).


📄 Licença

Este projeto está licenciado sob a MIT License.

Desenvolvido por Augusto Saboia.

About

Automação para contagem de pontos de função · Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages