[APP][1.5+] Webkey (ROOT REQUIRED), remote control your phone

Search This thread

morapeter

Senior Member
Aug 8, 2010
70
57
Using this program you can control your phone from any browser. It requires a rooted Android phone.

* You can click and type on the phone (we inject touch events to the touch device and create a new HID for typing),
* get screenshots (copied from the framebuffer device) in jpeg and png, record images in sequence
* start phone calls (it uses '/bin/system/service' from android)
* open webpages on the phone (it uses intents)
* browse, download from, upload to the SD card (it uses AjaXplorer so you can rename files, listen mp3, etc.)
* browse and read every files on phone
* adjust LCD backlight
* get the phone's location (GPS and network, it uses our JAVA code and shows the result on GoogeMaps)
* exporting contacts, messages, call list in txt, csv, xml,
* chat with phone and other users
* terminal emulator with Shell In A Box
* user rights management, log
* works on wifi, 3g
* DynDNS support (it's a dinamic DNS service, after you register at dyndns.org, your phone will have an address like: myphone.homeip.net, this only works if you can reach your phone using its IP address)
* if your 3g internet provider blocks the incoming connection to your phone, then you cannot connect using its IP address or DynDNS, but you can connect through our server (the phone starts the connection like GoogleTalk does)
* user admin has a random password each time, but you can add new users. The connection is not encrypted, we are planning to use https instead of http
* opensource (it is licensed under General Public License)
* most of the functions uses only C++ part, which has very low memory footprint and almost no CPU use in idle.
* Homepage: androidwebkey.com

Feel free to ask for features and send bugs.

Market Link
 
Last edited by a moderator:

Yzord

Senior Member
Dec 3, 2005
300
3
Sorry for my attitude. It is not personal, but these kind of apps give me the creeps...
 

morapeter

Senior Member
Aug 8, 2010
70
57
Pretty slow but it works.

If there is a demand for this, we will hire a server with a faster connection. It seems like all the 3G internet providers blocks the incoming connection to the phone in USA, so we have to redirect the packets through our server. In Europe the situation is better, and we can connect to the phone directly.

Webkey listens on all interfaces, so if you manage to set up a VPN, it will work.
 

khaytsus

Senior Member
Apr 8, 2008
7,259
1,176
Central Kentucky
If there is a demand for this, we will hire a server with a faster connection. It seems like all the 3G internet providers blocks the incoming connection to the phone in USA, so we have to redirect the packets through our server. In Europe the situation is better, and we can connect to the phone directly.

Webkey listens on all interfaces, so if you manage to set up a VPN, it will work.

I know for AT&T unless you have the laptop connect type package, ie: APN is isp.cingular, this is true. So nearly all AT&T mobile phones will have this limitation.

I like that you've worked around it using this method, I think I'll have to give this a try myself.

Also sounds like something a business might be interested in having, but their own server.. Is the communications secure between the phone and server?
 

morapeter

Senior Member
Aug 8, 2010
70
57
I know for AT&T unless you have the laptop connect type package, ie: APN is isp.cingular, this is true. So nearly all AT&T mobile phones will have this limitation.

I like that you've worked around it using this method, I think I'll have to give this a try myself.

Also sounds like something a business might be interested in having, but their own server.. Is the communications secure between the phone and server?

There is nothing new about this topic. Virtual Private Network is made for this, it's secure and everyone can have an own server (although it's not so easy to set it up, but most of the firmwares support it on the phone). There are several other solutions, for example ssh reverse port forwarding (-R option), or socat can create a tunnel device as well. None of these solutions were good for us, because I didn't want to mess up anything on the phone like creating new network interface, or maintain a ssh tunnel.

Our solution is simple. The phone creates a TCP connection to the server and listen on that. It reopens it when it closed. Whenever a user connects to our site from a browser, the server searches for the appropriate socket, and connects them.

It's not secure yet, but I'll finish https when I have time. After that the connection will be secure between the browser and the phone (which is better than securing the connection between the phone and the server).
 

wvufan

