起因:
最近seckill貌似很火,不过看分享的大多是 网页版,所以想着分析下app看能否实现,在某东app 抓包过程中发现 submitOrder 过程中有一处加密是 jwData ,现在简单的进行定位分析,
看加密格式,明显是 base64编码过后的,现在先定位下关键字
定位到拼接明文的地方,格式是 lng + "_" + lat + "_" + networkType + "_null" 之后再传入下层处理
可以看到加密算法应该就是 Des了 上面一串应该是秘钥,继续进入下一层
定位到这里基本都清楚了,明文秘钥以及IV 最终自己使用Java进行简单实现:
[Java] 纯文本查看 复制代码 private static final String DES = "DESede";
public static final byte[] IV_BYTES = {0, 0, 0, 0, 0, 0, 0, 0};
private static final String PADDING = "DESede/CBC/PKCS5Padding";
public static byte[] encrypt(byte[] bArr, byte[] bArr2, byte[] bArr3) throws Exception {
if (bArr3 == null) {
bArr3 = IV_BYTES;
}
SecretKey generateSecret = SecretKeyFactory.getInstance(DES).generateSecret(new DESedeKeySpec(bArr2));
IvParameterSpec ivParameterSpec = new IvParameterSpec(bArr3);
Cipher instance = Cipher.getInstance(PADDING);
instance.init(1, generateSecret, ivParameterSpec);
return instance.doFinal(bArr);
}
结果是:0ZFXGMj9AdZz/7Lh5gug5gJcT8vKYzxULXnWwrYlh8Q= 和 抓包得到的 jwData一致,至此,完美搞定此加密参数
首发:吾爱
|