Refactor: reorganización completa del proyecto y documentación consolidada

Esta actualización reorganiza el proyecto de reverse engineering de la API de ADIF con los siguientes cambios:

Estructura del proyecto:
- Movida documentación principal a carpeta docs/
- Consolidados archivos markdown redundantes en CLAUDE.md (contexto completo del proyecto)
- Organización de tests en carpeta tests/ con README explicativo
- APK renombrado de base.apk a adif.apk para mayor claridad

Archivos de código:
- Movidos adif_auth.py y adif_client.py a la raíz (antes en api_testing_scripts/)
- Eliminados scripts de testing obsoletos y scripts de Frida no utilizados
- Nuevos tests detallados: test_endpoints_detailed.py y test_onepaths_with_real_trains.py

Descubrimientos:
- Documentados nuevos hallazgos en docs/NEW_DISCOVERIES.md
- Actualización de onePaths funcionando con commercialNumber real (devuelve 200)
- Extraídos 1587 códigos de estación en station_codes.txt

Configuración:
- Actualizado .gitignore con mejores patrones para Python e IDEs
- Eliminados archivos temporales de depuración y logs
This commit is contained in:
2025-12-05 11:22:13 +01:00
parent aa02d7c896
commit 68fac80520
42 changed files with 66402 additions and 4876 deletions

View File

@@ -1,8 +1,19 @@
#!/usr/bin/env python3
"""
ADIF API Authenticator
Implementación completa del algoritmo de autenticación HMAC-SHA256
basado en el análisis de ingeniería reversa de ElcanoAuth.java
ADIF API Authenticator - Réplica del Sistema Original
Este módulo es una réplica fiel del algoritmo de autenticación HMAC-SHA256
utilizado por la API de ADIF (El Cano Móvil), obtenido mediante ingeniería
reversa del código fuente original en ElcanoAuth.java.
El algoritmo sigue el patrón AWS Signature Version 4 con características
específicas de ADIF:
- Derivación de claves en cascada (date_key -> client_key -> signature_key)
- Orden NO alfabético de headers canónicos (crítico para el funcionamiento)
- Timestamp en formato ISO 8601 con zona horaria UTC
Fuente Original:
apk_decompiled/sources/com/adif/elcanomovil/serviceNetworking/interceptors/auth/ElcanoAuth.java
Uso:
auth = AdifAuthenticator(access_key="YOUR_KEY", secret_key="YOUR_KEY")