ipad协议853版技术分析

微信网页版的通信协议,很多人都想自己写了个程序,实现微信的登录、初始化、读取联系人列表、发送微信、接收微信等功能,其实大家在网上看一下也有不少人做过这方面的内容。我主要用的工具是HTTPAnalyzer,我认为这个是目前分析http/https协议最好用的工具了,比wireshark和fiddler都清晰明确,推荐大家分析http/https协议内容使用这个工具。其实分析了协议自己再写代码就很容易了。

我们如何入手分析呢?
1.抓包
抓包显然是没有办法看到啥的,不过我们只关心短连接,所以我们需要一个环境来触发短连接的mmtls初始化,而且我们只关心mmtls,并不关心其他的信息,所以,我们可以利用一个早期版本,理由是,早期版本可以屏蔽掉长连接,而强制使用短连接。
2.算法
显然我们应该先对算法,有一些了解,甚至我们应该先阅读一下github上的tls1.3的实现,这样我们才能对tls1.3的答题轮廓有些印象,在我们逆向分析的过程中,省去很多的麻烦,所以我们应该先了解以下算法,包括以下算法的原理和使用。

ECDH(ecdh主要用于秘钥协商,签名验证)
AESGCM(aes gcm 带校验的aes加密算法,相比于之前的aes cbc要更安全)
hkdf扩展(hkdf扩展是用来扩展秘钥的)
sha256(哈希算法,基本上用于验证数据)
hmac(签名)
Hook

在微信的登录请求中,有个rqt(Reliability Qualification Test)算法,在微信风控中扮演着重要角色,根据这个算法,可以对登录微信的环境可靠性进行判断,做为是否是外挂的重要依据。当然,除了这个算法,24字段里面的那么多子字段也是风控的依据。7.0.x版本的rqt比较简单,8.0.x版本的rqt就比较复杂了,不过也是可以搞定的。

8.0.x的rqt算法,入口函数与7.0.x一样,也是先求md5值,再对md5进行处理。

接着进行魔改后的SHA*算法。

再接着,跟0x85来了一些运算。

最后,使用了类似7.0.x的处理,才得到最终结果。

最终结果,7.0.x的rqt值是以0x21开头,8.0.x的rqt值是以0x42开头。

因为对于如下式子


1
(r1 << 5 | key & 0x1f) << 24

7.0.x版本,r1=1, key=1,所以

1
1 << 5 | 1 & 0x1f) << 24 = 0x21000000

而对于8.0.x,r1 =2, key=2,所以

1
2 << 5 | 2 & 0x1f) << 24 = 0x42000000

可以看出来,算法难度比7.0.x版本高多了。

### DEAP 数据集中的跨频段矩阵处理 DEAP数据集是一个广泛应用于情感计算领域的重要资源,包含了由40名参与者观看音乐视频片段时记录下的EEG和其他生理信号[^2]。 对于跨频段矩阵处理,在情绪识别的研究中,通常会采用多种频率带宽来分析EEG信号。具体到DEAP数据集中,常见的做法是从原始时间序列提取不同频段(如delta, theta, alpha, beta 和 gamma波)的功率谱密度(PSD),并构建相应的特征向量或者协方差矩阵作为输入给后续模型。 #### 构建跨频段矩阵的方法 为了实现跨频段矩阵处理,可以按照如下方式: 1. **预处理阶段** - 对于每一段EEG信号,先去除工频干扰以及眼动伪迹等噪声。 2. **频域转换** - 使用短时傅里叶变换(STFT)或者其他适合的时间-频率分析工具将连续的EEG信号转化为离散的小波系数或频谱图形式。 3. **划分频段** - 根据标准定义好的边界值分离出各个感兴趣的频段范围内的能量分布情况。 4. **形成矩阵** - 将同一时间段内所有通道在同一频段的能量组合成一个对称正定矩阵(SPD matrix), 或者根据不同频段间的关系建立其他类型的关联性度量矩阵。 5. **应用几何平均或其他运算** - 如果涉及到多个样本间的比较,则可能还需要考虑如何合理地求取这些SPD矩阵集合上的统计特性,比如通过黎曼流形上的一些特定距离测度来进行聚类分析或是分类任务前的数据标准化工作。 ```python import numpy as np from scipy.signal import welch def compute_psd_matrix(eeg_data, fs=128., freq_bands=[(0.5, 4.), (4., 8.), (8., 12.), (12., 30.)]): """ 计算指定频段内的功率谱密度矩阵 参数: eeg_data : ndarray of shape (channels, samples) EEG数据数组 fs : float 采样率,默认为128Hz freq_bands: list of tuples 频段列表,默认包括 delta, theta, alpha, beta 返回: psd_matrices: dict with keys being the frequency band names and values are PSD matrices. 功率谱密度矩阵字典 """ n_channels = eeg_data.shape[0] fxx, pxx = welch(eeg_data, fs=fs) psd_matrices = {} for i, fb in enumerate(freq_bands): mask = (fxx >= fb[0]) & (fxx < fb[1]) filtered_pxx = pxx[:,mask].mean(axis=-1).reshape(n_channels, 1) # 形成对角线填充了各频道均值PSD值的矩阵 mat = np.zeros((n_channels, n_channels)) np.fill_diagonal(mat, filtered_pxx.flatten()) psd_matrices[f'band_{i}'] = mat return psd_matrices ``` 此代码展示了如何基于Welch方法估计每个电极位点在不同频段内的平均功率,并以此为基础创建一系列代表性的对角矩阵。实际应用场景下还可以进一步探索更复杂的连接模式表征手段。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值