1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
6 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
7 <meta name="keywords" content="SMS, SaveMySugar, morse code, phone ring, modem" />
8 <meta name="copyright" content="Copyright 2015 Antonio Ospite, some rights reserved" />
9 <meta name="description" content="SaveMySugar, Exchange messages using phone rings" />
10 <meta name="author" content="Antonio Ospite" />
11 <meta name="language" content="en" />
12 <meta name="robots" content="noindex, nofollow" />
14 <title>SMS: Save My Sugar</title>
15 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
16 <link rel="stylesheet" type="text/css" href="css/style.css" media="screen" />
17 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
21 <div id="header" class="block">
22 <a id="logo" href="/" title="Save My Sugar"><img src="images/logo.png" alt="Save My Suger logo" /></a>
24 <h1><a href="/">Save My Sugar</a></h1>
26 <p>So you've always thought <acronym title="Short Message Service">SMS</acronym> meant <a title="Wikipedia: SMS" href="http://en.wikipedia.org/wiki/SMS">Short Message Service</a>, haven't you?<br />
27 From now on it means <strong>Save My Sugar</strong>!</p>
30 <div id="main-content">
31 <div id="what" class="block">
34 <p><strong>SaveMySugar</strong> is an experiment about sending short messages using the <strong>phone ring</strong> as a <a href="http://en.wikipedia.org/wiki/Covert_channel" title="Wikipedia: Covert Channel">covert channel</a>.</p>
36 <p>Another classic example of using a covert channel is <a href="http://en.wikipedia.org/wiki/Port_knocking" title="Wikipedia: Port Knocking">Port knocking</a>.</p>
38 <p><strong>SaveMySugar</strong> uses the distance between phone calls to represent <a href="http://en.wikipedia.org/wiki/Morse_code" title="Wikipedia: Morse code">Morse code</a> symbols.</p>
40 <p>The idea of using phone rings to send information is not new, it was already used by the very cool <a href="http://freshmeat.net/projects/xringd/" title="Freshmeat: Xringd">xringd</a> project by Angelo Haritsis.</p>
42 <p>Someone else also proposed it on <a href="http://www.halfbakery.com/idea/Sending_20SMS_20for_20FREE_20using_20MORSE" title="Half Bakery - Sending SMS for FREE using MORSE">Half Bakery</a>.</p>
44 <p>However there seems to be no implementation of the technique for exchanging text messages, and that's what <strong>SaveMySugar</strong> is about.</p>
46 <p>The name <strong>SaveMySugar</strong> was born as a take on the price of Short Message Service which is quite high, see <a href="http://web.archive.org/web/20121030162247/http://gthing.net/the-true-price-of-sms-messages/" title="Wayback Machine: The True Price of SMS Messages">The True Price of SMS Messages</a>, and it is also a reference to the distress signal <em>Save Our Soul</em> (SOS) used in Morse communications.</p>
49 <div id="why" class="block">
52 <p>There are several reasons why you may want to try <strong>SaveMySugar</strong>:</p>
55 <li>Just because you can, and it is fun.</li>
57 <li>It is a possible way to send a short message for free.</li>
59 <li>It's beautifully slow.</li>
64 <p><strong>SaveMySugar</strong> has some limitations:</p>
67 <li>It's awfully slow.</li>
69 <li>Phone rings keep the line busy.</li>
71 <li>On mobile phones a ring uses a lot of battery, and battery is a precious resource.</li>
73 <li>On mobile phones a lot of fake calls will pollute the calls log.</li>
75 <li>On mobile phones a malicious recipient can make you pay at every ring!</li>
77 <li>If everyone used it, it might end up like <a href="https://youtu.be/doAnB5_eDnw?t=10m11s" title="YouTube: The Lawnmower Man - Ending">this</a>.</li>
80 <p>However it is still fun nonetheless.</p>
83 <div id="where" class="block">
86 <p>You can find a prototype implementation written in python called <a href="http://git.ao2.it/SaveMySugar/python3-savemysugar.git/" title="git.ao2.it - python3-savemysugar">python3-savemysugar</a>.</p>
88 <p>There is also a prototype Android app <a href="files/SaveMySugar-0.1-debug.apk" title="SaveMySugar-0.1-debug.apk">SaveMySugar-0.1-debug.apk</a>, its source code is in the <a href="http://git.ao2.it/SaveMySugar/android-savemysugar.git/" title="git.ao2.it - android-savemysugar">android-savemysugar</a> repository.</p>
90 <p>Contact <a href="http://ao2.it/contact" title="Antonio Ospite: contact">Antonio Ospite</a> if you want to discuss about porting <strong>SaveMySugar</strong> to other platforms.</p>
93 <div id="who" class="block">
96 <p>From an idea by Corrado Rubera.<br />
97 <strong>SaveMySugar</strong> was realized by <a href="http://ao2.it" title="Antonio Ospite">Antonio Ospite</a>.</p>
100 <div id="how" class="block">
103 <p>This is how a message is transmitted with <strong>SaveMySugar</strong>:</p>
106 <li>The characters in the message are encoded in Morse signals.</li>
108 <li>Every symbol of each signal is mapped to a time interval.</li>
110 <li>Phone calls are distanced in time according to the intervals from above.</li>
113 <p>On the receiving side the symmetric operations are performed when phone rings are detected.</p>
115 <p>This is basically a <em>Pulse-Distance Modulation</em> (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.</p>
117 <p>See an example of the exchange of the message <code>CODEX</code>:<br />
118 <a href="images/savemysugar_plot_codex.png" title="SaveMySugar exchanging the message 'CODEX'"><img src="images/savemysugar_plot_codex.png" alt="SaveMySugar exchanging the message 'CODEX'" /></a></p>
120 <p>See an example of the exchange of the message <code>Save My Sugar</code>:<br />
121 <a href="images/savemysugar_plot_savemysugar.png" title="SaveMySugar exchanging the message 'SaveMySugar'"><img src="images/savemysugar_plot_savemysugar.png" alt="SaveMySugar exchanging the message 'Save My Sugar'" /></a></p>
123 <p>Morse code has been chosen because it is well known and serves very well the purpose of showing the technique.</p>
125 <p>In order for the exchange of the message to work symbols must be differentiated, so they must have different distances.</p>
127 <p>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.</p>
129 <p>See an example of best-case and worst-case symbol distances:<br />
130 <a href="images/symbols_distances.png" title="SaveMySugar symbols distances"><img src="images/symbols_distances.png" alt="SaveMySugar symbols distances" /></a></p>
135 <div id="footer" class="block">
136 <p style="margin: 0pt; font-size: small; line-height: 1.2em;"><a title="Creative Commons: Attribution Share Alike" href="http://creativecommons.org/licenses/by-nc-sa/2.5/it/"><img src="images/CC_by-nc-sa_2.5_it_88x31.png" style="border-width: 0pt; float: left; margin-right: 0.5em;" alt="Creative Commons License" /></a> Unless where stated otherwise,<br /> this work is published under a <a title="Creative Commons: Attribution Share Alike" href="http://creativecommons.org/licenses/by-nc-sa/2.5/it/">Creative Commons License</a>.</p>