修复一个判断是否为加密包的严重错误
This commit is contained in:
@@ -2,6 +2,7 @@ package tscipher
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/TransX/log"
|
||||
"github.com/TransX/utils"
|
||||
"io"
|
||||
@@ -82,8 +83,9 @@ func WrapPackage(data []byte) []byte { //把要加密传输的数据打包成一
|
||||
sizeOfData := len(data)
|
||||
binSize := utils.Int2binary(sizeOfData, 10)
|
||||
header := append(append(StartMark, binSize...), EndMark...)
|
||||
// log.Error("size of header %d %x", len(header), header)
|
||||
//加密
|
||||
key := []byte("hahahehe~-1!")
|
||||
key := []byte("#2GD+.>dt`Qdp")
|
||||
key = key
|
||||
cipheredHeader := make([]byte, len(header))
|
||||
for i, v := range header {
|
||||
@@ -96,11 +98,13 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
|
||||
//前14个字节是header
|
||||
cipheredHeader := pacakge[:18]
|
||||
header := make([]byte, len(cipheredHeader))
|
||||
key := []byte("hahahehe~-1!")
|
||||
key := []byte("#2GD+.>dt`Qdp")
|
||||
key = key
|
||||
for i, v := range cipheredHeader {
|
||||
header[i] = v ^ key[i%len(key)]
|
||||
}
|
||||
// log.Error("receive header %d %x", len(header), header)
|
||||
// log.Error("receive pacakge %d %x", len(pacakge[:180]), pacakge[:180])
|
||||
start := header[:4]
|
||||
end := header[14:]
|
||||
binSize := header[4:14]
|
||||
@@ -126,7 +130,7 @@ func UnwrapPackage(pacakge []byte) (data []byte, rest []byte, err error) {
|
||||
b := strings.Index(string(pacakge), "_=1z")
|
||||
err = &NotPackageError{"NotPackageError(contains)" + "start:" + string(start) + " end:" + string(end) + "pacakge " + strconv.Itoa(len(pacakge)) + "start" + strconv.Itoa(a) + "end" + strconv.Itoa(b)}
|
||||
} else {
|
||||
err = &NotPackageError{"NotPackageError" + "start:" + string(start) + " end:" + string(end)}
|
||||
err = &NotPackageError{fmt.Sprintf("NotPackageError start: %s end: %s whole %x", string(start), string(end), header)}
|
||||
}
|
||||
}
|
||||
return
|
||||
@@ -164,11 +168,11 @@ func RowReceiveData(carrier *Carrier) (n int, err error) {
|
||||
}
|
||||
|
||||
func ReceiveData(carrier *Carrier) (n int, err error) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Error("ReceiveData err %s", r)
|
||||
}
|
||||
}()
|
||||
// defer func() {
|
||||
// if r := recover(); r != nil {
|
||||
// log.Error("ReceiveData err %s", r)
|
||||
// }
|
||||
// }()
|
||||
log.Info("id %s wrapedPackage := carrier.GetReceiveBuff()", carrier.AttachedTunnelID)
|
||||
wrapedPackage := carrier.GetReceiveBuff() //make([]byte, 0, cap(carrier.Cache))
|
||||
var packageData []byte
|
||||
@@ -178,7 +182,8 @@ func ReceiveData(carrier *Carrier) (n int, err error) {
|
||||
data, rest, err := UnwrapPackage(wrapedPackage)
|
||||
packageData = data
|
||||
_rest = rest
|
||||
if err, ok := err.(*NotPackageError); len(wrapedPackage) > 0 && ok {
|
||||
if err, ok := err.(*NotPackageError); len(wrapedPackage) >= 18 && ok {
|
||||
log.Debug("return NotPackageError %s", carrier.AttachedTunnelID)
|
||||
return 0, err
|
||||
}
|
||||
log.Debug("id %s length of package %d", carrier.AttachedTunnelID, len(packageData))
|
||||
|
||||
Reference in New Issue
Block a user