Using binary SMS (data messages) as transport
Created by: smarek
Most of the operators data-retention laws / use-cases do contain only standard text messaging, calls (or just metadata) and telemetrics.
What I propose is providing alternative-data-route using android.intent.action.DATA_SMS_RECEIVED
, using specific application port and let user (manually / autodetect) to change transport layer. This will allow users to potentially avoid operator monitoring, mass text messaging scanning and can be used for both encrypted and non-encrypted messages (however requires Silence of specific version, this proposal is not backward compatible)
What do you think about such? I am probably able to provide full PR if there will be interest.
-- Implementation technical details
AndroidManifest.xml example (port 1337 as example, if not specified will handle data-sms coming to all ports, port fuzzing/randomization can be security feature)
<receiver
android:name=".DataSmsReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data
android:host="*"
android:port="1337"
android:scheme="sms" />
</intent-filter>
</receiver>
this does not require Silence to use any special / additional permission, and received SmsMessage can be used as usual.
PDU can be processed via standard Android SmsMessage / SmsManager APIs, or standalone parsing is possible through RestComm/jSS7 (SmsTpduImpl) implementation (will provide examples if you need some)