#tunnel #protocols #connection #hide #tries #data-transfer #transport

app hiddenlink

A simple tunnel which tries to hide itself inside of other protocols

14 releases (1 stable)

1.0.0 Mar 23, 2024
0.9.0 Mar 2, 2024
0.8.0 Feb 27, 2024
0.2.0 Dec 31, 2023

#863 in Network programming

Download history 8/week @ 2023-12-25 9/week @ 2024-01-15 13/week @ 2024-01-22 86/week @ 2024-02-12 57/week @ 2024-02-19 263/week @ 2024-02-26 56/week @ 2024-03-04 24/week @ 2024-03-11 82/week @ 2024-03-18 11/week @ 2024-03-25 46/week @ 2024-04-01

165 downloads per month



hiddenlink is a simple tunnel which tries to hide itself inside of other protocols.

The main idea is the following: it has some transports configured which availability is constantly monitored. By default the fastest transport is used. If it becomes unavailable (blocked?), the next one (slower, but more inconspicuous) is used in the order of precedence.

For now, the following transports are supported:

  1. Encrypted UDP: A simple protocol which sends each packet in a separate UDP datagram. Expected to be fast, but may reveal the tunnel as a suspicious point-to-point UDP connection with data which looks like an unreadable garbage.

  2. HTTPS: hiddenlink listens to 443 port, terminates TLS connections and securely authenticates them. Authenticated connections are passed for tunnel data transfer and non-authenticated are proxied to a web server to make the traffic look like a regular HTTPS. Supports multiple domains (TLS certificates), allows to split the traffic into multiple connections, reopen them periodically and emulate uploading/downloading HTTP clients to make the connection not look like tunnel in many of its aspects.


~849K SLoC