Tethery

Tethering restriction bypass for iOS devices

No jailbreak required!

What is it?

Tethery is a small bash script that allows you to tether a Mac to your iOS device in order to use its 3G/4G internet connection even if tethering is disabled by the carrier.

All traffic is routed over an SSH connection and so is indistinguishable from normal phone traffic (i.e. the carrier won't know you are tethering).

This technique works with all 3G/4G-enabled iOS devices and does not require the device to be jailbroken.

How does it work?

First the iOS device creates an SSH connection to a server on the internet using vSSH. vSSH supports SOCKS5 proxy forwarding, so as well as connecting to the remote host it spawns a local SOCKS5 proxy on the device which forwards all connections it receives through the SSH tunnel.

We then create an ad-hoc wifi network between the mac and the iOS device so they can talk to eachother.

Finally we configure Proxifier on the mac to transparently route all outgoing connection requests through the SOCKS5 proxy running on the iOS device.

All the carrier can see is a single long-running SSH connection from the iOS device to the internet, they can't detect all the traffic that is being tunnelled through it because it's encrypted.

All tethery.sh does is make this process easy - by automatically detecting the self-assigned IP addresses for both devices and launching Proxifier with the correct settings each time.

Requirements

Setup

Create a vSSH profile on the iDevice that connects to the linux box via ssh. Add a port forwarding rule to this profile with:

Type: Dynamic SOCKS proxying

Source:

Host: 127.0.0.1
Port: 8080

Accept all connections: Yes

Save this profile with a name like "tether"

Usage

  1. Create an ad-hoc wifi network on the mac (channel 1 seems to work best).
  2. Join the iOS device to the ad-hoc wifi network.
  3. Open vSSH on the iOS device and initiate the "tether" connection.
  4. Open terminal on the mac and run the "tethery.sh" script in the tethery directory.

Tethery will automatically detect the IP address of the iDevice on the network and initiate the proxy. Be patient as the iDevice will take a minute or so to self-assign its IP before it can be detected.

You should now be tethered. Some apps may need to be restarted before they will work through the proxy.

Note that you will need to leave the iDevice running vSSH in order for the tunnel to stay active, so the best thing to do is disable auto-lock in settings so the device won't go to sleep and suspend the app.

Disclaimer

WE STRONGLY ADVISE READING YOUR MOBILE SERVICE PROVIDER'S CONTRACT TERMS BEFORE USING THIS TECHNIQUE. IF THE TECHNIQUE WOULD VIOLATE THEIR TERMS AND CONDITIONS YOU SHOULD NOT USE IT.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.