Tunnel out of Anywhere: Cross-platform protocol and toolset for tunneling a TCP/IP stream over even the most basic HTTP proxy.
 
 
Go to file
Kurt b3575c8b93 More logging changes to track down cases occurring when the GET/PUT handlers are called but not processing the request. Related to interference from the proxy. 2023-12-01 15:19:03 -04:00
client Build numbers 2023-12-01 00:52:22 -04:00
common Comment and logging cleanup 2023-11-23 00:39:29 -04:00
server More logging changes to track down cases occurring when the GET/PUT handlers are called but not processing the request. Related to interference from the proxy. 2023-12-01 15:19:03 -04:00
test Change project file paths to reflect new programlog location as submodule 2023-11-08 01:25:15 -04:00
.gitignore Initial commit 2023-11-08 03:13:34 +00:00
.gitmodules Add tprogramlog submodule 2023-11-08 01:12:03 -04:00
CREDITS Initial commit 2023-11-23 00:20:58 -04:00
LICENSE Initial check-in 2023-11-08 01:07:52 -04:00
README.md Correct wrong merge 2023-11-14 22:57:31 -08:00
protocol.txt Initial check-in 2023-11-08 01:07:52 -04:00

README.md

AllCall: Tunnel a Connection From Almost Anywhere

Welcome to AllCall, a way to get your data streams from A to B.

Do you live behind a neanderthal fireall? Even today, many corporate and government firewalls still live in the dark ages of blocking streams. If you can't get a TCP/IP connection to the outside world, but you have an HTTP proxy, then this is where AllCall can help.

AllCall has the same purpose as projects like:

Those projects are almost universally unmaintained for the last decade or more, require HTTP primitives that many proxies don't support, aren't encrypted, aren't cross-platform, or just don't work.

If you're not familiar with those projects, then this is what AllCall is...

What Exactly is AllCall?

AllCall is a protocol

AllCall is a protocol for tunneling any arbitrary TCP/IP stream over HTTP proxies. Since it uses lowest-common-demominator HTTP primitives, it is highly compatible with virtually every proxy.

AllCall is a toolset

AllCall is a software client (allcall) and server (allanswer) pair that implement the AllCall protocol. If you can run the client on your computer which is behind the firewall, and run the server somewhere on the outside, then together they can tunnel your streams over the HTTP proxy in the middle.

AllCall is cross platform

Both the software client and server are written in Free Pascal using the Lazarus development environment. Their catchphrase is "Write Once, Compile Anywhere", and this is close to being the truth.

AllCall is secure

The protocol and implementation treat your data as your data:

  • All client-to-server data is encrypted using the fast and secure ChaCha20 cipher
  • Connection requests, including your username, are likewise encrypted. In addition, connection requests, even ones to the same destination, all vary in appearance and length.
  • You are protected against replay attacks so a man-in-the-middle adversary can't record and reuse your sessions
  • Your data is bundled as text into packages of valid HTML

AllCAll is versatile

The AllCall client acts as a local SOCKS4/a server on your computer. SOCKS is a very well established protocol and compatible with many networkable applications. It can be used directly by PuTTY or through netcat with OpenSSH, Dropbear and others.

Building AllCall

AllCall was written in Object Pascal. To build it you need:

  1. Lazarus version 2.2.6 or better with
  2. Free Pascal version 3.2 or better
  3. Recent version of the Indy 10 Internet Direct components
  4. Cryptolib4pascal packages

🔧 UNDER 🔨 CONSTRUCTION 🔩