Add base for faketls

This commit is contained in:
9seconds
2019-11-04 16:07:20 +03:00
parent f531d90fc4
commit 1e428e13fc
7 changed files with 370 additions and 40 deletions
+35
View File
@@ -0,0 +1,35 @@
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
}