创建电报 auth_key

2024-03-25

我最近开始使用 telegram api。在第一阶段,我提出了接收请求auth_key。 这是我的 C# 代码:

// auth_key_id in unencrypted message is ZERO
Int64 auth_key_id = 0;
// this is current time stamp that used as message id
Int64 message_id = DateTime.Now.Ticks;
// message type for req_pq is 0x60469778 in big-ending format
byte[] message_type = {120, 151, 70, 96};
// this is data lenght, it determind in run time
Int32 data_lenght;
// data is combined message_type and an int128 bit value called nonce
// nonce create by random
byte[] nonce = new byte[16];
Random rand = new Random(1);
rand.NextBytes(nonce);
// make data
List<byte> dataList = new List<byte>();
dataList.AddRange(message_type);
dataList.AddRange(nonce);
byte[] data = dataList.ToArray();
// make packet
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);
}

我通过wireshark捕获发送数据并获取此有效负载:

0000 10 馈送 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 后 11 00 0000 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 46 69 9c 73 c4

粗体部分是我的有效负载,根据电报文档,它似乎是正确的,但我没有从服务器得到任何响应。


备注:我对 Telegram API 一无所知。

首先,您要连接到149.154.167.40:443。这是 HTTPS 端点的默认端口,这意味着您的客户端需要“讲”SSL 才能进行通信。

基本上发生的情况是,您连接到端口,服务器等待有效的 SSL 握手。但您实际发送的是实际内容本身。服务器注意到您正在发送一些内容,但由于收到的字节数少于有效的 SSL 握手,因此它会一直等待,直到您发送更多字节。

相反,您想要做的是“说出”此 SSL 协议。 SSL 使您发送和/或接收的内容能够被加密。这可以通过使用来完成SSL流 https://msdn.microsoft.com/en-us/library/system.net.security.sslstream(v=vs.110).aspx, 例如。这是稍微高一点的级别,但它会阻止您实现 SSL 实现。

另一方面,您可以尝试连接到端口80,如果可用,但这会禁用加密。我不建议这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建电报 auth_key 的相关文章

随机推荐

  • Wymeditor 跨子域。 (跨站点权限问题。)

    我在 sub1 domain com 上有 wymeditor 它是通过 sub2 domains com 上的页面访问的 这行给出了一个错误 var styles this doc styleSheets 0 权限被拒绝http remo
  • 如何解决这个奇怪的Python编码问题?

    我正在对来自网络的字符串语料库执行一些 NLP 任务 正如您所期望的 存在编码问题 以下是一些示例 they don t serve sushi the apostrophe in don t is not standard but xe2
  • 未捕获的 PHP 异常 Doctrine\ORM\ORMException:“未知实体命名空间别名‘AppBundle’。”

    我刚刚开始使用 Composer 开始我的第一个项目 并想为其设置数据库和类 然而我被困住了 我在 prod log 中收到上述错误 我在这里遵循了本教程 http symfony com doc current book doctrine
  • printf 转换 long long 时出现问题

    我一直在研究一个项目欧拉问题 该问题本质上迫使您使用具有大存储空间的数据类型 include
  • Eclipse 未找到添加到构建路径的类(Java 动态 Web 项目)

    我正在接手学校的一个网络项目 我正在尝试在 eclipse 中部署该项目 该项目使用了一组库 即javax mail com sun mail org joda and org apache 该项目无法编译 因为它无法找到这些 我将它们放在
  • PowerShell 连接到 Postgres DB

    您能否告知是否有一种方法可以从 PowerShell 连接到 Postgres SQL DB 而无需安装任何数据库驱动程序 我正在寻找能够仅使用 NET 数据库功能进行连接的解决方案 谢谢 Matthew 根本不需要客户端驱动程序 您只需执
  • tidyverse 计算多列中每行的排名

    我有以下数据框 dat lt data frame id c a b c d x1 c 1 3 5 7 x2 c 4 2 6 0 x3 c 2 2 5 9 我现在想计算排名per row跨越我的三个 x 列 并希望将该结果存储到我的dat数
  • 自动将进入/退出功能日志添加到项目中

    我有一个第三方源代码 我必须对其进行调查 我想查看函数的调用顺序 但我不想浪费时间输入 printf Entered into s FUNCTION and printf Exited from s FUNCTION 对于每个函数 我也不想
  • mongodb获取计数而不重复查找

    在 MongoDb 中执行查询时 我需要获取所有匹配项的总数 以及作为有限 分页子集的文档本身 我可以通过两个查询来实现这一目标 但我不知道如何通过一个查询来实现这一目标 我希望有一个 mongo 功能 在某种意义上相当于 SQL CALC
  • 使用 Angularjs 将视图状态存储在 URL 中

    将视图状态存储为 URL 的一部分的一般共识是什么 如果有 Angularjs我该如何去做呢 我有一个相当复杂的视图 路线 有许多要设置的过滤器 选项卡等 这些都会导致视图状态 我看到了将所有这些视图组件的状态存储为 URL 的一部分的优势
  • 如何使用 python sub 删除

    我有一个 html 文件 我想用空格替换空段落 mystring This p p p is a test p p p p p result mystring sub p p nbsp 这是行不通的 Please 不要尝试使用正则表达式解析
  • 使用简单 PHP 代理的跨域 getJson 请求

    您好 我正在尝试从仅返回 JSON 而不是 JSONP 的 api 获取数据 每次我尝试以 JSONP 方式连接数据时 它都不起作用 因为我不期望 JSON 所以 我想我必须使用 PHP 代理来解决跨域问题 以便我可以解释 JSON 请求
  • 如何从 org.apache.spark.mllib.linalg.VectorUDT 转换为 ml.linalg.VectorUDT

    我正在使用 Spark cluster 2 0 我想将向量转换为org apache spark mllib linalg VectorUDT to org apache spark ml linalg VectorUDT Import L
  • 根据特定列从列表中删除重复行

    我相信这类似于this https stackoverflow com questions 25324066 distinct a list of records based on two column using groupby但我无法应
  • Rails Devise http 验证移动设备

    我正在尝试向我的服务器 ruby on Rails 应用程序验证 Android 客户端应用程序 该应用程序使用 Devise gem 但我尝试过 http 身份验证 并发布请求进行身份验证 并且服务器仅对任何给定的用户名 密码响应 200
  • 将具有不同列的大数据文件合并为一个大文件

    我有 N 个制表符分隔的文件 每个文件都有一个标题行 说明列的名称 有些列是所有文件共有的 但有些列是唯一的 我想将所有文件合并成一个包含所有相关标头的大文件 Example gt cat file1 dat a b c 5 7 2 3 9
  • 为 matplotlib 文本设置固定位置

    虽然有几个问题与我的问题类似 但几乎所有问题都与文本框 图例和注释有关 使用循环 我想显示 32 个属性的具体信息 左侧的直方图和右侧的统计信息 仅处理一个属性非常简单 我将 x y 设置为文本位置 就是这样 Histogram sns d
  • MKMapView释放内存

    我遵循了几个SO问题中提供的建议 例如this one https stackoverflow com questions 20138419 stop ios 7 mkmapview from leaking memory 为了释放MKMa
  • 使用批处理变量重命名文件

    我有以下代码 set DATE date echo DATE set DAY DATE 0 2 echo DAY rename file09 txt file DAY 09 txt pause 它应该重命名一个文本文件并将该月的日期放入文件
  • 创建电报 auth_key

    我最近开始使用 telegram api 在第一阶段 我提出了接收请求auth key 这是我的 C 代码 auth key id in unencrypted message is ZERO Int64 auth key id 0 thi