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
}
+21
View File
@@ -0,0 +1,21 @@
package faketls
const (
TLSHandshakeLength = 1 + 2 + 2 + 512
)
var (
faketlsStartBytes = [...]byte{
0x16,
0x03,
0x01,
0x02,
0x00,
0x01,
0x00,
0x01,
0xfc,
0x03,
0x03,
}
)
+10
View File
@@ -0,0 +1,10 @@
package faketls
import (
"github.com/9seconds/mtg/conntypes"
"github.com/9seconds/mtg/protocol"
)
func TelegramProtocol(req *protocol.TelegramRequest) (conntypes.StreamReadWriteCloser, error) {
return nil, nil
}