Files
adif-api-reverse-engineering/debug_auth.py

94 lines
2.5 KiB
Python

#!/usr/bin/env python3
"""
Script de debug para ver el canonical request y string to sign
"""
from adif_auth import AdifAuthenticator
import json
ACCESS_KEY = "and20210615"
SECRET_KEY = "Jthjtr946RTt"
def debug_auth(url, payload, title):
"""
Muestra el canonical request y string to sign para debug
"""
print("\n" + "="*70)
print(title)
print("="*70)
auth = AdifAuthenticator(access_key=ACCESS_KEY, secret_key=SECRET_KEY)
# Usar el mismo user_id y timestamp para ambos
from datetime import datetime
import uuid
user_id = "test-user-123"
date = datetime(2025, 12, 4, 21, 0, 0) # Fecha fija para debugging
from urllib.parse import urlparse
parsed = urlparse(url)
host = parsed.netloc
path = parsed.path
params = parsed.query or ""
client = "AndroidElcanoApp"
content_type = "application/json;charset=utf-8"
timestamp = auth.get_timestamp(date)
date_simple = auth.get_date(date)
# Preparar canonical request
canonical_request, signed_headers = auth.prepare_canonical_request(
"POST", path, params, payload, content_type, host, client, timestamp, user_id
)
# Preparar string to sign
string_to_sign = auth.prepare_string_to_sign(
timestamp, date_simple, client, user_id, canonical_request
)
# Calcular firma
signature = auth.calculate_signature(string_to_sign, date_simple, client)
print(f"\nURL: {url}")
print(f"Payload: {json.dumps(payload, separators=(',', ':'))}\n")
print("CANONICAL REQUEST:")
print("-" * 70)
print(canonical_request)
print("-" * 70)
print("\nSTRING TO SIGN:")
print("-" * 70)
print(string_to_sign)
print("-" * 70)
print(f"\nSIGNATURE: {signature}")
# Test 1: Departures (funciona)
url1 = "https://circulacion.api.adif.es/portroyalmanager/secure/circulationpaths/departures/traffictype/"
payload1 = {
"commercialService": "BOTH",
"commercialStopType": "BOTH",
"page": {"pageNumber": 0},
"stationCode": "10200",
"trafficType": "ALL"
}
debug_auth(url1, payload1, "DEPARTURES (funciona ✅)")
# Test 2: BetweenStations (no funciona)
url2 = "https://circulacion.api.adif.es/portroyalmanager/secure/circulationpaths/betweenstations/traffictype/"
payload2 = {
"commercialService": "BOTH",
"commercialStopType": "BOTH",
"originStationCode": "10200",
"destinationStationCode": "71801",
"page": {"pageNumber": 0},
"trafficType": "ALL"
}
debug_auth(url2, payload2, "BETWEENSTATIONS (no funciona ❌)")