2025-06-18 22:21:07 +02:00
|
|
|
# Projet recorder.
|
|
|
|
|
2025-06-18 22:26:28 +02:00
|
|
|
Le but du projet est d'échanger de l'information entre deux PC en utilisant le son.
|
2025-06-18 22:21:07 +02:00
|
|
|
|
2025-06-18 22:26:28 +02:00
|
|
|
Une machine génère le son (via minimodem), le joue (via audacity par exemple) puis l'autre l'écoute et décode le message.
|
2025-06-18 22:21:07 +02:00
|
|
|
|
2025-06-18 22:26:28 +02:00
|
|
|
***Recorder*** analyse le son et isole les fréquences dominantes puis les traduit en 0 ou 1.
|
|
|
|
|
2025-06-18 22:30:21 +02:00
|
|
|
Il en sort une chaine binaire, qui est alors décodé dans le message originel.
|
2025-06-18 22:21:07 +02:00
|
|
|
|
|
|
|
```$ ./recorder.py -h
|
|
|
|
____ __
|
|
|
|
/ __ \___ _________ _________/ /__ _____
|
|
|
|
/ /_/ / _ \/ ___/ __ \/ ___/ __ / _ \/ ___/
|
|
|
|
/ _, _/ __/ /__/ /_/ / / / /_/ / __/ /
|
|
|
|
/_/ |_|\___/\___/\____/_/ \__,_/\___/_/
|
|
|
|
|
|
|
|
Author: Snorky
|
|
|
|
Version : 0.1
|
|
|
|
|
|
|
|
usage: recorder.py [-h] [-s] [-i DEVICE_INDEX] [-r RATE] [-l LENGTH_FRAME] [-p OUTPUT_NAME] [-v]
|
|
|
|
|
|
|
|
options:
|
|
|
|
-h, --help show this help message and exit
|
|
|
|
-s, --show_devices List of audio devices currently available for use.
|
|
|
|
-i DEVICE_INDEX, --device_index DEVICE_INDEX
|
|
|
|
Index of input audio device. (Default: -1)
|
|
|
|
-r RATE, --rate RATE Rate config. (Default: 16000)
|
|
|
|
-l LENGTH_FRAME, --length_frame LENGTH_FRAME
|
|
|
|
Frame size. (Default: 512)
|
|
|
|
-p OUTPUT_NAME, --output_name OUTPUT_NAME
|
|
|
|
Name to file to store raw audio. (Default: recorder.wav)
|
|
|
|
-v, --verbosity Increase logging. (Default: False)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
## Démo:
|
|
|
|
|
|
|
|
### Machine 1:
|
|
|
|
|
|
|
|
```
|
|
|
|
echo "HackThePlanet" | minimodem --tx --ascii --startbits 0 --stopbits 0.0 -f hacktheplanet.wav 8
|
|
|
|
```
|
|
|
|
|
|
|
|
Ouvrez audacity => importer => Audio et selectionner votre fichier
|
|
|
|
|
|
|
|
### Machine 2:
|
|
|
|
|
|
|
|
```
|
|
|
|
./recorder.py
|
|
|
|
```
|
|
|
|
|
2025-06-18 22:30:21 +02:00
|
|
|
Une fois le recorder.py en attente, cliquer sur lecture (machine 1) et attendre la fin de la transmission.
|
2025-06-18 22:26:28 +02:00
|
|
|
|
2025-06-18 22:21:07 +02:00
|
|
|
Puis Ctrl + c.
|
|
|
|
|
|
|
|
Résultat:
|
|
|
|
```
|
|
|
|
./recorder.py -v
|
|
|
|
____ __
|
|
|
|
/ __ \___ _________ _________/ /__ _____
|
|
|
|
/ /_/ / _ \/ ___/ __ \/ ___/ __ / _ \/ ___/
|
|
|
|
/ _, _/ __/ /__/ /_/ / / / /_/ / __/ /
|
|
|
|
/_/ |_|\___/\___/\____/_/ \__,_/\___/_/
|
|
|
|
|
|
|
|
Author: Snorky
|
|
|
|
Version : 0.1
|
|
|
|
|
|
|
|
Args value:
|
|
|
|
show_devices: False
|
|
|
|
device_index: -1
|
|
|
|
rate: 16000
|
|
|
|
length_frame: 512
|
|
|
|
output_name: recorder.wav
|
|
|
|
verbosity: True
|
|
|
|
Listener is running.
|
|
|
|
Ctrl + c for quit.
|
|
|
|
^C
|
|
|
|
Saving wav file: /home/pierre/.cache/recorder/wave/recorder.wav.
|
|
|
|
######## INFOS ########
|
|
|
|
Value recording = [ 0 0 0 ... 2094 2321 1534]
|
|
|
|
Data shape: 264704
|
|
|
|
Rate: 16000
|
|
|
|
length: 16.544s
|
|
|
|
Path file: recorder.wav
|
|
|
|
Device Index: -1
|
|
|
|
Extracting data from wav file:
|
|
|
|
............000100101000011011000110110101100010101000010110101001100000101000110110100001100111011010100110001011100101000011.......
|
|
|
|
Decoding message:
|
|
|
|
...............
|
|
|
|
Message transmitted is: HackThePlanet
|
2025-06-18 22:26:28 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## BUG
|
|
|
|
|
|
|
|
Il arrive certaines fois que le message ne se déchiffre pas.
|
|
|
|
|
2025-06-19 15:28:27 +02:00
|
|
|
Le problème n'est pas encore géré ... :)
|