mirror of https://github.com/cbeuw/Cloak
Uncomment header obfuscation
This commit is contained in:
parent
239647c5b2
commit
306385f9c2
|
|
@ -154,6 +154,17 @@ func (sb *switchboard) deplex(ce *connEnclave) {
|
||||||
}
|
}
|
||||||
frame := sb.session.deobfs(buf[:n])
|
frame := sb.session.deobfs(buf[:n])
|
||||||
|
|
||||||
|
// FIXME: there has been a bug in which a packet has
|
||||||
|
// a seemingly corrupted StreamID (e.g. when the largest streamID is something like 3000
|
||||||
|
// and suddently a streamID of 3358661675 is added.
|
||||||
|
// It happens once ~6 hours and the occourance is realy unstable
|
||||||
|
// I couldn't find a way to reproduce it. But I do have some clue.
|
||||||
|
// I commented out the util.genXorKeys function so that the stream headers are being
|
||||||
|
// sent in plaintext, and this bug didn't happen again. So I suspect it has to do
|
||||||
|
// with xxHash. Either it's to do with my usage of the libary or the implementation
|
||||||
|
// of the library. Maybe there's a race somewhere? I may eventually use another
|
||||||
|
// method to encrypt the headers. xxHash isn't cryptographic afterall.
|
||||||
|
|
||||||
stream := sb.session.getOrAddStream(frame.StreamID, frame.Closing == 1)
|
stream := sb.session.getOrAddStream(frame.StreamID, frame.Closing == 1)
|
||||||
// if the frame is telling us to close a closed stream
|
// if the frame is telling us to close a closed stream
|
||||||
// (this happens when ss-server and ss-local closes the stream
|
// (this happens when ss-server and ss-local closes the stream
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package util
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
|
||||||
//xxhash "github.com/OneOfOne/xxhash"
|
xxhash "github.com/OneOfOne/xxhash"
|
||||||
mux "github.com/cbeuw/Cloak/internal/multiplex"
|
mux "github.com/cbeuw/Cloak/internal/multiplex"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -11,18 +11,18 @@ import (
|
||||||
// The keys are generated from the SID and the payload of the frame.
|
// The keys are generated from the SID and the payload of the frame.
|
||||||
// FIXME: this code will panic if len(data)<18.
|
// FIXME: this code will panic if len(data)<18.
|
||||||
func genXorKeys(secret []byte, data []byte) (i uint32, ii uint32, iii uint32) {
|
func genXorKeys(secret []byte, data []byte) (i uint32, ii uint32, iii uint32) {
|
||||||
/*
|
|
||||||
h := xxhash.New32()
|
h := xxhash.New32()
|
||||||
ret := make([]uint32, 3)
|
ret := make([]uint32, 3)
|
||||||
preHash := make([]byte, 16)
|
preHash := make([]byte, 16)
|
||||||
for j := 0; j < 3; j++ {
|
for j := 0; j < 3; j++ {
|
||||||
copy(preHash[0:10], secret[j*10:j*10+10])
|
copy(preHash[0:10], secret[j*10:j*10+10])
|
||||||
copy(preHash[10:16], data[j*6:j*6+6])
|
copy(preHash[10:16], data[j*6:j*6+6])
|
||||||
h.Write(preHash)
|
h.Write(preHash)
|
||||||
ret[j] = h.Sum32()
|
ret[j] = h.Sum32()
|
||||||
}
|
}
|
||||||
return ret[0], ret[1], ret[2]
|
return ret[0], ret[1], ret[2]
|
||||||
*/
|
|
||||||
return 0, 0, 0
|
return 0, 0, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue