|
||
---|---|---|
client | ||
common | ||
server | ||
test | ||
.gitignore | ||
.gitmodules | ||
CREDITS | ||
LICENSE | ||
README.md | ||
protocol.txt |
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:
- httptunnel (both incarnations),
- warptunnel,
- ProxyChains, and
- many, many others.
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:
- Lazarus version 2.2.6 or better with
- Free Pascal version 3.2 or better
- Recent version of the Indy 10 Internet Direct components
- Cryptolib4pascal packages