SpoofDPI/readme.md

55 lines
2.1 KiB
Markdown
Raw Normal View History

2022-01-04 08:57:53 +00:00
# SpoofDPI
2022-01-04 09:35:03 +00:00
A simple and fast software designed to bypass **Deep Packet Inspection**
2022-01-04 09:12:38 +00:00
![image](https://user-images.githubusercontent.com/45588457/148035986-8b0076cc-fefb-48a1-9939-a8d9ab1d6322.png)
2022-01-03 08:43:30 +00:00
2022-01-04 11:04:05 +00:00
Read in other Languages: [English](https://github.com/xvzc/SpoofDPI), [한국어](https://github.com/xvzc/SpoofDPI/blob/main/readme_ko.md)
2022-01-04 10:19:43 +00:00
# Dependencies
- Go
2022-01-04 09:11:43 +00:00
# Installation
2022-01-04 09:35:03 +00:00
- With **go install**
2022-01-04 09:11:43 +00:00
`$ go install github.com/xvzc/SpoofDPI/cmd/spoof-dpi`
2022-01-04 09:35:03 +00:00
> Remember that $GOPATH variable should be set in your $PATH
2022-01-03 08:45:15 +00:00
2022-01-04 09:35:03 +00:00
- Or you can build your own
`$ git clone https://github.com/xvzc/SpoofDPI.git`
`$ cd SpoofDPI`
2022-01-04 09:11:43 +00:00
`$ go build ./cmd/...`
# Run
2022-01-04 10:18:15 +00:00
### OSX
Run `$ spoof-dpi`
2022-01-03 08:45:15 +00:00
2022-01-04 10:18:15 +00:00
### Linux
Run `$ spoof-dpi` and open your favorite browser with proxy option
2022-01-03 08:45:15 +00:00
`google-chrome --proxy-server="http://127.0.0.1:8080"`
2022-01-03 08:43:30 +00:00
2022-01-04 10:18:15 +00:00
### Windows
2022-01-04 09:35:03 +00:00
Use [GoodbyeDPI](https://github.com/ValdikSS/GoodbyeDPI) instead
# Usage
```
Usage: spoof-dpi [options...]
-dns=<addr> | default: 8.8.8.8
-port=<port> | default: 8080
```
2022-01-04 10:18:15 +00:00
# How it works
### HTTP
Since most of websites in the world now support HTTPS, SpoofDPI doesn't bypass Deep Packet Inspections for HTTP requets, However It still serves proxy connection for all HTTP requests.
### HTTPS
2022-01-04 11:19:21 +00:00
Although TLS 1.3 encrypts every handshake process, the domain names are still shown as plaintext in the Client hello packet.
2022-01-04 11:18:57 +00:00
In other words, when someone else looks on the packet, they can easily guess where the packet is headed to.
2022-01-04 11:21:53 +00:00
The domain name can offer a significant information while DPI is being processed, and we can actually see that the connection is blocked right after sending Client hello packet.
2022-01-04 11:18:57 +00:00
I had tried some ways to bypass this, and found out that it seemed like only the first chunk gets inspected when we send the Client hello packet splited in chunks.
2022-01-04 10:18:15 +00:00
What SpoofDPI does to bypass this is to send the first 1 byte of a request to the server,
and then send the rest.
> SpoofDPI doesn't decrypt your HTTPS requests, and that's why we don't need the SSL certificates.
2022-01-04 11:18:57 +00:00
# Inspirations
2022-01-04 09:35:03 +00:00
[Green Tunnel](https://github.com/SadeghHayeri/GreenTunnel)
2022-01-04 09:35:48 +00:00
[GoodbyeDPI](https://github.com/ValdikSS/GoodbyeDPI)