explaingit

freenetio/fakesni

13KotlinAudience · developerComplexity · 4/5Setup · hard

TLDR

Android app bypassing deep packet inspection firewalls by spoofing Server Name Indication (SNI) in HTTPS handshakes. Routes traffic through a local proxy that replaces real hostnames with fake ones before firewall inspection.

Mindmap

mindmap
  root((FakeSNI))
    Network Bypass
      SNI spoofing
      DPI evasion
      Fake hostname injection
    Configuration
      Real server address
      Fake hostname selection
      Browser fingerprint choice
    Advanced Features
      TLS packet splitting
      Passive mode sockets
      Active mode NFQUEUE
    Integration
      Local proxy support
      VPN client routing
      Auto-reconnect switching
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Circumvent ISP or government deep packet inspection filtering of HTTPS traffic

USE CASE 2

Access websites blocked by firewall rules that only inspect SNI during TLS handshake

USE CASE 3

Route traffic through local proxy to fool firewalls while maintaining VPN client compatibility

USE CASE 4

Test firewall evasion techniques in network environments with packet inspection

Tech stack

AndroidKotlinGoRaw socketsNFQUEUEHTTPS/TLS

Getting it running

Difficulty · hard Time to first run · 30min

Requires rooted Android 8.0+. Choose between passive mode (any device) or active mode (NFQUEUE-capable kernel). Download signed APK matching device architecture from releases. Configure real target server, select fake hostname, optionally tune TLS fingerprint and packet splitting settings.

License not specified in explanation, verify on GitHub repository.

In plain English

FakeSNI is an Android app that helps people get around internet firewalls that use deep packet inspection, which is a technique ISPs and governments use to read network traffic and block certain connections. The app requires a rooted Android phone running Android 8.0 or later. When your device connects to a website over a secure HTTPS connection, it sends a small piece of identifying information called the Server Name Indication, or SNI, before the connection is fully encrypted. Deep packet inspection firewalls read this SNI to decide whether to allow or block the connection. FakeSNI works by running a local proxy on your phone that intercepts this handshake and swaps out the real SNI for a fake, allowed hostname before the firewall can inspect it. The actual connection still goes to the real server, but the firewall sees a harmless hostname instead. The app wraps a Go binary that does the low-level network work, and presents it through a polished Android interface. You configure the real server address you want to reach, choose a fake hostname for the firewall to see, and pick a browser fingerprint for the TLS handshake to imitate so the connection looks like it is coming from a regular browser. There are also options for splitting the TLS handshake across multiple network packets, which defeats firewalls that only inspect the first packet. The proxy automatically reconnects when you switch between mobile data and Wi-Fi. Two operating modes are available. The default passive mode uses raw network sockets and works on any rooted device. The active mode uses a Linux kernel feature called NFQUEUE to intercept packets at a deeper level, which may work better in some network environments but requires a kernel that supports it. The app can be used alongside VPN clients such as v2rayNG by pointing them at the local proxy address instead of connecting directly to a server. Signed APKs are available from the project's GitHub releases page for the most common phone architectures.

Copy-paste prompts

Prompt 1
Show me how FakeSNI intercepts and modifies Server Name Indication before the firewall sees it
Prompt 2
How do I configure FakeSNI with v2rayNG to route blocked websites through a local proxy?
Prompt 3
Explain the difference between FakeSNI's passive mode and active mode NFQUEUE interception
Prompt 4
What browser fingerprints does FakeSNI support for TLS handshakes to avoid detection?
Open on GitHub → Explain another repo

← freenetio on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.