Never heard of it, but looks really cool. Too bad there isn't a web/WASM build of Minimodem so that it'd run in any web browser. This could be an interesting way to do data exfil. Although that has already been done covertly at ultra-sonic, or near ultra sonic, frequencies that real people can't actually hear.
152 points | by marcodiego | 55 days ago | 38 comments
egypturnash 39 days ago [-]
“N.B. This was only ever intended as a gimmick and a proof of concept - not something that I would actually use at work. Please keep this in mind before arguing why I should be fired over this in various online comment sections.” - from the end of the article
ale42 39 days ago [-]
Why not just reusing an existing modulation? There are dozens out there, from fast ones to super robust ones like JT65 (ridiculous baudrate, but you can basically decode it even when the sounds can't be heard any more)
rkagerer 39 days ago [-]
I used amodem with high-end audio cables in production a long time ago - can't get into details:
- "aww, I wonder what the details are... but that's a story in itself, alright then"
- "wait that says in production. this is actually keeping something standing up. Oh. I wonder if the recipient actually realizes."
So, the one question I probably *can* ask: what effective data rate did you manage?
rkagerer 38 days ago [-]
Very low. With good SNR you can get 48.0 kb/s. It basically just passed small text payloads across an 'air gap', that were bigger than you'd want to be typing by hand. They were encrypted in transit but inspectable on both sides.
Shielded cable was long enough to reach a separate isolated room, and easily unplugged by an operator when not in use.
USB wasn't considered secure enough, other forms of sneakernet were avoided for *reasons*. Alternative options could have been used but this was simple, auditable and (comparatively) easy.
Stakeholders fully aware of how it works and the weirdness factor. Not many users, and no scale involved. It just met a very niche use case nicely :-).
Hope that didn't dispel the magic for you.
exikyut 37 days ago [-]
Huh, 48kbps over maybe ~20m (65ft). *Files away* not bad.
Thanks for the extra details, that's really cool :)
jerf 39 days ago [-]
If you're on debian/ubuntu, you should be able to install "minimodem", which allows for this sort of thing with the usual wide variety of command-line parameters.
echo "hello hacker news" | minimodem --tx 110
yields a nice classical "telemetry" sound.
unholiness 39 days ago [-]
A project I worked on in college was a "steganographic modem", transferring data in the audio spectrum by lacing a song being played with a signal, such that the signal in each frequency band would always be below the threshold that the human ear could tell the difference.
Even in a controlled setting the bitrate we achieved was very low, but for most songs it was enough to encode the lyrics. Seems quite useful until you remember both ends already need the original audio file in its entirety!
itintheory 39 days ago [-]
> Seems quite useful until you remember both ends already need the original audio file in its entirety!
That still seems quite useful. Steganography aims to obfuscate the presence of communication, not encrypt the data. You'd embed your ciphertext via the audio steganography. I can imagine this used for a dead drop by placing the encoded audio in a jukebox, or potentially even playing it over the radio/muzak system, if that isn't too lossy / the algorithm has enough error correction.
exikyut 39 days ago [-]
Very cool. I wonder if the source to this is still floating around anywhere?
I've used fldigi between two computers in the same room. It's also made for amateur radio, but when we do training, we just get operators to setup their laptop in the same room. If they have external headphone, that works best since you can basically lay then mic to speaker. But we'll often take turns having one blast out a message over speakers and everyone else receive it.
I remember reading a paper where the author had a proof-of-concept for sending data over audio using an algorithm that created pleasing sounds in the normal hearing range.
Does anyone know what I'm talking about? Some of the demos sounded like R2D2 but also carried data. I can't find it using a Google search.
ggerganov 39 days ago [-]
I don't know the paper, but I'm actually working on an Arduino library for data over sound and I think it kind of sounds similar to R2D2. Here is a 1 min demo if you are interested:
I think the researcher I had in mind was funded by Microsoft, or worked for Microsoft? They sounded like little robotic bird calls or something.
It's like Chirp.io took a single example from that paper and used it exclusively.
39 days ago [-]
3-cheese-sundae 39 days ago [-]
This is almost certainly not the specific algorithm you're referring to, but Olivia MFSK sounds pleasing and can send 150 char/minute with a 7-bit ASCII data set: https://www.youtube.com/watch?v=Yz7a--ePSNs
good ol fsk. i've built rudimentary time-stamping schemes in this way in past. basic signal processing can be fun!
booleanbetrayal 39 days ago [-]
What a cool project! Hoping to see a full web suite with something like "ProTerm" integration someday.
ranger207 39 days ago [-]
Putting an increasing series of ASCII characters into the encoder results in some surprisingly musical tones
PaulHoule 39 days ago [-]
For a long time I've wondered if you could make a synthetic aperture sonar with PC or phone parts.
yourapostasy 39 days ago [-]
Your comment prompted me to wonder what kind of other kinds of shenanigans we could get up to if we combined "Acoustic beamsteering with speakers and Arduino" [1] with an array of normal sonar transducers.
I skimmed and couldn't find. Is the baud rate mentioned?
chmorgan 39 days ago [-]
Was excited to try it out but no audio here from the encoder, Safari on OSX. Plugging some text in, hitting encode, maybe I'm doing it incorrectly?
tristor 39 days ago [-]
It worked for me on OSX with both Firefox and Safari, although I did need to whitelist Javascript on Firefox in NoScript for the site. The volume level was pretty low, but was able to hear it with headphones.
xchip 39 days ago [-]
Why are you using the fft? I'd be cheaper to use a Goertzel filter. You can check one of the branches of the minimodem to see how they work
VikingCoder 39 days ago [-]
I used to plug my TRS-80 MC-12 into a cassette recorder to save and load programs. I wonder if an online TRS-80 emulator can still do that trick...?
sitkack 38 days ago [-]
My new magnum opus
in ipython
a = "00FF AA 44 CC" * 100
!echo "$a" | pbcopy
paste into encode widget
Layer and phase shift to taste.
1-6 39 days ago [-]
Is this like a QR code but using audio instead?
strbean 39 days ago [-]
I love this! I've thought about doing it myself in response to the lack of data channels in WebRTC.
ec109685 39 days ago [-]
How close is this to something that would work with an off the shelf modem?
Literally what Minimodem was created for :)
http://www.whence.com/minimodem/
Minimodem – general-purpose software audio FSK modem
https://news.ycombinator.com/item?id=30888879
152 points | by marcodiego | 55 days ago | 38 comments
https://news.ycombinator.com/item?id=17333257
- "oh, another audio modem library to file away"
- "aww, I wonder what the details are... but that's a story in itself, alright then"
- "wait that says in production. this is actually keeping something standing up. Oh. I wonder if the recipient actually realizes."
So, the one question I probably *can* ask: what effective data rate did you manage?
Shielded cable was long enough to reach a separate isolated room, and easily unplugged by an operator when not in use.
USB wasn't considered secure enough, other forms of sneakernet were avoided for *reasons*. Alternative options could have been used but this was simple, auditable and (comparatively) easy.
Stakeholders fully aware of how it works and the weirdness factor. Not many users, and no scale involved. It just met a very niche use case nicely :-).
Hope that didn't dispel the magic for you.
Thanks for the extra details, that's really cool :)
Even in a controlled setting the bitrate we achieved was very low, but for most songs it was enough to encode the lyrics. Seems quite useful until you remember both ends already need the original audio file in its entirety!
That still seems quite useful. Steganography aims to obfuscate the presence of communication, not encrypt the data. You'd embed your ciphertext via the audio steganography. I can imagine this used for a dead drop by placing the encoded audio in a jukebox, or potentially even playing it over the radio/muzak system, if that isn't too lossy / the algorithm has enough error correction.
https://sourceforge.net/projects/fldigi/
Does anyone know what I'm talking about? Some of the demos sounded like R2D2 but also carried data. I can't find it using a Google search.
https://www.youtube.com/watch?v=qbzKo3zbQcI
I think the researcher I had in mind was funded by Microsoft, or worked for Microsoft? They sounded like little robotic bird calls or something.
It's like Chirp.io took a single example from that paper and used it exclusively.
https://quiet.github.io/quiet-js
Created a new issue: https://github.com/martme/webaudio-modem/issues/8
Using the Web Audio API to Make a Modem - https://news.ycombinator.com/item?id=15471723 - Oct 2017 (63 comments)
[1] https://www.youtube.com/watch?v=_CSbL-PUwbM
in ipython
paste into encode widgetLayer and phase shift to taste.