mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 21:04:02 +03:00
Fix all lint errors
This commit is contained in:
@@ -8,35 +8,43 @@ import (
|
||||
"github.com/juju/errors"
|
||||
)
|
||||
|
||||
// Obfuscated2 contains AES CTR encryption and decryption streams
|
||||
// for telegram connection.
|
||||
type Obfuscated2 struct {
|
||||
decryptor cipher.Stream
|
||||
encryptor cipher.Stream
|
||||
}
|
||||
|
||||
// Encrypt encrypts given data.
|
||||
func (o *Obfuscated2) Encrypt(data []byte) []byte {
|
||||
buf := make([]byte, len(data))
|
||||
o.encryptor.XORKeyStream(buf, data)
|
||||
return buf
|
||||
}
|
||||
|
||||
// Decrypt decrypts given data.
|
||||
func (o *Obfuscated2) Decrypt(data []byte) []byte {
|
||||
buf := make([]byte, len(data))
|
||||
o.decryptor.XORKeyStream(buf, data)
|
||||
return buf
|
||||
}
|
||||
|
||||
// ParseObfuscated2ClientFrame parses client frame. Please check this link for
|
||||
// details: http://telegra.ph/telegram-blocks-wtf-05-26
|
||||
//
|
||||
// Beware, link above is in russian.
|
||||
func ParseObfuscated2ClientFrame(secret, data []byte) (*Obfuscated2, int16, error) {
|
||||
frame := Frame(data)
|
||||
|
||||
decHasher := sha256.New()
|
||||
decHasher.Write(frame.Key())
|
||||
decHasher.Write(secret)
|
||||
decHasher.Write(frame.Key()) // nolint: errcheck
|
||||
decHasher.Write(secret) // nolint: errcheck
|
||||
decryptor := makeStreamCipher(decHasher.Sum(nil), frame.IV())
|
||||
|
||||
invertedFrame := frame.Invert()
|
||||
encHasher := sha256.New()
|
||||
encHasher.Write(invertedFrame.Key())
|
||||
encHasher.Write(secret)
|
||||
encHasher.Write(invertedFrame.Key()) // nolint: errcheck
|
||||
encHasher.Write(secret) // nolint: errcheck
|
||||
encryptor := makeStreamCipher(encHasher.Sum(nil), invertedFrame.IV())
|
||||
|
||||
decryptedFrame := make(Frame, FrameLen)
|
||||
@@ -53,6 +61,9 @@ func ParseObfuscated2ClientFrame(secret, data []byte) (*Obfuscated2, int16, erro
|
||||
return obfs, decryptedFrame.DC(), nil
|
||||
}
|
||||
|
||||
// MakeTelegramObfuscated2Frame creates new handshake frame to send to
|
||||
// Telegram.
|
||||
// https://blog.susanka.eu/how-telegram-obfuscates-its-mtproto-traffic/
|
||||
func MakeTelegramObfuscated2Frame() (*Obfuscated2, Frame) {
|
||||
frame := generateFrame()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user