Quiet for Android – TCP over sound
github.com
github.com
[0]: https://github.com/fulldecent/system-bus-radio
Judging by the fact that this was in my GitHub stars list from about a year ago, it looks like I was considering transitioning to something more open. With the right encryption and error correction mechanisms I think this type of technology could be really useful for short-range home iot communication.
Mh, looks like they're still around: https://www.chirp.io/
I really like the concept, would be really nice to have a functional app one day.
I can imagine your house chirping and tweeting about, when suddenly you wake from a deep sleep saying "what was that!" when some unusual pattern of sound happens.
The pattern matching and decoding portions of our brain never, ever, stop their efforts and are wired deeply in to the survival mechanisms we have.
Intriguingly, on a single night I experienced some sort of hypnogogic auditory hallucination that caused the sound to lose all familiarity. Instead, I perceived the sound of a male singer arpeggiating rapidly. I found it highly disturbing.
fwiw, the only thing that works well for me is masking any other sounds with a mix of grey and brown noise on top. i use 'white noise app' to achieve this, and it helps me get to sleep, masking out many other ambient disturbances (road/car noises, mostly).
Smoothly running stream? Everything is green. Rapids? Yellow-status; something needs looking into. Waterfall? Something's gone terribly awry.
Happily chirping birds? Successful health checkins. Monkeys screeching? Unhealthy result. Jaguar growl? Datacenter is on fire.
Wow! Do you have a write up, or code? I tried to do the same [1], but got stuck on the error correction [2]. I'd love to get closure.
1. https://github.com/moreati/chirppy 2. https://math.stackexchange.com/questions/663643/discover-par...
There's a live JS demo of this you can try for yourself at https://quiet.github.io/quiet-js which demonstrates the audible and ultrasonic modes.
The JS version is compatible with the Android version. There's also iOS ( https://github.com/quiet/QuietModemKit ) and C ( https://github.com/quiet/quiet ) which interop as well.
The throughput you can get changes depending on conditions. Across a cable, you can achieve about 64kbps. Across a short air gap, about 3-4 kbps. Across a room, you can maintain 5 bps or so. There's no capacity negotiation/detection, instead you preconfigure using a modem profile.
A good demonstration of Quiet's flexibility can be seen here https://quiet.github.io/quiet-profile-lab
I'm just speculating, but I don't remember the last time I saw a non-green exit sign. I think I've seen them red but very seldomly.
Could that be something preveting such innovations?
I do agree however that it would probably be cool. Sometime ago I got a lightpack (I think it was called?) from a kickstart project, that had a similar effect but for your tv of computer monitor and it looked great.
In North America?
At least here in Canada, I see almost only red exit signs like this: http://www.mulelighting.com/product/E-StarSeries.jpg
Only in new construction have I started seeing these green signs: https://lerablog.org/wp-content/uploads/2013/05/emergency-ex...
Now that I think about it, I do have seen red ones in Canada and the US.
In any case, it seems that it's a color chosen to comply with some law, instead of just an arbitrary choice. In that sense I'm not sure if regulations would let movie theaters (or other businesses) change the color.
Ripple: Communicating through Physical Vibration
https://www.usenix.org/node/188984
This paper investigates the possibility of communicating through vibrations. By modulating the vibration motors available in all mobile phones, and decoding them through accelerometers, we aim to communicate small packets of information. [...] We develop Ripple, a system that achieves up to 200 bits/s of secure transmission using off-the-shelf vibration motor chips, and 80 bits/s on Android smartphones
Additionally, as a client already a smartphone is suitable. This can be helpful in weird situations (think of non-working network).
I won't (knowingly) use ultrasonic audio systems until I see some research on this topic.
Listening to white noise isn't painful.
Printer: "Printer here, my pubkey is A"
Attacker (races phone): "Alright bro, I got it"
Attacker: "Printer here, my pubkey is B"
Phone: "Alright bro, I got it"
Phone: "Here is the WiFi password, encrypted with B"
Attacker: "Thanks!"
This example is pretty simplistic, but the idea still works even if there is some form of authentication (e.g., challenge-response).
The way around this is to pre-share some sort of info to verify the authenticity of any new incoming key.
For example, the user downloads a printer app on their phone that contains a master pubkey. On the other side, the printer would have a device pubkey signed with the master private key. When the phone receives a new printer message, it first veriffies the key signature to ensure that it actually came from a legitimate printer.
If you can't get some sort of key onto the phone, your best bet is to perform key exchange out of band. One common technique for phones is NFC: it requires proximity, making the attack above difficult to execute.
To further increase security, the certificate (signed pubkey) presented should also contain some unique per-device identifier (serial number or some PIN code or something). Otherwise attacker could possibly extract keys from a similar device to conduct the attack.
I have a question. Is this AppStore-safe? (As in "Is there a chance Apple or Google may reject the app because it includes this feature?")