Skip to content

theermia/SPlusTunnel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SoroushPlus Tunnel

A network tunneling tool that uses SoroushPlus Messenger's voice call infrastructure and WebRTC DataChannel to bypass internet restrictions. Traffic is transmitted through LiveKit's encrypted DataChannel and appears as a regular voice call within the SoroushPlus platform.


How It Works

Network traffic is relayed through a WebRTC DataChannel established during a SoroushPlus voice call. The server side (on a machine with unrestricted internet) proxies TCP connections on behalf of the client. The client exposes a local SOCKS5 proxy that applications can use.


Prerequisites

  • Python 3.10 or higher
  • A SoroushPlus account (web.splus.ir)
  • Access to browser DevTools to extract LiveKit tokens

Installation

pip install livekit==0.11.1 certifi

Quick Start

1. Start a Voice Call

Open web.splus.ir and initiate a voice call with the other account.

2. Extract Tokens

In your browser:

  1. Press F12 (DevTools) → Network tab → filter by WS
  2. Find the WebSocket connection to k.splus.ir:8446
  3. Copy the access_token value from the connection URL

Each side of the call has its own unique token.

3. Run Server (machine with free internet)

Server must connect first, then client.

cd soroushplus
python app.py server

Paste the server-side token when prompted.

4. Run Client (restricted device)

cd soroushplus
python app.py client

Paste the client-side token when prompted.

5. Configure Proxy

A SOCKS5 proxy will be available at 0.0.0.0:1080.

curl --socks5-hostname 127.0.0.1:1080 http://ifconfig.me

Set your browser or Telegram proxy to SOCKS5 127.0.0.1:1080. Enable "Proxy DNS" (remote DNS resolution).

Custom port:

python app.py client 8080

Project Structure

soroushplus/
├── app.py          Entry point and CLI
├── transport.py    LiveKit connection layer
├── relay.py        Session management (server + client)
├── socks5.py       SOCKS5 proxy server
├── protocol.py     Packet encode/decode
├── settings.py     Configuration constants
└── README.md       Documentation

Limitations

  • Tokens must be manually extracted from browser DevTools
  • Speed: ~500 KB/s (~4 Mbps) — sufficient for Telegram and light browsing
  • If the call drops, new tokens are needed
  • No automatic call establishment (manual via web interface)

Background

This project was developed in response to the severe internet restrictions imposed in Iran. It only functions when voice calls through SoroushPlus Messenger can be established via their LiveKit infrastructure.

Hoping for better days for Iran.


Author

Developed by Ermia

For questions and suggestions:


License

MIT License

About

A network tunneling tool that uses SoroushPlus Messenger's voice call infrastructure and WebRTC DataChannel to bypass internet restrictions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages