Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

aiotunnel can use GET method ? #1

Open
ingnelson opened this issue Jul 19, 2020 · 2 comments
Open

aiotunnel can use GET method ? #1

ingnelson opened this issue Jul 19, 2020 · 2 comments

Comments

@ingnelson
Copy link

Hello .

aiotunnel can use HTTP tunneling via GET method ?

Because i would like to use a Android device as a client and install aiotunnel on my VPS to create the tunnel like a VPN do .

I will wait your answer.

@codepr
Copy link
Owner

codepr commented Aug 7, 2020

Hello, you mean only GET method for every stream?

@ingnelson
Copy link
Author

ingnelson commented Aug 7, 2020

@codepr the answer at your question is YES, or use GET or POST or PUT , but not use CONNECT method.
Some guy create a tunnel using only GET or POST or PUT for Downstream and GET or POST or PUT Upstream + shadowsocks to obfuscate the data or create the tunnel . He only let me test it one time , but I captured the packet using TCPDUMP.

My ISP provider restrictions are :

  1. My ISP provider only let pass or allow GET method request without HTTP headers (example : Host , Connect etc), so only the first line.
  2. My ISP provider blocks the connection if the server send more then 10,000 bytes on one request. so the connection should be multiples connection and multiple request, maybe configure the server if the server send more that 9000 bytes close the connection and the client send other HTTP request to create a new connection ? or it'll require tricky job polling that 10K segments and reassembling them ?

At the end of the first line should end with \r\n ٌُُُُُُّّّّْْْْْْْْْْْْْْْْْْ\r\n\r\n

As you can see this http request do not finish with \r\n\r\n , it finish with \r\n ٌُُُُُُّّّّْْْْْْْْْْْْْْْْْْ\r\n\r\n this has NON-ASCII characters after the first \r\n + space , this NON-ASCII character is the trick to bypass the firewall

The HTTP should be like this:

GET #blablabla# HTTP/1.1\r\n ٌُُُُُُّّّّْْْْْْْْْْْْْْْْْْ\r\n\r\n

On the server (VPS) you can see the HTTP request on bytes like this :

GET #123# HTTP/1.1\r\n\x20\xd9\x8c\xd9\x8f\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x91\xd9\x91\xd9\x91\xd9\x91\xd9\x92\xd9\x92\xd9\x92\xd9\x92\xd9\x8f\xd9\x8f\xd9\x8f\xd9\x92\xd9\x8f\xd9\x8f\r\n\r\n

The connection is like this :

HTTP request on port 80 using the NON-ASCII characters > Shadowsocks on port 443 > internet > HTTP server listen on port 80 > shadowsocks server listen on port 443

On wireshark program the connection looks like this :

4Full_request_and_response
1HTTP REQUEST
2NON-ASCII CHARACTERS
3HTTP RESPONSE

You can see the packet via WIRESHARK:
quantumnica1.zip

Those screenshots are from a android app that create the tunnel like i told you, i just figurate how it works and i want to create the same connection.

Can you create connection like that using GET method , i know you have the knowledge, i need a help from a guy like you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants