• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Audio Steganography, Faster and Friendlier: My Dive into Spectrogram

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
A few days ago, I stumbled across an interesting blog post by

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

about hiding images in sound—more specifically, encoding them into the spectrogram of an audio file. It reminded me of old-school tech like dial-up modems and the ZX Spectrum, but with a modern twist.

Naturally, I had to try it.

Getting Started... and Stuck


Solusipse provides a Python script, spectrology.py, that takes an image and converts it into an audio waveform whose spectrogram visually resembles the image. I cloned the repo, followed the README, and ran the script, hoping for a cool output.

But things weren’t so smooth. The script hit an error out of the gate. Can't blame them, the code was over 10 years old ?.

After a not-so-long debugging session, I got it working. It finally produced an audio file containing a hidden image. Success—sort of. The problem was speed. For a basic test image, the script took around 200 seconds to finish. That’s a long wait when you're used to near-instant everything.

Making It Fast


I noticed that the script processed image columns sequentially, one after another. This was a perfect candidate for parallel processing, so I refactored the code using Python ThreadPoolExecutor.

After that, the same task took just 12 seconds.

To make it even more convenient, I bundled it into a standalone Linux executable using PyInstaller. Now I can add and run it directly from my KDE desktop menu on Arch without worrying about Python environments or dependencies.

All of this is available here:
?

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



A Bit of Experimenting


Once the tooling was set, I spent some time exploring the possibilities—just like in the original blog. I played around with:


  • Different frequency bands (e.g., 13 kHz to 19 kHz)


  • Tweaking pixels-per-second and sampling rates


  • Mixing the output into music tracks using Audacity


  • Adjusting gain levels to hide the encoded message more subtly

One of the more effective tricks was splitting stereo channels—putting the music in the left and the hidden image in the right. That way, regular listening doesn't reveal anything unusual, but the image is still recoverable from the spectrogram.
(P.S. I'm not going into detail, as I feel the original post is plenty in itself, and I think curious readers will certainly go there ?)

Here’s what the project structure looks like:


audioStegano
├── exec/ # Executable + build requirements
├── extra/ # Sample input and output files
├── spectrology.py # The main encoder script
├── README.md

And yes, there's full support for rebuilding the executable with just a couple of commands. The README has all the details.

Closing Thoughts


This was a fun and insightful mini-project. It began with a blog post and ended with a faster, cleaner, and more usable tool for audio steganography. If you’re curious about signal processing, creative encoding, or just enjoy playing with unconventional media, this is definitely worth exploring.

The original post is a great read, and if you want to try it yourself, you can grab the tool here:
?

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Or the original sequential processing code by SOLUSIPSE:
?

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.




Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу