# [?] — NULLSECTOR :: Transmission 0x00
**Autor/Firma:** DcD
**Tipo:** Puzzle criptográfico multi-capa (CTF/ARG)
**Secciones:** 4 (Binario, ECC, Audio, Hex)
---
## ÍNDICE
1. [Sección IV — Hex (RESUELTA)](#sección-iv--hex-resuelta)
2. [Sección III — Audio/WAV (RESUELTA)](#sección-iii--audiowav-resuelta)
3. [Sección II — Curva Elíptica (ANALIZADA)](#sección-ii--curva-elíptica-analizada)
4. [Sección I — Binario (DECODIFICADA, NO DESCIFRADA)](#sección-i--binario-decodificada-no-descifrada)
5. [Análisis cruzado entre secciones](#análisis-cruzado-entre-secciones)
6. [Lo que NO se ha conseguido](#lo-que-no-se-ha-conseguido)
7. [Solución más probable](#solución-más-probable)
---
## Sección IV — Hex (RESUELTA)

### Datos originales
```
4e 6f 20 68 61 79 20 63 61 6d 69 6e 6f 2e 20 48 61 79 20 75 6e 61 20 70 75 65 72 74 61 2e
```
### Método de resolución
Conversión directa de hexadecimal a ASCII. Cada par de dígitos hex representa un carácter.
### Resultado
> **"No hay camino. Hay una puerta."**
### Interpretación
Frase filosófica que sirve de pista meta-puzzle: el camino matemático (sección II) está roto a propósito. La solución no viene del cálculo directo sino de encontrar la "puerta" — probablemente el valor extraído del audio.
---
## Sección III — Audio/WAV (RESUELTA)

### Datos originales
- URL: `
https://files.catbox.moe/cmpjrr.wav`
- Formato: WAV PCM, 44100 Hz, 16-bit, mono, 30 segundos
- SHA256 del archivo: `e9f151375e77f541bc11842199a8a2fcddcc6a61012349ada84936c05072de6c`
### Método de resolución
**Paso 1 — Análisis FFT (Transformada Rápida de Fourier):**
Se analizaron los 1.323.000 muestras con ventanas de FFT. Se descubrió un patrón claro: el audio alterna entre **tonos ultrasónicos** (18000–19800 Hz) y **silencios** (~20 Hz).
**Paso 2 — Mapeo de frecuencias:**
Se identificaron **16 frecuencias únicas** separadas por pasos de exactamente 120 Hz:
| Frecuencia (Hz) | Dígito Hex |
|---|---|
| 18000 | 0 |
| 18120 | 1 |
| 18240 | 2 |
| 18360 | 3 |
| 18480 | 4 |
| 18600 | 5 |
| 18720 | 6 |
| 18840 | 7 |
| 18960 | 8 |
| 19080 | 9 |
| 19200 | A |
| 19320 | B |
| 19440 | C |
| 19560 | D |
| 19680 | E |
| 19800 | F |
**Paso 3 — Extracción de tonos:**
Se extrajeron 64 segmentos de tono (65 originalmente, 2 adyacentes con la misma frecuencia se fusionaron). Cada tono = 1 dígito hex.
### Resultado
```
58d6dce1491f07804dd931281853367afd6ddc779bae31fb771dfe3b1a5454c5
```
**32 bytes / 256 bits** — tamaño exacto de una clave privada para curvas elípticas (secp256k1, P-256).
### Verificación visual con espectrograma (Audacity)
La imagen del espectrograma en Audacity confirma el análisis:
```
Frecuencia ↑
20000 Hz ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ (línea rosa = Nyquist 22050 Hz)
╶╴ ╶╴╶╴ ╶╴ ╶╴╶╴ ╶╴ ← Líneas blancas discontinuas a distintas alturas
18000 Hz ╶╴╶╴ ╶╴╶╴ ╶╴ = tonos ultrasónicos (hex digits)
║
10000 Hz ║ Gradiente naranja uniforme = ruido de fondo
1000 Hz║ (sin patrones, sin texto espectral, sin imágenes ocultas)
100 Hz╚═══════════════════════════
0s 15s 30s
```
**Lo que muestra la imagen:**
- **Banda 18.000–20.000 Hz:** Segmentos blancos discontinuos (las "rayas" a diferentes alturas). Cada raya = un tono ultrasónico. La altura de cada raya = la frecuencia = un dígito hex.
- **Banda 100–17.000 Hz:** Gradiente naranja completamente uniforme. Analizado por FFT en ventanas de 0.5s buscando picos en sub-bandas (100-500, 500-2000, 2000-5000, 5000-10000 Hz) → **cero picos significativos**. No hay texto espectral ni imágenes ocultas.
- **Línea rosa superior:** Marcador de frecuencia Nyquist (22050 Hz), artefacto de Audacity, no datos.
### Análisis de potencia por banda de frecuencia
| Banda | Rango (Hz) | Potencia media | Desv. estándar | Observación |
|---|---|---|---|---|
| Sub-bass | 20 – 60 | 1.168.597 | 375.741 | Ruido uniforme |
| Bass | 60 – 250 | 540.899 | 97.144 | Ruido uniforme |
| Low-mid | 250 – 500 | 332.292 | 53.172 | Ruido uniforme |
| Mid | 500 – 2.000 | 195.521 | 11.137 | Ruido uniforme (σ muy baja) |
| Upper-mid | 2.000 – 4.000 | 120.316 | 6.659 | Ruido uniforme |
| Presence | 4.000 – 6.000 | 94.674 | 5.118 | Ruido uniforme |
| Brilliance | 6.000 – 10.000 | 74.325 | 2.896 | Ruido uniforme |
| High | 10.000 – 14.000 | 60.252 | 2.074 | Ruido uniforme |
| Very high | 14.000 – 17.000 | 53.442 | 2.272 | Ruido uniforme |
| **Ultrasonic** | **17.000 – 20.000** | **83.663** | **30.153** | **σ alta = tonos ON/OFF** |
La desviación estándar de la banda ultrasónica (30.153) es **6-15x mayor** que las bandas vecinas, confirmando que es la única banda con señal modulada. Todas las demás bandas tienen σ relativamente baja = ruido estacionario sin información.
### Verificaciones adicionales del WAV
- **Sin datos ocultos adicionales:** No hay bytes trailing, metadatos ocultos, chunks extra, ni strings embebidos (NULLSECTOR, DcD, flag, etc.).
- **LSB steganography:** Probada en bits 0, 1 y signo → solo ruido aleatorio.
- **Análisis de fase (BPSK):** Los ~13.935 inicios de tono no codifican ASCII legible por fase.
- **Modulación de amplitud (AM):** Los tonos muestran transiciones ON/OFF normales (~22-28 por segundo), sin sub-codificación Morse ni patrones binarios significativos.
- **Texto espectral:** Búsqueda de picos en frecuencias medias (100-10.000 Hz) en ventanas de 0.5s → cero picos. No hay imagen ni texto dibujado en el espectrograma.
- El **único dato oculto** en el audio son las frecuencias ultrasónicas que codifican el hex.
---
## Sección II — Curva Elíptica (ANALIZADA)

### Datos originales
```
Curva E: y² = x³ + ax + b (mod p)
p = 115792089237316195423570985008687907853269984665640564039457584007908834671663
a = -3
b = 41058363725152142129326129780047268409114441015993725554835256314039467401291
G = (48439561293906451759052585252797914202762895571635221052689631163232889574723,
36134250956749795798585127919587881956611106672985015071877198253568414405109)
Q = (87701808221879959144325760817902411508329595313271040841624155110522497899721,
7470846016767634792577855349355124472819035874662531063505258520278364978398)
```
### Análisis realizado
#### Identificación de parámetros
| Parámetro | Identificado como | Match exacto |
|---|---|---|
| `p` | **primo de secp256k1** (curva de Bitcoin) |

Exacto |
| `a = -3` | parámetro `a` de **P-256** (NIST) |

Exacto |
| `b` | parámetro `b` de **P-256** |

Exacto |
| `Gy` | coordenada Y del generador **P-256** |

Exacto |
| `Gx` | coordenada X del generador **P-256 MODIFICADA** |

Difiere |
| `Q` | punto en la curva **P-256 estándar** |

Verificado |
#### Diferencia en Gx
```
P-256_Gx estándar: 48439561293906451759052585252797914202762895571635221052689685117659867407286
Puzzle_Gx: 48439561293906451759052585252797914202762895571635221052689631163232889574723
^^^^^^^^^^^^^^^^^
Diferencia: 53954406526943154449553849515060563
Hex de la diferencia: 0xa64285a00e45468ad0ba723492d53
```
#### Resultados de verificación de curva
| Test | Resultado |
|---|---|
| G está en P-256 (p_P256, a=-3, b_P256) |

NO |
| G está en secp256k1 (p_k1, a=0, b=7) |

NO |
| Q está en P-256 estándar |

SÍ |
| Q está en la misma curva que G |

NO (para ningún (p,a,b) probado) |
**→ La curva es un HÍBRIDO DELIBERADO:** usa `p` de secp256k1 pero `a`, `b`, `Gy` de P-256, con `Gx` modificado. El generador G **no pertenece a ninguna curva estándar**, haciendo imposible la verificación `k * G = Q`.
#### Operaciones ECC probadas
| Operación | Resultado |
|---|---|
| `audio_hex * G_estándar_P256 = Q` ? |

No |
| `audio_hex * G_puzzle` en P-256 ? |

G no está en P-256 |
| `audio_hex * G_puzzle` en secp256k1 ? |

G no está en secp256k1 |
| `diff * G_estándar = Q` ? |

No |
| `(k ± diff) * G_estándar = Q` ? |

No |
| `(k * diff mod n) * G_estándar = Q` ? |

No |
| Drop cada posición de los 65 tonos → `k * G = Q` ? |

Ninguna |
| ECIES: `k * Q` → SHA256 → XOR con sección I |

Basura |
#### Bitcoin (por si el audio hex es una clave privada secp256k1)
```
Clave privada: 58d6dce1491f07804dd931281853367afd6ddc779bae31fb771dfe3b1a5454c5
Clave pública comprimida: 02df57cb633c7e10ce1759d7c9af99868997bdcdf247033210de21e58fbedc4338
Dirección Bitcoin P2PKH: 1Nr5cmKWMLxvYuLeWBGLbFzeGPxBguuoR6
WIF (comprimida): KzCQKZhGPXvxVFHKPYjP9XHd3PoccHFkVJXEHCpR1NkdfPJb5MEa
```
---
## Sección I — Binario (DECODIFICADA, NO DESCIFRADA)

### Datos originales
```
101000 110111 110100 100011 100001 110100
110001 101001 110011 101000 100001 100111
101001 110111 101001 101000 100011 110011
```
### Método de decodificación
Cada grupo de 6 bits se interpreta como un valor decimal y se le suma 32 (codificación **DEC SIXBIT**):
| Binario | Decimal | +32 | Carácter |
|---|---|---|---|
| 101000 | 40 | 72 | H |
| 110111 | 55 | 87 | W |
| 110100 | 52 | 84 | T |
| 100011 | 35 | 67 | C |
| 100001 | 33 | 65 | A |
| 110100 | 52 | 84 | T |
| 110001 | 49 | 81 | Q |
| 101001 | 41 | 73 | I |
| 110011 | 51 | 83 | S |
| 101000 | 40 | 72 | H |
| 100001 | 33 | 65 | A |
| 100111 | 39 | 71 | G |
| 101001 | 41 | 73 | I |
| 110111 | 55 | 87 | W |
| 101001 | 41 | 73 | I |
| 101000 | 40 | 72 | H |
| 100011 | 35 | 67 | C |
| 110011 | 51 | 83 | S |
### Texto resultante
```
HWTCATQISHAGIWIHCS
```
### Distribución de letras
```
A(2) C(2) G(1) H(4) I(3) Q(1) S(2) T(2) W(2)
Total: 18 letras, 9 letras únicas
```
### Palabras formables con estas letras
**6 letras:** SWITCH, TACTICS, STATIC, STITCH, THATCH, TWITCH, ATTACH
**5 letras:** CATCH, CHATS, HATCH, WATCH, WITCH
**4 letras:** ACTS, CASH, CAST, CATS, CHAT, CHIT, GAIT, GASH, GIST, HATS, ITCH, SCAT, SIGH, SWIG, THAT, THIS, TICS, TWIG, TWIT, WAGS, WAIT, WASH, WHAT, WHIG, WHIT, WISH, WITH, WITS, THAW
**Nota:** Ninguna combinación de 2-3 palabras consume exactamente las 18 letras.
### Cifrados probados SIN éxito
| Cifrado | Variantes probadas | Resultado |
|---|---|---|
| **Vigenère** | 70+ claves nombradas + **todas las 17.576 claves de 3 letras** | Mejor score 8/18, sin texto legible |
| **Autokey** | NULLSECTOR, DCD, PUERTA, etc. | Sin texto legible |
| **Beaufort** | Múltiples claves | Sin texto legible |
| **Transposición columnar** | 40+ claves (DCD, NULLSECTOR, PUERTA, CURVE, etc.) | Sin texto legible |
| **Rail fence** | 2-9 raíles | Sin texto legible |
| **Escítala** | Circunferencias 2-9 | Sin texto legible |
| **Cifrado de ruta (espiral)** | Cuadrículas 2x9, 3x6, 4x5, 5x4, 6x3, 7x3, 9x2 | Sin texto legible |
| **Playfair** | 50+ claves | Sin texto legible |
| **Two-square** | 5 pares de claves | Sin texto legible |
| **Polybius** | Con clave NULLSECTOR | Ida y vuelta da el mismo texto |
| **ROT-N** | 25 rotaciones | Sin texto legible |
| **Atbash** | — | Sin texto legible |
| **XOR** | Con clave de audio, ECIES, SHA256 | Basura binaria |
| **Base64** | 6-bit → índice base64 → decode | Sin texto legible |
| **Reagrupación bits** | 108 bits → 7-bit, 8-bit | Sin texto legible |
| **Baudot/ITA2** | 5-bit | Sin texto legible |
| **Bacon** | 5-bit | Sin texto legible |
| **Cifrado César hex-shift** | Sobre valores 6-bit | Sin texto legible |
| **Índices en NULLSECTOR** | val mod 10 con offsets 0-9 | Sin texto legible |
---
## Análisis cruzado entre secciones
### Relaciones probadas
| Hipótesis | Resultado |
|---|---|
| Audio hex = clave privada `k`, verificar `k * G = Q` en cualquier curva |

Falla en todas las curvas |
| Diferencia de Gx (53954406526943154449553849515060563) como clave |

No produce texto ni Q |
| ECIES: `k * Q` como secreto compartido → descifrar sección I |

Basura |
| SHA256 del audio hex = algún parámetro del puzzle |

No coincide |
| Hash del archivo WAV = algún parámetro del puzzle |

No coincide |
| Audio hex como clave AES-256 para descifrar sección I |

Sin librería AES pura, pero XOR simple no funciona |
| Sección I como escalar × G en alguna curva = punto significativo |

No |
| Coordenadas de Q ⊕ audio bytes = texto |

Basura |
### Conexión narrativa
```
Sección IV: "No hay camino. Hay una puerta."
↓ ↓
Sección II: Curva rota (no hay Sección III: Audio hex
camino matemático) = LA PUERTA (256-bit key)
↓
Sección I: Mensaje cifrado (¿detrás de la puerta?)
```
---
## Lo que NO se ha conseguido
1. **Descifrar la sección I:** `HWTCATQISHAGIWIHCS` permanece sin descifrar tras probar ~17.700 combinaciones de cifrado/clave. El cifrado usado y/o la clave son desconocidos.
2. **Verificar `k * G = Q`:** La curva híbrida impide toda verificación ECC estándar. No se ha encontrado ningún `(p, a, b)` donde G y Q estén simultáneamente en la curva.
3. **Encontrar la bandera (flag) definitiva:** Sin descifrar la sección I, no se puede confirmar si el flag es:
- El hash hexadecimal del audio
- Un texto oculto en la sección I
- Una combinación de todas las secciones
4. **Significado de la diferencia de Gx:** El valor `0xa64285a00e45468ad0ba723492d53` (15 bytes) no produce texto ASCII legible ni coincide con hashes conocidos. Su papel permanece desconocido.
---
## Solución más probable
### Opción 1 (más probable): La flag es el hash del audio
```
NULLSECTOR{58d6dce1491f07804dd931281853367afd6ddc779bae31fb771dfe3b1a5454c5}
```
**Razonamiento:** La sección IV dice que la respuesta es una "puerta", no un "camino". El valor de 256 bits extraído del audio ES la puerta — no necesitas resolver la matemática ECC (que está rota a propósito). La sección II existe para distraer/demostrar que "no hay camino".
### Opción 2: La sección I descifrada da la flag
`HWTCATQISHAGIWIHCS` bajo un cifrado no probado (quizás con una clave compartida fuera del puzzle por DcD) produce un texto que completa el puzzle. Posiblemente requiere:
- Una clave de un canal externo (Discord, foro, etc.)
- El resultado de un "Transmission 0x01" posterior
- Un cifrado exótico no cubierto en los ~17.700 intentos
### Opción 3: Solución compuesta
La respuesta final une fragmentos de cada sección:
- Hash audio (III) = clave privada
- Dirección Bitcoin = `1Nr5cmKWMLxvYuLeWBGLbFzeGPxBguuoR6`
- Curva rota (II) = pista narrativa
- Sección I descifrada = mensaje final
### Conclusión
> **El puzzle está diseñado para comunicar una idea:** los sistemas criptográficos pueden parecer seguros pero estar rotos por dentro (parámetros híbridos). La "puerta" es el conocimiento oculto (el audio hex), no el "camino" matemático. La respuesta más directa y completa que se puede dar con la información disponible es:
>
> **`NULLSECTOR{58d6dce1491f07804dd931281853367afd6ddc779bae31fb771dfe3b1a5454c5}`**
---
## Scripts utilizados
| Script | Propósito |
|---|---|
| `analyze_wav.py` | LSB steganography, búsqueda de bytes, amplitud, zero-crossing |
| `analyze_wav2.py` | FFT con numpy — descubrimiento de tonos ultrasónicos |
| `analyze_wav3.py` | Extracción refinada de tonos → 64 dígitos hex |
| `analyze_real_wav.py` | Análisis del WAV descargado (metadata, trailing, LSB, fase) |
| `decode_all.py` | Decodificador multi-sección |
| `ecc_verify.py` / `ecc_verify2.py` | Verificación de parámetros ECC |
| `ecc_hybrid.py` | Identificación del híbrido secp256k1/P-256 |
| `comprehensive.py` | Análisis cruzado (XOR, mod, grid) |
| `final_analysis.py` | SHA256, XOR combinaciones, aritmética de coordenadas |
| `solve_full.py` | Fuerza bruta Vigenère (17.576 claves) + cifrados alternativos |
| `solve_ecc.py` | 11 tests ECC (ECIES, sustracción de puntos, pre-imágenes hash) |
| `solve_final.py` | diff*G, Bitcoin, ECIES, base64 |
| `solve_critical.py` | Test G en P-256, transposición columnar, rail fence, escítala, Playfair, Polybius |
| `solve_final2.py` | Playfair exhaustivo, anagramas, resumen final |
Si quereis algún archivo escribidme y os lo paso al telegram o lo que sea