mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 01:24:02 +03:00
FILE / ScuroNeko/mtg
faketls/client_protocol.go
Исходный файл и его история в репозитории.
36 lines
803 B
Go
36 lines
803 B
Go
package faketls
|
|
|
|
import (
|
|
"bufio"
|
|
|
|
"github.com/9seconds/mtg/conntypes"
|
|
"github.com/9seconds/mtg/obfuscated2"
|
|
"github.com/9seconds/mtg/wrappers/stream"
|
|
)
|
|
|
|
type ClientProtocol struct {
|
|
obfuscated2.ClientProtocol
|
|
}
|
|
|
|
func (c *ClientProtocol) Handshake(socket conntypes.StreamReadWriteCloser) (conntypes.StreamReadWriteCloser, error) {
|
|
rewinded := stream.NewRewind(socket)
|
|
bufferedReader := bufio.NewReader(rewinded)
|
|
|
|
for _, expected := range faketlsStartBytes {
|
|
if actual, err := bufferedReader.ReadByte(); err != nil || actual != expected {
|
|
return nil, c.simulateWebsite(rewinded)
|
|
}
|
|
}
|
|
|
|
if err := c.tlsHandshake(rewinded); err != nil {
|
|
return nil, c.simulateWebsite(rewinded)
|
|
}
|
|
|
|
conn, err := c.ClientProtocol.Handshake(socket)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return conn, err
|
|
}
|