Using Webkey 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)
reading and writing SMS,
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)
SSL support for direct connections (it doesn't work thought our server, we are working on it) - this product includes cryptographic software written by Eric Young (email@example.com)
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.
How can I connect to the phone? Why is everything so complicated?
Webkey opens a standard TCP socket (port 80 is for http), and listens on that port. After starting the service, your phone writes something like:
Your phone is available at: http://22.214.171.124
where in this example "126.96.36.199" is the IP address of your phone. Usually it is not so easy to remember, changes sometimes, and some 3g internet providers blocks it.
Unable to connect
If you are unable to connect to this address in your webbrowser, then your 3G internet provider blocks the incoming connections to your phone. Users from USA and UK complained about it. (If you are an expert, you can set up a VPN or an ssh reverse port forwarding. If you know how to do that, then stop reading.) However, the easiest solution is to use our server to forward the connection. Namely, your phone connects to our server (it works, because your phone starts the connection), and wait until you visit http://webkey.cc/nickname/. Then our server uses the opened connection (which was opened by the phone) to send the request. After that our server forwards every messages between your phone and your browser.
To use this, click on "Keep alive connection to webkey.cc". (If you don't use, it has minimal network traffic, only some bytes to open the connection.)
But I can connect using my IP
It should work on WiFi (then the IP address is usually something like 192.168.1.x), but then it is only accessable from the local area.
If it works on 3G, then you are lucky! It's not easy to remember the IP address, and usually it changes. You can use DynDNS to have an address like
http://yourphone.homeip.net or something like that. Webkey has an option to refresh the IP address in the DynDNS database (otherwise how could they know when it has changed). Actually it checks your IP every minute, and if it differs from the last updated one, then it send the new IP to DynDNS.
Actually, if you use our server, it will redirect your browser directly to the phone, you will see a message like Your phone has a public IP, redirecting to ... (How it works: the server tries to connect back to the phone whenever it connects from a new IP address. If it can reach the phone, then the server will remember to do so.)
Just write an email if you have any question.
Download binary and source
Webkey is available on the Market. The source code and the apk can be download here.
Unlock phone from browser by dragging the screen:
GPS and network positions:
Read and write messages:
View call list:
Export contacts, messages, call list:
Use terminal from browser:
Create new users, users' right management:
Read files on phone:
Browse, download, upload files on the SD card:
Server code for one client, how does this server works
You can use most of the functions without our html page. Webkey uses digest HTTP authentication, for example the program curl support it, and it's available for linux, Windows and Mac OS. There is no documentation about these functions (they are listed in webkey.c), but let's see some examples. The "phone's_address" can be an IP address or http://webkey.cc/nickname as well. It might happen that you have to reconnect twice. This server maintances at most 3 TCP connection with the phone, and it is had to tell which TCP flow is alive.
List the directory /system:
curl --digest http://username:password@phone's_address/run -d "ls -l -a /system/"
drwxr-xr-x 1 root root 2048 Nov 12 22:18 .
drwxr-xr-x 14 root root 0 Nov 20 14:59 ..
drwxr-xr-x 1 root root 2048 Nov 12 22:19 app
drwxr-xr-x 1 root shell 2048 Nov 13 20:20 bin
-rw-r--r-- 1 root root 2207 Nov 12 22:19 build.prop
-rw-r--r-- 1 root root 206 Aug 1 2008 build.sapphire.prop
-rw-r--r-- 1 root root 268 Aug 1 2008 build.trout.prop
drwxr-xr-x 1 root root 2048 Nov 13 00:03 etc
drwxr-xr-x 1 root root 2048 Nov 12 22:18 fonts
drwxr-xr-x 1 root root 2048 Nov 12 22:19 framework
drwxr-xr-x 1 root root 2048 Nov 12 22:19 lib
drwxr-xr-x 1 root root 2048 Nov 12 22:18 lost+found
drwxr-xr-x 1 root root 2048 Nov 12 22:18 media
drwxr-xr-x 1 root root 2048 Nov 12 22:18 usr
drwxrwxrwx 2 system system 3037 Oct 28 05:24 xbin
The first solution is better, because it works for a longer sequance. The terms has the following format: _OrientationXcoord_Ycoord_Pressed, there Orientation is either 'v' for vertical or 'h' for horizontal, and Pressed is either 1 for touch or drag, or 0 for release. You can make the screen touched forever by sending 1 and not sending 0, then touching the screen by hand releases the touch. You might want to send more requests for a long touch as there is no option for delay.
Péter Móra (email), Zoltán Papp (email)
We are guys from Hungary and have enough time to develop Webkey :) Zoltan has already has a job as a coder and tester, Péter is doing his PhD in Math. We are not evil, which means the followings:
we can't access to the users' phones, we don't know the passwords,
we don't record any sensitive data of the users, we only log the used function, IP addresses and timestamp.