Recently I started working with telegram api. At the first stage, I made a request for receipt auth_key. This is my C # code:
Int64 auth_key_id = 0;
Int64 message_id = DateTime.Now.Ticks;
byte[] message_type = {120, 151, 70, 96};
Int32 data_lenght;
byte[] nonce = new byte[16];
Random rand = new Random(1);
rand.NextBytes(nonce);
List<byte> dataList = new List<byte>();
dataList.AddRange(message_type);
dataList.AddRange(nonce);
byte[] data = dataList.ToArray();
List<byte> packetList = new List<byte>();
packetList.AddRange(BitConverter.GetBytes(auth_key_id));
packetList.AddRange(BitConverter.GetBytes(message_id));
data_lenght = data.Length;
packetList.AddRange(BitConverter.GetBytes(data_lenght));
packetList.AddRange(data);
byte[] packet = packetList.ToArray();
try
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect("149.154.167.40", 443);
if (s.Connected)
{
IPEndPoint remote = s.RemoteEndPoint as IPEndPoint;
Console.WriteLine("Connected To : "+remote.Address+":"+remote.Port);
}
int sendLength = s.Send(packet);
Console.WriteLine("Send " +sendLength+" Byte(s)");
byte[] received = new byte[128];
int recLen = s.Receive(received);
Console.WriteLine("Received " + recLen + " Byte(s)");
Console.ReadKey();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
I capture send data with wirehark and get this payload:
0000 10 fe ed f4 8e 97 20 6a 8a 54 28 95 08 00 45 00
0010 00 50 02 a3 40 00 80 06 00 00 c0 a8 01 64 95 9a
0020 a7 28 23 e3 01 bb 0e 4d aa 3b 61 c3 01 b6 50 18
0030 01 01 ff 11 00 00 00 00 00 00 00 00 00 00 af 20
0040 82 e0 b4 08 d3 08 14 00 00 00 78 97 46 60 46 d0
0050 86 82 40 97 e4 a3 95 cf ff 46 69 9c 73 c4
The bold part is my payload, and according to the telegram documents, it seems correct, but I do not get any response from the server.