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 messages, and that's what SaveMySugar is about.
The name SaveMySugar was born as a take on the price of Short Message 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.
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.
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 the 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.
You can find a prototype implementation written in python called python3-savemysugar.
Contact Antonio Ospite if you want to discuss about porting SaveMySugar to other platforms.
From an idea by Corrado Rubera.
SaveMySugar was realized by Antonio Ospite.
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 long it rings, or how many rings there are in a single call.
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.