Skip to content

cuamckuu/tetherspot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tetherspot

Script to simlify reverse USB tethering with WiFi hotspot on non-rooted Android

Schematic:

diagram

Demo:

demo

Why

To share unlimited wired network from PC to laptop and iPad instead of sharing 4G with limited monthly traffic.

Idea

  • Use Gnirehtet on PC to start reverse USB tethering
  • Use Every Proxy on Android to run proxy server
  • Enable WiFi hotspot on Android
  • Connect to created WiFi and specify proxy address

Tetherspot could automate this process by

  • Downloading and installing adb if needed (Not yet)
  • Downloading and installing propper Gnirehtet version (Not yet)
  • Downloading and installing EveryProxy apk (Not yet)
  • Starting/stopping Gnirehtet, Every Proxy and WiFi hotspot in one command

Usage

  • Work In Progress!
  • Current version has only win64 Gnirehter binaries, so on linux/macOS you should add propper Gnirehtet version to PATH yourself
  • Current version don't yet install Every Proxy, so install it manually from Google Play
git clone https://github.com/cuamckuu/tetherspot.git
cd ./tetherspot
# Unlock your phone and connect it via USB with allowed USB debugging
python main.py

TODO

  • Run adb commands from Python
  • Enable wifi hotspot from adb
  • Disable wifi hotspot from adb``adb
  • Enable proxy server from adb
  • Disable proxy server from adb
  • Run Gnirehtet from Python
  • Cleanup Gnirehtet on android side
  • Working Windows prototype
  • Check that device unlocked
  • Lock screen after start of Gnirehtet
  • Unlock screen before cleanup
  • Disable mobile network to ensure reverse tethering works
  • Determine OS version to get propper Gnirehtet
  • Install EveryProxy if needed
  • Install ADB if needed
  • Write own Android proxy server (TCP, UDP, IPv6, netty, ktor)
  • Get relative path to __file__ location
  • Use logging instead of prints
  • Add run flags for diffirent behaviour. Ex: --lock, --install, --hotspot_row, etc
  • Maybe auto screen unlock?

Notes: