FILE / ScuroNeko/mtg

faketls/client_protocol.go

Исходный файл и его история в репозитории.
FILE 1e428e13fc89e04b473123b9ce8fe0ada94b1cb6
Files
mtg/faketls/client_protocol.go
T
2019-11-04 16:07:20 +03:00

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
}