Senior Member
Mar 13, 2006
60
13
I ran this before on 2.1, but now Webkey won't run on my Evo running Froyo. It just hangs with black screen on start. I am running the rooted stock 2.2 ROM and other apps requiring root run fine. Any ideas?

Also, I'm a developer and want to add an option to select an http port to listen on. I'm pretty sure http will work fine over another port, like 8080 (over Sprint without using your proxy server), and I wanted to mod the code (and submit to you) if it works. Is it obvious how to build the full solution from the C and Java sources? Just Java I've done, but not built an app requiring the NDK, yet.

Thanks!
 

heilpern

Member
Aug 11, 2010
13
1
So if I understand this correctly, this relies on a server at some fixed location, as well as an apk on the phone.

Is the server source available so that I could modify the APK to point to my own server? It seems that the sources you provide are only to rebuild the APK, and that a user would have to trust your server.
 

morapeter

Senior Member
Aug 8, 2010
70
57
I ran this before on 2.1, but now Webkey won't run on my Evo running Froyo. It just hangs with black screen on start. I am running the rooted stock 2.2 ROM and other apps requiring root run fine. Any ideas?

Also, I'm a developer and want to add an option to select an http port to listen on. I'm pretty sure http will work fine over another port, like 8080 (over Sprint without using your proxy server), and I wanted to mod the code (and submit to you) if it works. Is it obvious how to build the full solution from the C and Java sources? Just Java I've done, but not built an app requiring the NDK, yet.

Thanks!

At start the Java code tests whether it needs to extract files. I assume that something changed on Froyo. Do you have a directory /data/data/com.webkey after install? Or does it put it on the SD card?

There is a function for changing port. You can do it from the Java gui.

For the compiling (under linux):
I used "Customized Android NDK r3 with enabled support of C++ exceptions, RTTI and Standard C++ Library", see
http://www.crystax.net/android/ndk-r3.php
and downloaded the precompiled binaries. Please find a build.sh in c.zip (I uploaded it right now). It uses my directory structure, but I hope you can find out how it works. There are some bash tricks with grep and sed to generate the menu in every html. The README.txt might help as well. Feel free to ask about anything.
 

morapeter

Senior Member
Aug 8, 2010
70
57
So if I understand this correctly, this relies on a server at some fixed location, as well as an apk on the phone.

Is the server source available so that I could modify the APK to point to my own server? It seems that the sources you provide are only to rebuild the APK, and that a user would have to trust your server.

In some countries you don't have to use the server (the internet providers don't block), but yes, you are right. The server code is a python script and I need to check it (again) for security leaks before opening it and ask permission from the other developer. I would say this will happen this weekend. (However, the protocol is simple. It couldn't be simpler.)

There are some other solutions for this problem:
- If you set up a Virtual Private Network on the phone (I never did that, but reverse ssh port forwarding worked for me), then you don't have to use our server.
- I hope in the next release there will be https, which encodes the data between the phone and the browser (after that you if you check the certificate then you can trust to any server). I try to finish it in a week.


I believe the publication of a program like this needs extra care because of its reputation. Before https there won't be a Market version, where you can change the server address (because of security reason). Of course, if you would like it, I'm happy to send you an apk where you can change the server address, or you can compile it for yourself.
 

Aqua1ung

Senior Member
Jun 17, 2010
683
54
Alright, so where can I download this from please? The hompage link is not working.
 

Aqua1ung

Senior Member
Jun 17, 2010
683
54
Okay, now it works. Thanks. All I gotta do now is root my phone :)

As for suggestions, how about taking pictures remotely using the FFC and/or BFC? Just in case your phone gets stolen or lost...
 

morapeter

Senior Member
Aug 8, 2010
70
57
Okay, now it works. Thanks. All I gotta do now is root my phone :)

As for suggestions, how about taking pictures remotely using the FFC and/or BFC? Just in case your phone gets stolen or lost...

Nice :) Now you have to start the camera program and watch the screenshot :). I'll check what can I do with the camera device from C++.
 

