Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

frame.go 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package newobfuscated2
  2. const (
  3. frameLenKey = 32
  4. frameLenIV = 16
  5. frameLenMagic = 4
  6. frameLenDC = 2
  7. frameOffsetFirst = 8
  8. frameOffsetKey = frameOffsetFirst + frameLenKey
  9. frameOffsetIV = frameOffsetKey + frameLenIV
  10. frameOffsetMagic = frameOffsetIV + frameLenMagic
  11. frameOffsetDC = frameOffsetMagic + frameLenDC
  12. frameLen = 64
  13. )
  14. // [frameOffsetFirst:frameOffsetKey:frameOffsetIV:frameOffsetMagic:frameOffsetDC:frameOffsetEnd]
  15. type frame struct {
  16. data [frameLen]byte
  17. }
  18. func (f *frame) bytes() []byte {
  19. return f.data[:]
  20. }
  21. func (f *frame) key() []byte {
  22. return f.data[frameOffsetFirst:frameOffsetKey]
  23. }
  24. func (f *frame) iv() []byte {
  25. return f.data[frameOffsetKey:frameOffsetIV]
  26. }
  27. func (f *frame) magic() []byte {
  28. return f.data[frameOffsetIV:frameOffsetMagic]
  29. }
  30. func (f *frame) dc() []byte {
  31. return f.data[frameOffsetMagic:frameOffsetDC]
  32. }
  33. func (f *frame) unique() []byte {
  34. return f.data[frameOffsetFirst:frameOffsetDC]
  35. }
  36. func (f *frame) invert() (nf frame) {
  37. nf = *f
  38. for i := 0; i < frameLenKey+frameLenIV; i++ {
  39. nf.data[frameOffsetFirst+i] = nf.data[frameOffsetIV-1-i]
  40. }
  41. return
  42. }