Fix unencrypted padding length in Padded Intermediate

(official doc says 0..15 bytes, but server & Android app sends 0..256 bytes)
This commit is contained in:
Wizou 2023-07-05 05:03:08 +02:00
parent d50ac0ba51
commit 472b10f155
2 changed files with 3 additions and 3 deletions

View file

@ -392,7 +392,7 @@ namespace WTelegram
if ((msgId & 1) == 0) throw new WTException($"Invalid server msgId {msgId}");
int length = reader.ReadInt32();
dataLen -= 20;
if (length > dataLen || length < dataLen - (_paddedMode ? 15 : 0))
if (length > dataLen || dataLen - length > (_paddedMode ? 256 : 0))
throw new WTException($"Unexpected unencrypted/padding length {dataLen} - {length}");
var obj = reader.ReadTLObject();
@ -1283,7 +1283,7 @@ namespace WTelegram
}
if (_paddedMode) // Padded intermediate mode => append random padding
{
var padding = new byte[_random.Next(16)];
var padding = new byte[_random.Next(_dcSession.AuthKeyID == 0 ? 257 : 16)];
RNG.GetBytes(padding);
writer.Write(padding);
}

View file

@ -23,7 +23,7 @@
<RepositoryType>git</RepositoryType>
<PackageTags>Telegram;MTProto;Client;Api;UserBot;TLSharp</PackageTags>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageReleaseNotes>$(ReleaseNotes.Replace("\"", "%22").Replace("|", "%0D%0A").Replace(" - ","%0D%0A- ").Replace(" ", "%0D%0A%0D%0A"))</PackageReleaseNotes>
<PackageReleaseNotes>$(ReleaseNotes.Replace("\"", "''").Replace("|", "%0D%0A").Replace(" - ","%0D%0A- ").Replace(" ", "%0D%0A%0D%0A"))</PackageReleaseNotes>
<NoWarn>0419;1573;1591;NETSDK1138</NoWarn>
<DefineConstants>TRACE;OBFUSCATION</DefineConstants>
</PropertyGroup>