stickerbob

Senior Member
Feb 3, 2010
194
21
KY
This is a great app. I love how you can upload and download from your sd card! The remote control is a little slow over 3g, but very promising. Thanks
 

morapeter

Senior Member
Aug 8, 2010
70
57
This is a great app. I love how you can upload and download from your sd card! The remote control is a little slow over 3g, but very promising. Thanks

Well... There is an option in AjaXplorer, which downloads several files in a zip archive (even directories), but I was lazy, I didn't implement it in C++ (although the zip library was already there because of the png library). I don't promise to finish it in the following weeks, but I'll do it sometime.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 46
    Using this program you can control your phone from any browser. It requires a rooted Android phone.

    * You can click and type on the phone (we inject touch events to the touch device and create a new HID for typing),
    * get screenshots (copied from the framebuffer device) in jpeg and png, record images in sequence
    * start phone calls (it uses '/bin/system/service' from android)
    * open webpages on the phone (it uses intents)
    * browse, download from, upload to the SD card (it uses AjaXplorer so you can rename files, listen mp3, etc.)
    * browse and read every files on phone
    * adjust LCD backlight
    * get the phone's location (GPS and network, it uses our JAVA code and shows the result on GoogeMaps)
    * exporting contacts, messages, call list in txt, csv, xml,
    * chat with phone and other users
    * terminal emulator with Shell In A Box
    * user rights management, log
    * works on wifi, 3g
    * DynDNS support (it's a dinamic DNS service, after you register at dyndns.org, your phone will have an address like: myphone.homeip.net, this only works if you can reach your phone using its IP address)
    * if your 3g internet provider blocks the incoming connection to your phone, then you cannot connect using its IP address or DynDNS, but you can connect through our server (the phone starts the connection like GoogleTalk does)
    * user admin has a random password each time, but you can add new users. The connection is not encrypted, we are planning to use https instead of http
    * opensource (it is licensed under General Public License)
    * most of the functions uses only C++ part, which has very low memory footprint and almost no CPU use in idle.
    * Homepage: androidwebkey.com

    Feel free to ask for features and send bugs.

    Market Link
    3
    Pretty slow but it works.

    If there is a demand for this, we will hire a server with a faster connection. It seems like all the 3G internet providers blocks the incoming connection to the phone in USA, so we have to redirect the packets through our server. In Europe the situation is better, and we can connect to the phone directly.

    Webkey listens on all interfaces, so if you manage to set up a VPN, it will work.
    2
    The app is still alive. If you have any questions please contact with me. I am Webkey developer.
    2
    We had a little break (moving to a new house, got a new job), but we are back online! The plans for the future:
    - fix some serious bugs asap (screenshot problems, starting failes)
    - rent new server in the USA with fast connection
    - have some really huge plans, at the end Webkey will be a complex system

    Sorry if I haven't answered all the emails and the posts, I'll try to.
    2
    Ive had to flash my rom several times in the past day or 2 as i sorted out a few issues. So in turn everytime i have installed Webkey i have had to select a new username as the previous one is in use. Do the old usernames expire after a x amount of time or is there a way to use an exsisting one, ive had to create a new user name every reload.

    Cheers

    Here is my common answer, I have no good solution for the problem.

    "It has a security reason: the protocol is simple and someone could write a program that connects to our server pretending itself to be your phone, the next time you want to log in, the attacker would have your password (you would connect to his/her program instead of your phone). To avoid this your phone generates a random string at the first time you install Webkey, and use that secret random string to identify itself to our server. This random string is generated only from time, and it's not related to any private information such as IMEI number, it's not saved on the sdcard (where every application can read it). So at the next install you will have to use a different username, because the previous one is connected to a random string which is now unknown. Again, I'm making exceptions, write me an email."

    So if you send me those usernames, I'm happy to reset them. After
    that I suggest that you should save the file

    /data/data/com.webkey/shared_prefs/com.webkey_preferences.xml

    it contains the random string (that's important). And restore that
    file after installing the new ROM and Webkey.