Tuesday, January 9, 2018

Phone Monitor

I had made a basic phone monitoring program using B4A some years back just out of curiosity. I had a fairly good grasp of malware programming in Windows, so I had thought of giving my mobile phone's OS a try with it. Basic felt easy since it was the language I was most accustomed to using then, and it was Basic, for Android. The mobile OS itself was still not very mature so a lot more loopholes than now and certain things were more easily doable, not to mention the availability of third-party libraries for B4A. Anyway, I never released it; must be sitting around somewhere on my old desktop's hard disk.
The above program is not what this post is about though. This blog has seen me transform from a quick and dirty vb6 - read procedural - programmer to a relatively organized, more modular C# - say OOP - coder. I write OO programs now. I taught myself Java too, not too different from C#. So, about two weeks ago, I made up my mind about giving a new Android project a go, this time not in B4A, but in Java, the mainstream language that most Android apps are written in (that may change to Kotlin in the future, who knows), and in determining what, I figured why not make a better, updated, extended version of something cool I'd created before. The result is PhoneMonitor.
The old program was called SMSLogger because I'd built it up from exactly that, a program that would upload the target Android device's SMS messages to a specified FTP server. In its final form, it was capable of doing more than that of course, like recording phone conversations, listening for SMS based commands to do some fun stuff like vibrating the phone or more useful stuff like retrieving the phone's GPS coordinates, calling a specified number, messaging a specified number etc. So, this PhoneMonitor follows a similar development path but is more comprehensive and geared towards web panel based command and control rather than SMS'es (one of the reasons being the new security features concerning SMS write/broadcast permissions in Android KitKat and above. Life used to be easier back in the Gingerbread days.) The major functionalities include retrieving call logs, contacts, sms messages, device location (this too is harder than used to be), back and front camera pics, command to call, send an SMS, vibrate, enable Wifi - oh, and of course, it records phone conversations and uploads them to the specified FTP server.
The full source code for the app and the web panel along with some screenshots is available @ github