Description
Direct-Sequence Spread Spectrum techniques are amazing. They enable simultaneous communications between many radio systems using the same radio channel (it is also known as CDMA : Code Division Multiple Access), and they can also function with a very poor signal to noise ratio. We will illustrate those properties with the following experiment: can you decode the flag if I transmit all its 22 characters at the same time, and to make things worse, I also add cat noises to the signal?
In this experiment, the signal to cat ratio for each letter can be as low as -45dB!
I used Gold codes (also known as Gold sequences, named after Robert Gold). They are generated by XORing two maximum length sequences (2^n-1) coming from two LFSR (Linear Feedback Shift Register) of same length (n), where one of the sequence is shifted from the other. The resulting sequences have a very low cross-correlation: it is perfect for our experiment!
GPS satellites also use Gold codes to send their signals, but beware: my Gold codes are not the same: the two LFSR have a length of 15 bits, with the following feedback polynomials:
G1(x) = x^15 + x^7 + 1
G2(x) = x^15 + x^10 + x^5 + x^4 + 1
The initial value of both registers is 0x7FFF
.
As I did not want the audio file to be too long, I overlayed the 22 ASCII characters (8 bits) of the flag one upon the other, each using its own Gold code.
I wanted to make thing simple: the first audio sample contains the first bit of the Gold sequence, and so on (one sequence bit per audio sample).
As a consequence, the audio signal is 262136 samples long: 8 times 32767 (the number of bits per character times the length of one of my Gold sequence).
Bits from my flag bytes are transmitted most signficant bit first (MSB first).
To find each character of the flag, you need to use the characteristic phase of the Gold code that has heen attributed to it.
The 22 phases (which corresponds to the number of bits of advance of the register G2
relative to the register G1
) are the following :
4, 7, 8, 24, 27, 31, 39, 42, 43, 49, 53, 54, 59, 62, 65, 73, 93, 99, 118, 119, 120, 128
For example, the first bits of the 22th sequence (phase=128) are :
1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, ...
This sequence is transformed in the following manner to be correlated to the signal:
+0.5, +0.5, -0.5, -0.5, +0.5, +0.5, -0.5, +0.5, -0.5, -0.5, +0.5, +0.5, -0.5, +0.5, +0.5, -0.5, ...
If the sequence is correlated, the value of the decoded bit is 0, if it is anti-correlated, the value of the decoded bit is 1.
In theory, the correlation of a 32767 bit long sequence should bring a correlation gain of 10*log10(32767) = 45.2 dB
. Will it be sufficient? Let’s hope the cats are not too noisy!
Files
-
signal-sur-chat.wav
512.03 KiB – b2bdad5798fb97cdbad90b656218b8907790be2601c05c351847bcd4a4f616d6
Author

Flag
Submit your solution
You can submit your writeup for this challenge. Read the FAQ to learn how to proceed.
You need to be logged in to submit a writeup.
Writeups
There are no public solutions for this challenge yet, but you can submit yours after getting the flag.