Principe:
Envoyer un autre message en morse, avec plusieurs fréquences de signaux
Le challenge
IQ
GNU Radio
On est donc en train de lire un IQ pour l'enregistrer en IQ… Mais c'est voulu: cela me permet de m'assurer qu'une entrée qui marche (l'exemple IQ donné par le serveur) donnera un IQ qui marche. Il me restera plus, ensuite, qu'à remplacer la brique d'entrée "File Source" par une entrée arbitraire en morse
Une lib utile dans beaucoup de CTF d'ailleurs, j'ai pu la recroiser pour de l'exploitation de binaire, entre autres
Le signal
Détail
Je n'allais pas juste vous balancer le diagramme! :)
Ici, on va prendre le message d'exemple HELLO.
On le convertit en morse, ce qui donne .... . .-.. .-.. ---
On traduit le morse alors en fréquences (5ms5kh signifiant 5ms à 5KHz) selon les règles données par le challenge, et l'on traduit ces fréquences en un vecteur binaire où 0 indiquera une fréquence de 1KHz et 1 indiquera 5KHz
On entre ce vecteur dans une brique "Vector Source". Cette brique sera cablée au 5KHz, en bas,
via un Multiply: quand la vecteur vaut 1, la sortie de ce multiply sera un signal de 5KHz
De manière similaire, on cable le vecteur à une source d'1KHz, mais on inverse d'abord le vecteur,
pour que 0 devienne 1, et on multiplie le résultat par la source d'1KHz,
donnant en sortie un signal de 1KHz quand le vecteur vaut 0
Enfin, on additionne les deux signaux
Pour inverser 0 et 1, j'ai fait -(X - 1): la brique Add Const = -1 transforme 0 en -1 et 1 en 0, et la brique Multiply const = -1 transforme ce -1 en 1
Vecteur d'entrée
Attention car mes notes ne sont pas correctes à ce niveau là.
Il est probablement possible d'utiliser un fichier comme vecteur d'entrée, mais j'ai été pris par le temps et donc, j'ai fait simple: copier, coller, terminé
Flag
Un chouette challenge au final, ne m'étant jamais vraiment servi de GNURadio, c'était sympa de découvrir ce qu'on peut faire avec en termes de traitement de signaux