[JavaScript] 纯文本查看 复制代码
{
"error_code": "44400",
"dns_ip": "unknown",
"system": "aosp_angler-eng 7.1.2 N2G48B eng.root.20200221.205546 test-keys",
"module": "30057",
"payload": "{\"system_version\":\"7.1.2\",\"package_type\":\"Main\",\"ssid\":\"\\\"xiaojun\\\"\",\"process\":\"com.xunmeng.pinduoduo\",\"HttpManagerErrorType\":\"20\",\"url\":\"https:\\/\\/meta.yangkeduo.com\\/\",\"network_operator\":\"\",\"thread_count\":\"18875\",\"net\":\"\",\"manufacture\":\"Huawei\",\"mem_info\":\"maxMemory 512.00 MB totalMemory 24.53 MB freeMemory 0 bytes\",\"disk\":\"79.0 24.00 GB\",\"exceptionStr\":\"javax.net.ssl.SSLPeerUnverifiedException: Certificate pinning failure!\\n Peer certificate chain:\\n sha256\\/b1b54697cb57877f039a80522adfdaa768126f3dd587f42946e9a440db2ddaa0: CN\u003d*.yangkeduo.com,OU\u003d技术部,O\u003d上海寻梦信息技术有限公司,ST\u003d上海市,C\u003dCN\\n sha256\\/daa05e6bb0de440f00219c8607ee1180d65b3c416cc7ff57824dc9fee25f68c9: C\u003dNZ,ST\u003dAuckland,L\u003dAuckland,O\u003dXK72 Ltd,OU\u003dhttps:\\/\\/charlesproxy.com\\/ssl,CN\u003dCharles Proxy CA (20 Jul 2021\\\\, DESKTOP-PLGJBD3)\\n Pinned certificates for meta.yangkeduo.com:\\n sha256\\/3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c\\n sha256\\/7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185\\n sha256\\/7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2\\n sha256\\/4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161\\n sha256\\/cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f\\n sha256\\/31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0\\n sha256\\/7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf\\n sha256\\/552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988\\n sha256\\/cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b\\n sha256\\/bec94911c2955676db6c0a550986d76e3ba005667c442c9762b4fbb773de228c\\n sha256\\/179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924\\n sha256\\/ca42dd41745fd0b81eb902362cf9d8bf719da1bd1b1efc946f5b4c99f42c1b9e\\n sha256\\/ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99\\n\\tat okhttp3.h.a(CertificatePinner.java:212)\\n\\tat okhttp3.h.a(CertificatePinner.java:157)\\n\\tat com.xunmeng.pinduoduo.basekit.http.c.a.a(PDDCertificatePinner.java:83)\\n\\tat okhttp3.internal.connection.c.a(RealConnection.java:323)\\n\\tat okhttp3.internal.connection.c.a(RealConnection.java:263)\\n\\tat okhttp3.internal.connection.c.a(RealConnection.java:155)\\n\\tat okhttp3.internal.connection.e.a(StreamAllocation.java:195)\\n\\tat okhttp3.internal.connection.e.a(StreamAllocation.java:130)\\n\\tat okhttp3.internal.connection.e.a(StreamAllocation.java:109)\\n\\tat okhttp3.internal.connection.a.a(ConnectInterceptor.java:42)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat okhttp3.internal.a.a.a(CacheInterceptor.java:93)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat okhttp3.internal.b.a.a(BridgeInterceptor.java:93)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.j.a(RetryAndFollowUpInterceptor.java:127)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.aimi.android.common.http.unity.internal.interceptor.b.a(CmtInterceptor.java:121)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.aimi.android.common.http.unity.internal.interceptor.e.a(GzipInterceptor.java:28)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.aimi.android.common.http.unity.internal.interceptor.g.a(RetryInterceptor.java:34)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.aimi.android.common.http.unity.internal.interceptor.f.a(LongLinkInterceptor.java:265)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.xunmeng.pinduoduo.arch.config.g$c.a(RemoteConfig.java:258)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.xunmeng.pinduoduo.basekit.http.manager.c$4.a(HttpManager.java:182)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.aimi.android.common.http.unity.internal.interceptor.c.a(CompletionInterceptor.java:95)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat com.aimi.android.common.http.unity.internal.interceptor.a.a(CircuitAPIInterceptor.java:35)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:111)\\n\\tat okhttp3.internal.b.g.a(RealInterceptorChain.java:77)\\n\\tat okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:202)\\n\\tat okhttp3.RealCall.execute(RealCall.java:75)\\n\\tat com.aimi.android.common.http.unity.a$a.execute(UnityCallFactory.java:181)\\n\\tat com.xunmeng.pinduoduo.arch.a.a.b.a.a(CallFactoryInterceptor.java:38)\\n\\tat com.xunmeng.pinduoduo.arch.a.a.a.a.a(RealInterceptorChain.java:41)\\n\\tat com.xunmeng.pinduoduo.arch.a.a.b.b.a(NormalizeInterceptor.java:19)\\n\\tat com.xunmeng.pinduoduo.arch.a.a.a.a.a(RealInterceptorChain.java:41)\\n\\tat com.xunmeng.pinduoduo.arch.a.f.d(VirtualCall.java:159)\\n\\tat com.xunmeng.pinduoduo.arch.a.f$a.b(VirtualCall.java:117)\\n\\tat com.xunmeng.pinduoduo.arch.a.a.a.run(NamedRunnable.java:20)\\n\\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)\\n\\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)\\n\\tat java.lang.Thread.run(Thread.java:761)\\n\",\"ram\":\"31.0 2.00 GB\",\"longlink_local_port\":\"45697\",\"longlink_local_ip\":\"192.168.101.98\",\"rooted\":\"yes\",\"battery\":\"\"}",
"pdd_id": "",
"platform": "Android",
"network": "1",
"app_version": "4.80.0",
"user_agent": "android Mozilla/5.0 (Linux; Android 7.1.2; AOSP on angler Build/N2G48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.100 Mobile Safari/537.36 phh_android_version/4.80.0 phh_android_build/ca003764fa4071d744febe019128f06c22706ee1 phh_android_channel/sm pversion/0",
"log_version": "1.0.0",
"user_id": "",
"android_id": "cf35bec7444f530a",
"model": "AOSP on angler"
}
如上面数据所示,大部分都是手机设备的基本信息以及APP版本号,基本没什么可解读的,都是读取了手机的设备属性,也没有进行其它加密,而payload字段里面又包含了一个json。
module 是一它的常量值,类型与接口类型,这也是个人猜测,因为这个值是每个不一样的tne.gif接口都会变,并且是在APP源码内的,如下图所示:
也就是说,猜测服务器是根据module来区分这个接口是什么接口。
payload该字段我们特别查看一下exceptionStr字段,翻译过来是抛出异常的信息,根据内容查看,里面记录了证书信息以及调用堆栈,并且细心的可以发现,这里因为我是用charles抓包,连charles的证书信息也被它所记录,也就是服务器是知道你在抓包的(如果它想)
这里相对t.gif记录的数据更全面,包含你的设备RAM信息,DISK信息
rooted该字段是判断你的设备是否root,我们可以通过源码来分析下它的判断方式
上图我们看到他通过h(),i(),j() 3种方式进行判断,我们逐一查看他的判断方式
第一种判断方式如下图:判断你的手机包是否是test-keys(调试机),因为笔者的机器正式该类型,所以被记录了yes
第二种判断方式如下图:它是通过文件进行判断。
第三种判断方式:由于代码没有完全还原,但是也不难看出是通过/system/xbin/which判断的
thread_count该字段因为是一个数字,也对它进行了查找,发现是读取的系统文件/proc/sys/kernel/threads-max获取到的值。
以上是tne.gif的部分数据解读,其它大部分数据都是明文的设备信息,至于为什么服务器会记录这么多次,并且触发条件是如何的,目前不得而知,但是这也可能是风控的一个重要要点之一,可能很多小伙伴觉得那我直接不触发这个接口不就好了,傻瓜,拼多多的账号肯定是跟设备关联的,如果服务器判断你目前用的账号没有上报服务器信息,那他就知道你是直接调用接口,直接ban你很正常的。
t.gif解读
[mw_shl_code=javascript,true]log_id=b2c411c9acf14e5094bcb0154f460b43
uin=
local_ip=192.168.101.98
page_sn=10002
internal_version=1573041766242
ssid=%22xiaojun%22
page_id=10002_1637757085176_1872686415
pid=16051
time=1637757085026
lite_mode=0
network_operator=
page_el_sn=402871
op=impr
install_token=d7900863-3701-47ec-ad98-bbc4cefd379a
page_name=index
manufacture=Huawei
ack_id=10002-lo_platform_login_benefit_wd-307-1%7Clm%3A0-id%3AdEG1637757085-
seq=1637757084189
network=1
platform=Android
app_version=4.80.0
module_id=lo_platform_login_benefit_wd
local_port=45697
global_id=307
user_id=
model=AOSP+on+angler
rctk=vxnLLiokfT97BWpRDY7Iqttol44En6nS3wTHvazejXs%3D0mXjt9nur3KYW2MYIwjFPIqkojGZZjuvL