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:

Why not

SaveMySugar has some limitations:

However it is still fun nonetheless.


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 source code is in the android-savemysugar repository.

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:

  1. The characters in the message are encoded in Morse signals.
  2. Every symbol of each signal is mapped to a time interval.
  3. 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.

See an example of the exchange of the message CODEX:
SaveMySugar exchanging the message 'CODEX'

See an example of the exchange of the message Save My Sugar:
SaveMySugar exchanging 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:
SaveMySugar symbols distances