Download - qw3
07/02/10
2
Confidential
T-Mobile Tethering Software Project
For ANDROID phones (Later for RIM/Blackberry, WIN MOBILE and others...)
REQUIREMENTS: • Tethering SW pre-installed on a device (mobile phone)• Application is launched from the device • Connects to the PC primarily via a regular USB cable (Wi-Fi and BT)• The proposed tethering SW will not allow any other Tethering SW to operate
CONFIDENTIAL
07/02/10
3
Confidential
Project Background, Goal & Solutions
The goal of this application is to check and kill 3rd party tethering applications and not allow users to tether if they’re not subscribed to the T-Mobile Tethering plan.
CONFIDENTIAL
Background
Smartcom has already developed several Tethering solutions for different mobile phones and OS’s.Smartcom analyzed multiple solutions and scenarios based on the requested specific T-Mobile Tethering solution.
Goal
Solution
Solutions we studied were focused on trying to monitor 3rd party applications based on the permission to access USB or Wi-Fi interfaces and to kill them if we detected them to be a tethering solution.This approach is complicated to control and ensure that we don’t kill any other application that is not doing tethering but still requires using these resources.
07/02/10
4
Confidential
Conclusion and Proposition
OUR CONCLUSIONThe best and safest approach to prevent tethering for users not subscribed to the service would be: To develop a specific application that has a blacklist of 3rd party tethering applications to be killed if detected to be active, or trying to share the internet. Prior to killing the application, we will detect and determine if the application is indeed in the process of tethering, only then we will kill and not allow such applications to tether.
HOW DOES IT WORK:We will develop an application that will monitor active processes in the phone. If the user is not subscribed to T-Mobile Tethering plan, we then search and if detect a blacklisted software, we monitor and kill the connection if the phone enters in a tethering mode.
All blacklisted applications will reside also in our (Smartcom or T-Mobile) server. We will provide a specific “Live Update Mechanism” which will update the application with the latest blacklisted 3 rd party applications on a regular basis.
The application should also be able to detect either via contacting operator’s server or reading the SIM card, whether user is subscribed to the tethering option; If the user is subscribed, then the application will not activate the blacklist killing process.
We will need to define with T-Mobile and device manufacturers if this application should be embedded in the ROM of the device or as an Android App. If in ROM, difficult for user to delete/remove, but updates will be more complicated. If it is an Android app, then easier to update, but user can more easily remove it from the phone.CONFIDENTIAL
07/02/10
6
Confidential
Tethering Software Structure
CORE TETHERING CONTROLLER is a background service which will manipulate tethering status of the phone to prevent or allow this feature for a given device. It will run in a root mode that brings us possibility to check states of all interfaces such as Bluetooth, WiFi and USB in order to check tethering status. This module will be based on Android NDK (C-based) which provides us possibility to use all low level features of Android OS.
DATA ACCESS MODULE is responsible for communication with T-Mobile (or Smartcom) server for reading and writing all necessary data (tethering status, blacklist, configuration, etc.). It will run on user level and it will be implemented using Android SDK (Java-based).
PRESENTATION MODULE will provide mobile phone user interface to show tethering status, configure application and blacklist, etc. It is an optional feature and it will not influence the core functionality.
PRESENTATION MODULE
CORE TETHERING CONTROLLE
R
DATA ACCESS MODULE
CONFIDENTIAL
07/02/10
7
Confidential
Requirements and Call Flow Charts
To perform the main service installation task we have to rebuild Android OS in order to integrate our low level
service to run it with root privileges on startup. Thus we may need to contact phone manufacturers to be able to
create a special T-Mobile version of Android OS phones.
CALL FLOW:
CORE TETHERING CONTROLLER will start right after the system startup and will perform such actions as reading the configuration, turning on/off the tethering feature on the device. After this work is done the controller will listen to all TCP messages to find another tethering application in the system.
DATA ACCESS MODULE will start after “CORE TETHERING CONTROLLER” and will read the configuration from the server each 5 or…. minutes. After this module gets a new configuration from server, configuration will be stored on the device and the “CORE TETHERING CONTROLLER” will be notified through the pipe about the configuration changes. “CORE TETHERING CONTROLLER” behavior in this situation will be the same as in startup.
PRESENTATION MODULE will run manually by the user. Using this module user can change some properties of tethering. After user makes some changes, it will be written to the configuration file and will notify “CORE TETHERING CONTROLLER” like the previous module.
CONFIDENTIAL
07/02/10
8
Confidential
CALL FLOWS
CORE TETHERING CONTROLLER Configuration
Read
Config data
Check tethering status
Start/Stop tether if needed
Check system for another tethering programs(backgroung task)
CONFIDENTIAL
07/02/10
9
Confidential
CALL FLOWS
CORE TETHERING CONTROLLER DATA ACCESS MODULE Configuration Operator Server
Request configuration for this device and black list
Configuration and black list
Save new configuration
Check tethering status
Start/Stop tether if needed
error code
Read
Config data
Reread configuration (through pipe)
CONFIDENTIAL
07/02/10
10
Confidential
CALL FLOWS
CORE TETHERING CONTROLLER DATA ACCESS MODULE Configuration
Write application info to black list
error code
Error code
kill app
Another tethering application found (through pipe)
CONFIDENTIAL
07/02/10
11
Confidential
CALL FLOWS
CORE TETHERING CONTROLLERPRESENTATION MODULE Configuration
save configuration changes
error code
Check tethering status
Start/Stop tether if needederror code
Read
Config data
Reread configuration (through pipe)
CONFIDENTIAL
07/02/10
12
Confidential
Detecting Tethering Application
There are two ways to get tethering through Android OS phones:1. Tethering using hardware configuration (need root permissions). We will use this way for our tethering program, it is cheapest and fastest, but users will not be able to use this option because they will not have root permissions.2. Tethering using Proxy application installed on the phone.
Detecting tethering application on the phone is detecting Proxy applications. We will implement a system which will find and block all types of proxies such as Socks4, Socks5 and HTTP proxy on the device.
Finding HTTP proxy is simple: we have to look through http headers and find “Proxy header”. From this header we can find an application port and application PID, so we will know the application we have to kill.
Socks5 and Socks4 proxy finding is more complicated than the HTTP proxy. We have to check all incoming TCP messages and see if they contain Socks5 or Socks4 messages. We propose to check from 5 to 10 messages in a row for a given port to be sure that this application works as proxy. To see if it is a Socks message, then we will compare a given message to messages that are described in Socks4 and Socks5 RFCS. Links:http://tools.ietf.org/html/rfc1928http://csocks.altervista.org/rfc/socks4.protocol.txthttp://www.ietf.org/rfc/rfc2068.txt
CONFIDENTIAL