Journal Faire du son avec des mots

Post√©¬†par¬† . Licence CC¬†By‚ÄĎSA.
√Čtiquettes¬†:
11
1
fév.
2023

Salut Nal !

Je t'écris aujourd'hui pour te parler d'un petit programme de quelques lignes serpentines, qui permet d'écrire du texte dans un fichier audio.

Le programme

import wave

# Texte d'entrée
string_data = input("Tapez du texte :")
encrypted_data = bytes(string_data, 'utf-8')
# On peut aussi ouvrir directement un fichier texte
#filename = str(input("Nom du fichier :"))
#encrypted_data = bytes(open(filename).read(), 'utf-8')

# √Čcrit le texte dans nouveau fichier tmp.wav
new_audio_file = wave.open('tmp.wav', 'wb')
new_audio_file.setparams((1, 2, 44100, 0, 'NONE', 'NONE'))
new_audio_file.writeframes(encrypted_data)
new_audio_file.close()

# Pour lire le fichier
#f = wave.open(filename, 'rb')
#string_data = f.readframes(f.getnframes())
#f.close()
#print(string_data.decode('utf8'))

C'est bête et ça marche. Incroyable.

Exemple

Lancez simplement le script et tapez du texte.
Vous remarquerez que de manière aléatoire, certaines chaines sont diminuées de leur dernier caractère.

J'ai fait un test sur The Time Machine de H. G. Wells que j'ai téléchargé au format texte UTF-8 ici.
Pensez à commenter/décommenter les quatre premières lignes.

Voici un petit aperçu visualisé avec Audacity.

Et le fichier wav associé.

Vous n'y comprenez rien en l'entendant ? Normal, c'est en anglais ! Mais vous pouvez retrouver le texte original en le passant à la moulinette du troisième bloc de code ci-dessus en commentant/décommentant les bonnes lignes. Vous n'y comprenez toujours rien ? Normal, ce script ne sert pas à rendre l'anglais compréhensible.

Utilité

Comment ?! Il faut en plus que ce soit utile !!

(Vite Jean-Marc, trouve quelque chose !)

Euh, et bien, en fait, ça pourrait servir à plusieurs machines à communiquer via leur port audio. Ou bien pour mettre un easter-egg dans une musique de jeu vidéo. Ou tout ce que tu pourras inventer de loufoque, on te fait confiance pour ça, Nal.

Conclusion

Je ne savais pas quoi en faire, alors je te l'offre, Nal, en esp√©rant que tu en fasses bon usage. Bien s√Ľr, il est perfectible, on peut ajouter un syst√®me pour choisir ce que l'on veut faire au lieu de tripatouiller le code, une interface graphique, un syst√®me pour chiffrer la cha√ģne de d√©part, et mille autres choses. Je ne r√©clame aucun copyright sur ce code, tu peux consid√©rer qu'il t'appartient.

Sur ce, voici une jolie nimage !

  • # Bravo

    Post√©¬†par¬† (site web personnel) . √Čvalu√©¬†√†¬†10.

    C'est comme si les fichiers audio, c'était des données, en fait !

    Bref, tu viens de découvrir la stéganographie.
    Tu veux t'amuser? Cache ton texte dans un fichier audio existant, sans modifier (apparemment) le son.

    • [^] # Re: Bravo

      Post√©¬†par¬† . √Čvalu√©¬†√†¬†2.

      C'est donc ainsi que s'appelle cette technique ? Je l'ignorais.

      J'avais rapidement pensé à ajouter discrètement une bande "muette" à un fichier audio, mais les possibilités diffèrent grandement selon le format audio utilisé. Une solution plus bourinne serait de mettre tout simplement le texte dans les métadatas du fichier. Bof.

      Il y a 10 sortes de gens dans le monde ‚Äď ceux qui comprennent le ternaire, ceux qui ne le comprennent pas et ceux qui le confondent avec le binaire.

      • [^] # Re: Bravo

        Post√©¬†par¬† (site web personnel) . √Čvalu√©¬†√†¬†6.

        Une possibilité est de coder sur les bits de poids faible. Par exemple tu dit qu'une valeur paire vaut 0 et une impaire vaut 1, tu modifies le signal en conséquence, et ça se verra très peu. Il y a une console de jeu "imaginaire" qui fait ça: les données du jeu sont cachées dans une image png en utilisant ce genre de technique.

        Un LUG en Lorraine : https://enunclic-cappel.fr

        • [^] # Re: Bravo

          Post√©¬†par¬† . √Čvalu√©¬†√†¬†3.

          Par exemple tu dit qu'une valeur paire vaut 0 et une impaire vaut 1, tu modifies le signal en conséquence, et ça se verra très peu.

          En terme audio je pense que c'est même parfaitement inaudible, le DAC va shunter tout ça.

          En terme de cryptanalyse, j'imagine que ça s'attaque par une analyse fréquentielle.

          https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

          • [^] # Re: Bravo

            Post√©¬†par¬† . √Čvalu√©¬†√†¬†1.

            Si tu cryptes d'abord ton texte avec, par exemple, un système de clés OpenPGP, une attaque n'a que de très faibles chances de réussir. On pourra voir qu'il y a quelque chose, mais impossible de savoir quoi sans la bonne clé.

            √Čvidemment, ce n'est pertinent que dans le cas d'un √©change de fichiers. Pour comme je l'ai cit√©, faire communiquer des machines (micro-carte, nano-ordinateurs¬†?) entre elles par le port audio, le script original suffit.

            Sinon, idée à creuser.

            Il y a 10 sortes de gens dans le monde ‚Äď ceux qui comprennent le ternaire, ceux qui ne le comprennent pas et ceux qui le confondent avec le binaire.

            • [^] # Re: Bravo

              Post√©¬†par¬† . √Čvalu√©¬†√†¬†2.

              Si tu cryptes d'abord ton texte avec, par exemple, un système de clés OpenPGP, une attaque n'a que de très faibles chances de réussir. On pourra voir qu'il y a quelque chose, mais impossible de savoir quoi sans la bonne clé.

              Je l'avais pas vu comme √ßa, mais c'est vrai qu'un chiffrement a pour objectif de prendre une entr√©e et de le transformer en une suite d'octets al√©atoire. Donc √ßa marcherait. Bon les cas d'usage o√Ļ on craint un percement d'OpenPGP sont relativement restreints (les √©tats et les plus grandes entreprises‚ÄĮ?).

              √Čvidemment, ce n'est pertinent que dans le cas d'un √©change de fichiers. Pour comme je l'ai cit√©, faire communiquer des machines (micro-carte, nano-ordinateurs¬†?) entre elles par le port audio, le script original suffit.

              À essayer mais je serait pas surpris qu'il faille une couche de code cyclique redondant pour palier à ce que le DAC, l'haut-parleur, le micro et le second DAC vont faire.

              Il me semble que google se sert de ce genre de méthodes pour les chromecasts et il le fait en restant dans des longueurs d'onde inaudibles.

              https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # Que fait la police ?

    Post√©¬†par¬† . √Čvalu√©¬†√†¬†5.

    Ton programme manque d'un Shebang !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.