Radio Telescope

Bitskrieg CTFby smothy

Radio Telescope - Misc

Points: 322 | Flag: BITSCTF{s1l3nc3_1n_th3_n01s3} | Solved by: Smothy @ 0xN1umb

space vibes

what we got

a .txt file called rt7-log.txt with 10,000 floating point numbers. the challenge desc is from some Dr. Xavier saying the radio telescope aimed at "Vega cluster" keeps "randomly skipping a beat" and its like "a clearing in a forest." mans is clocking out and wants maintenance to look at it lmao

1.227758032072523804e+02 1.330683101555940198e+02 -4.273338156528737386e+00 1.202651081886457689e+02 ...

so basically 10k noisy float values. cool cool cool

the solve

ok so first thing i did was throw everything at it - plotted it as images at different dimensions, tried FFT, tried binary encoding, LSB extraction from IEEE 754 doubles... literally everything. nothing worked and i was going insane

then i had a moment of clarity (pun intended). the hint says "clearing in a forest" and "skip a beat." what if the noise IS the forest and the flag is literally hiding as constant values in the noise?

so i rounded every value to the nearest integer and mapped them to ASCII characters:

python
int_vals = np.round(data).astype(int)
chars = [chr(v) if 32 <= v <= 126 else '.' for v in int_vals]
text = ''.join(chars)

most of it is random garbage (as expected, noise rounds to random ints). but then i searched for RUNS of the same character and...

python
# find runs of 3+ identical characters
runs = [(m.group(), m.start(), len(m.group()))
        for m in re.finditer(r'(.)\1{2,}', text)]

BRUHHH:

'C' (67) x20 at position 374 'T' (84) x20 at position 758 'F' (70) x20 at position 1142 '{' (123) x20 at position 1526 's' (115) x20 at position 1910 '1' (49) x20 at position 2294 'l' (108) x20 at position 2678 '3' (51) x20 at position 3062 'n' (110) x20 at position 3446 'c' (99) x20 at position 3830 '3' (51) x20 at position 4214 '_' (95) x20 at position 4598 '1' (49) x20 at position 4982 'n' (110) x20 at position 5366 '_' (95) x20 at position 5750 't' (116) x20 at position 6134 'h' (104) x20 at position 6518 '3' (51) x20 at position 6902 '_' (95) x20 at position 7286 'n' (110) x20 at position 7670 '0' (48) x20 at position 8054 '1' (49) x20 at position 8438 's' (115) x20 at position 8822 '3' (51) x20 at position 9206 '}' (125) x20 at position 9590

eureka

every 384 samples theres a run of exactly 20 values that all round to the same integer. those integers are ASCII characters. the "clearings in the forest" are literally 20 samples of constant signal (silence) hidden in a forest of noise. ngl this is such a clean challenge concept

the values arent exactly equal either - they hover around the target integer like 66.84, 67.01, 66.91, 67.06... all rounding to 67 (ASCII C). just enough noise to look natural at first glance but they all converge to the same int. sneaky

solve

reading the characters: CTF{s1l3nc3_1n_th3_n01s3} - prepend BITS for the flag format

s1l3nc3_1n_th3_n01s3 = "silence in the noise"

fr the flag is literally the description of the technique. the silence (constant values) in the noise (random data). poetic stuff honestly

flag

BITSCTF{s1l3nc3_1n_th3_n01s3}


smothy out ✌️