【发布时间】:2015-01-11 19:11:24
【问题描述】:
最近,我一直在使用Charles 对我的 iPhone 进行很多 MITM 攻击。我一直渴望更好地理解的许多应用程序很容易进行逆向工程,只需使用cURL 来模拟发送到服务器的请求。然而,其他人需要一个签名,我猜它使用一个用于生成有效负载散列的密钥。当我不久前对 Instagram 的 API 进行逆向工程时,它变成了这样
function GenerateSignature($data) {
return hash_hmac('sha256', $data, 'b4a23f5e39b5929e0666ac5de94c89d1618a2916');
}
$data = '{"device_id":"'.$device_id.'","guid":"'.$guid.'","password":"'.$pass.'","username":"'.$username.'","email":"'.$email.'","_csrftoken":"c3a1648209b1eeefd7bd8d404211be5e", "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}';
$sig = GenerateSignature($data);
$new_data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4';
然后,显然查询字符串将与请求一起发送到服务器。但是,我似乎无法使用 Charles 找到我真正感兴趣的应用程序的 API 密钥。我的 iPhone 已越狱,但我不太确定在 var/mobile/applications 文件夹中的何处查找API 密钥?有任何想法吗?
【问题讨论】:
-
如果应用中有密钥,那么您需要使用标准工具集 - 反汇编、散列方法上的断点或确定正在使用的密钥的请求。
-
详细说明。因为,我查看了请求(所有请求都有签名),但似乎找不到密钥。
-
老兄,这是工作。您必须将代码回溯到生成签名的位置,然后从中提取。
-
你解决了吗?
标签: iphone reverse-engineering