FrayxRulez

Untitled

Nov 9th, 2020
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.19 KB | None | 0 0
  1. var stream = new System.IO.MemoryStream();
  2. var writer = new System.IO.BinaryWriter(stream);
  3.  
  4. int fileType = 9 | 1 << 25;
  5. int dcId = 2;
  6. long id_ = long.Parse(id);
  7. long access_hash_ = long.Parse(access_hash);
  8.  
  9. writer.Write(fileType);
  10. writer.Write(dcId);
  11.  
  12. var b = Encoding.UTF8.GetBytes(file_reference_base64);
  13. if (b.Length <= 253)
  14. {
  15.     writer.Write((byte)b.Length);
  16. }
  17. else
  18. {
  19.     writer.Write((byte)254);
  20.     writer.Write((byte)b.Length);
  21.     writer.Write((byte)(b.Length >> 8));
  22.     writer.Write((byte)(b.Length >> 16));
  23. }
  24.  
  25. writer.Write(b);
  26.  
  27. int j = b.Length <= 253 ? 1 : 4;
  28. while ((b.Length + j) % 4 != 0)
  29. {
  30.     writer.Write((byte)0);
  31.     j++;
  32. }
  33.  
  34. writer.Write(id_);
  35. writer.Write(access_hash_);
  36.  
  37. writer.Write((byte)30);
  38. writer.Write((byte)4);
  39. writer.Flush();
  40.  
  41. stream.Seek(0, System.IO.SeekOrigin.Begin);
  42.  
  43. var bytes = stream.ToArray();
  44. var result = new List<byte>();
  45.  
  46. for (int n = bytes.Length, i = 0; i < n; i++)
  47. {
  48.     result.Add(bytes[i]);
  49.     if (bytes[i] == 0)
  50.     {
  51.         byte cnt = 1;
  52.         while (cnt < 250 && i + cnt < n && bytes[i + cnt] == bytes[i])
  53.         {
  54.             cnt++;
  55.         }
  56.         result.Add(cnt);
  57.         i += cnt - 1;
  58.     }
  59. }
  60.  
Add Comment
Please, Sign In to add comment