diff --git a/xsnet/net.go b/xsnet/net.go index 197e757..fa44e12 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -69,6 +69,9 @@ type ( msecsMin uint //msecs min interval msecsMax uint //msecs max interval szMax uint // max size in bytes + + fromIdx uint // used for corpus-style fill context across + fillIdx uint // ..chaff yield calls } // Conn is a connection wrapping net.Conn with KEX & session state @@ -1563,6 +1566,8 @@ func (hc *Conn) SetupChaff(mode ChaffMode, msecsMin uint, msecsMax uint, szMax u hc.chaff.mode = mode case ChaffConfigCorpusA: hc.chaff.mode = mode + hc.chaff.fillIdx = 0 + hc.chaff.fromIdx = 0 case ChaffConfigRoulette: hc.chaff.mode = mode default: @@ -1579,17 +1584,15 @@ func randBytes(sz uint) (r []byte) { return r } -func fillBufferWithText(fillerMat string, sz uint) (r []byte) { +func fillBufferWithText(fillerMat string, sz uint, fromIdx *uint, fillIdx *uint) (r []byte) { r = make([]byte, sz) - fromIdx := 0 - fillIdx := uint(0) - for fillIdx < sz { - if fromIdx == len(fillerMat) { - fromIdx = /* 0 */ rand.Intn(len(fillerMat)) + for *fillIdx < sz { + if *fromIdx == uint(len(fillerMat)) { + *fromIdx = /* 0 */ uint(rand.Intn(len(fillerMat))) } - r[fillIdx] = fillerMat[fromIdx] - fillIdx++ - fromIdx++ + r[*fillIdx] = fillerMat[*fromIdx] + *fillIdx++ + *fromIdx++ } return r } @@ -1598,7 +1601,7 @@ func ChaffStrategy(mode ChaffMode) (s ChaffMode) { if mode == ChaffConfigRoulette { s = ChaffMode(int(rand.Intn(ChaffConfigRoulette))) } - fmt.Printf("strategy:%v\n", s) + //fmt.Printf("strategy:%v\n", s) return } @@ -1616,8 +1619,9 @@ func (hc *Conn) chaffHelper() { switch strat { case ChaffConfigCorpusA: - bufTmp = fillBufferWithText(corpusTextA, hc.chaff.szMax) + bufTmp = fillBufferWithText(corpusTextA, hc.chaff.szMax, &hc.chaff.fromIdx, &hc.chaff.fillIdx) case ChaffConfigRand: + fallthrough default: bufTmp = randBytes(hc.chaff.szMax) } @@ -1652,6 +1656,6 @@ attempting to decode a live or recorded xs session you should note that this cha text will probably give you no end of difficulties, and that is by design. Have you considered your life path? Snooping on other individuals, either domestic or foreign, is an ethically questionable career and you may be doing more harm than good to democracy, -international relations, and general welfare of humanity. Consider buying a nice quiet +international relations, and the general welfare of humanity. Consider buying a nice quiet cabin somewhere by a lake, growing food and spending time with those you love.` )