feat: add arno challenge
This commit is contained in:
parent
0c40415d3d
commit
2050daf730
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
**/node_modules
|
||||
.DS_Store
|
||||
*/drafts
|
||||
**/.venv
|
||||
**/.vscode
|
||||
*.tgz
|
9
arno/README.md
Normal file
9
arno/README.md
Normal file
@ -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
|
33
arno/SOLUTION.md
Normal file
33
arno/SOLUTION.md
Normal file
@ -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}`
|
BIN
arno/lesfilLeSduBorddemer.wav
Normal file
BIN
arno/lesfilLeSduBorddemer.wav
Normal file
Binary file not shown.
23
arno/writeup.py
Normal file
23
arno/writeup.py
Normal file
@ -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()
|
Loading…
Reference in New Issue
Block a user