闲社服务运行正常AI智能体自动化平台
t

Teamgram MTProto协议

技能标识:teamgram-mtproto-protocol

Documents the MTProto protocol handling layer in Teamgram Server, including handshake, AES-IGE decryption, QuickAck, auth_key caching, and message forwarding to session service. Reference-only knowledge skill for developers working on Telegram-compatible backends.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.0.1
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

Teamgram MTProto协议

Teamgram 服务器中的 MTProto 协议层

技能类型

这是一个参考/知识技能。 它不包含任何可执行代码。它记录了 Teamgram 服务器(开源,Apache-2.0 许可)的 MTProto 协议处理内部机制,供需要理解、调试或扩展协议层的开发者使用。

概述

KHF 客户端和 Teamgram 服务器通过 Telegram 的 MTProto 二进制协议进行通信。Teamgram 网关层(gnetway)执行 3 个关键操作:

  1. 1. 握手 / authkey 生成(未认证阶段:authkey_id=0 -> 握手)
  2. 认证消息解密(AES-IGE)
  3. 通过 gRPC 将解密后的负载(TLMessage2.Object)转发到会话服务

运行时环境(适用于 Teamgram 服务器运维人员)

如果你正在部署 Teamgram 服务器(不仅仅是阅读此技能),MTProto 层需要:

组件用途配置
gnetway 服务TCP/WS 网关,监听端口 10443/5222/11443app/interface/gnetway/etc/gnetway.yaml
session 服务
管理认证会话,路由 RPC | app/interface/session/etc/session.yaml |
| MySQL | 存储 authkey 记录(authkeys、authkeyinfos 表) | 在服务 YAML 文件中配置 |
| Redis | 缓存 auth_key 以便快速查找 | 在服务 YAML 文件中配置 |
| etcd | gnetway 和 session 之间的服务发现 | YAML 配置中的 etcd.hosts |

阅读或安装此技能无需任何凭据。 上表仅供实际操作 Teamgram 服务器时参考。

核心数据结构

解密后的数据结构是 mtproto.TLMessage2,其 Object 字段包含特定的 TL RPC 调用(例如 auth.sendCode、messages.sendMessage 等)。

QuickAck 机制

gnetway 实现了 QuickAck 令牌计算。ACK 必须通过编解码器编码,以避免混淆的 CTR 计数器不同步(否则 Android 客户端将在 decryptServerResponse 时失败)。

参考函数(来自 teamgram-server 中的 app/interface/gnetway/internal/server/gnet/servergnet.go:298-305):

go
func computeQuickAckToken(authKey []byte, encryptedData []byte) uint32 {
h := sha256.New()
h.Write(authKey[88 : 88+32])
h.Write(encryptedData)
var sum [32]byte
h.Sum(sum[:0])
return binary.LittleEndian.Uint32(sum[:4]) | 0x80000000
}

加密消息处理流程

  1. 1. 通过 authKey.AesIgeDecrypt 解密
  2. 从解密后的负载头部提取:salt、sessionId、msgId
  3. 通过 SessionDispatcher.SendData(gRPC)将 payload[16:] 转发到会话服务

auth_key 缓存与 QueryAuthKey

当 connContext 缺少 authKey 时,gnetway 异步调用会话服务的 QueryAuthKey RPC,然后在收到密钥后继续执行 onEncryptedMessage。

密钥管理说明: authkeys 在 DH 握手期间生成,存储在 MySQL(authkeys 表)中,并缓存在 Redis 中。它们永远不会暴露在服务器进程之外。gnetway 服务仅在活动连接期间在内存中持有密钥。

KHF 客户端协议常量(必须与服务器匹配)

从 KHF 客户端源代码中提取:

  • - TLRPC.LAYER = 222
  • BuildVars.APPID = 4
  • BuildVars.APPHASH = 014b35b6184100b085b0d0572f9b5103

这些是公开的应用程序标识符,而非机密信息。它们必须在客户端和服务器之间匹配,以确保 TL 模式兼容性。

重要说明

  • - QuickAck 必须通过编解码器编码,否则混淆的 CTR 计数器将不同步
  • authkeyid=0 的消息走握手流程;非零的消息走解密流程
  • AES-IGE 解密后,负载的前 16 个字节是 salt+sessionId,之后是 TLMessage2 数据

源代码参考

此技能中引用的所有代码均来自开源 Teamgram 服务器项目:

  • - 仓库:https://github.com/teamgram/teamgram-server
  • 许可证:Apache-2.0
  • 网关代码:app/interface/gnetway/
  • 会话代码:app/interface/session/
  • MTProto 编解码器:mtproto/ 包

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 teamgram-mtproto-protocol-1776080540 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 teamgram-mtproto-protocol-1776080540 技能

通过命令行安装

skillhub install teamgram-mtproto-protocol-1776080540

下载

⬇ 下载 teamgram-mtproto-protocol v1.0.1(免费)

文件大小: 2.98 KB | 发布时间: 2026-4-15 14:37

v1.0.1 最新 2026-4-15 14:37
Added security metadata, source references, runtime environment docs, and credential declarations to address ClawHub security review
返回顶部