diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..77e4897 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +**/node_modules +.DS_Store +*/drafts +**/.venv +**/.vscode +*.tgz \ No newline at end of file diff --git a/arno/README.md b/arno/README.md new file mode 100644 index 0000000..bf9ca69 --- /dev/null +++ b/arno/README.md @@ -0,0 +1,9 @@ +# les filLeS du Bord de mer +## Text +On a serene evening by the water, Éloise gazed at the waves lapping gently against the shore. The moonlight shimmered on the surface, revealing fleeting glimpses of what lay beneath. Her friends, the girls of the seaside, whispered tales of hidden treasures, but Éloise knew that sometimes the most significant secrets were found in the smallest details—like the way the light flickered at the edge of the tide, just enough to catch a curious eye. + +As she traced her fingers in the sand, she thought of the laughter and memories shared, realizing that their legacy might not be in grand gestures, but rather in the subtle moments—the last bits of joy that lingered, waiting to be uncovered by those who knew where to look. +## Files +[lesfilLeSduBorddemer.wav](lesfilLeSduBorddemer.wav) +## How to Deploy +n/a \ No newline at end of file diff --git a/arno/SOLUTION.md b/arno/SOLUTION.md new file mode 100644 index 0000000..3fa0787 --- /dev/null +++ b/arno/SOLUTION.md @@ -0,0 +1,33 @@ +## Difficulty +Easy +## Category +Steganography +## How To Solve +From the filename it should be clear that LSB is a hint, referring to the Least Significant Bits from which you have to extract the flag. Using Python: +```python +import wave + +wav = wave.open("lesfilLeSduBorddemer.wav", mode='rb') +frames = wav.getnframes() +bytes = bytearray(list(wav.readframes(frames))) + +# Replace each frame_byte with only the value of the LSB +for i in range(len(bytes)): + bytes[i] = bytes[i] & 1 # bitmask with 00000001 + +# Byte array to string +result = "" +for i in range(0, len(bytes), 8): + byte_chunk = bytes[i:i+8] + int_value = int("".join(map(str, byte_chunk)), 2) + char_value = chr(int_value) + result += char_value + +# Remove the trailing '#' characters +decoded = result.split("#")[0] + +print(decoded) # This will show the flag +wav.close() +``` +## Flag +`IGCTF{Th1s_m3ss4ge_1s_h1dd3n_1n_4ud10}` \ No newline at end of file diff --git a/arno/lesfilLeSduBorddemer.wav b/arno/lesfilLeSduBorddemer.wav new file mode 100644 index 0000000..52bb5c8 Binary files /dev/null and b/arno/lesfilLeSduBorddemer.wav differ diff --git a/arno/writeup.py b/arno/writeup.py new file mode 100644 index 0000000..88fa294 --- /dev/null +++ b/arno/writeup.py @@ -0,0 +1,23 @@ +import wave + +wav = wave.open("lesfilLeSduBorddemer.wav", mode='rb') +frames = wav.getnframes() +bytes = bytearray(list(wav.readframes(frames))) + +# Replace each frame_byte with only the value of the LSB +for i in range(len(bytes)): + bytes[i] = bytes[i] & 1 # bitmask with 00000001 + +# Byte array to string +result = "" +for i in range(0, len(bytes), 8): + byte_chunk = bytes[i:i+8] + int_value = int("".join(map(str, byte_chunk)), 2) + char_value = chr(int_value) + result += char_value + +# Remove the trailing '#' characters +decoded = result.split("##")[0] + +print(decoded) +wav.close() \ No newline at end of file