What
SaveMySugar is an experiment about sending short messages using the phone ring as a covert channel.
Another classic example of using a covert channel is Port knocking.
SaveMySugar uses the distance between phone calls to represent Morse code symbols.
The idea of using phone rings to send information is not new, it was already used by the very cool xringd project by Angelo Haritsis.
Someone else also proposed it on Half Bakery.
However there seems to be no implementation of the technique for exchanging text messaging, and that's what SaveMySugar is about.
The name SaveMySugar was born as a take on the price of the old conventional Texting service which is quite high, see The True Price of SMS Messages, and it is also a reference to the distress signal Save Our Soul (SOS) used in Morse communications.
Why
There are several reasons why you may want to try SaveMySugar:
- Just because you can, and it is fun.
- It is a possible way to send a short message for free.
- It's beautifully slow.
Why not
SaveMySugar has some limitations:
- It's awfully slow.
- Phone rings keep the line busy.
- On mobile phones a ring uses a lot of battery, and battery is a precious resource.
- On mobile phones a lot of fake calls will pollute you calls log.
- On mobile phones a malicious recipient can make you pay at every ring!
- If everyone used it, it might end up like this.
However it is still fun nonetheless.
Where
You can find a prototype implementation written in python called python3-savemysugar.
There is also a prototype Android app SaveMySugar-0.1-debug.apk, its souce code is in the android-savemysugar repository.
Contact Antonio Ospite if you want to discuss about porting SaveMySugar to other platforms.
Who
From an idea by Corrado Rubera.
SaveMySugar was realized by Antonio Ospite.
How
This is how a message is transmitted with SaveMySugar:
- The characters in the message are encoded in Morse signals.
- Every symbol of each signal is mapped to a time interval.
- Phone calls are distanced in time according to the intervals from above.
On the receiving side the symmetric operations are performed when phone rings are detected.
This is basically a Pulse-Distance Modulation (PDM), this scheme has been chosen because it's easy to detect when a phone starts ringing, but it's not always easy to detect for how log it rings, or how many rings there are in a single call.
See an example of the exchange of the message CODEX
:
See an example of the exchange of the message Save My Sugar
:
Morse code has been chosen because it is well known and serves very well the purpose of showing the technique.
In order for the exchange of the message to work symbols must be differentiated, so they must have different distances.
However the time between when the transmitter places a call and when the receiver gets the correspondent ring is not constant, so this “noise” must be taken into account by the receiver. This noise can have a quite high variability but can be usually upper and lower bounded, so a reasonably robust communication is still possible. Basically the noise is used to characterize the symbol distances.
See an example of best-case and worst-case symbol distances: