其实我不打算发这篇文章了,听很多友友说uc的协议加密了。
那么这篇文章也没有意义了。
uc6.2的协议。好像java也用的是这个协议。
uc返回数据包用的是gz格式。
返回的数据包先找74 72 75 65 ff 记录下指针 为a
然后找 1f 18 纪录指针为b
b must > a
如果b小于a 继续找~
从b开始读到结尾-4 把这些内容 用gz解压就可以得到 uc格式的网页了。
很多懒得分析了
00 00 39 后面是对应的url /01 00 15结束
01 00 15 是你uc的id号 前面有文章说过这个id 这个id 对于在服务器存储cookies的id。
请求url 头部报文:
Java代码
- private HttpConnection a(String s1)
- {
- String s2 = s1;
- String as1[] = f.a(f.a(new f(s2, true)));
- StringBuffer stringbuffer = new StringBuffer();
- if(s1 != null && (s1.indexOf("uc_support_flash") != -1 || (s1.indexOf("down2.ucweb.com") != -1 || s1.indexOf("uc123.com") != -1 || s1.indexOf("uc123_pn") != -1 || s1.indexOf("uc_common_param") != -1) && s1.indexOf("dn=") == -1))
- {
- String s3 = s.j_int_static_fld + "x" + s.k_int_static_fld;
- stringbuffer.append("ss=").append(s3).append("&pf=").append("69");
- if(s1.indexOf("dn=") == -1)
- stringbuffer.append("&dn=").append(s.l != null ? s.l : "");
- if(s1.indexOf("uc_support_flash") != -1)
- {
- stringbuffer.append("&ver=").append("7.2.0");
- stringbuffer.append("&ua=").append(f.b(s.p, null));
- }
- if(b.b(s.f))
- stringbuffer.append("&cp=").append(f.b(s.f, null));
- }
- if(b.b(as1[0]) && s1.indexOf("uc_common_param") != -1 && (as1[0].endsWith(".uc.cn") || as1[0].endsWith(".ucweb.com") || as1[0].endsWith(".uc123.com")) && b.b(b.h))
- stringbuffer.append("&li=").append(f.b(b.h, null));
- if(stringbuffer.length() > 0)
- {
- s1 = stringbuffer.toString();
- if(b.a(as1[1]) || as1[1].indexOf('?') == -1)
- as1[1] = b.a(as1[1]) + '?' + s1;
- else
- as1[1] += '&' + s1;
- }
- return a(as1[0], as1[1], k_byte_fld, l_byte_fld, 0);
提交报文 没查 懒得分析了 有时间的自己找吧 你想分析数据包也可以 自己抓包 我也有几个数据包
想看java代码的 去找n.java 反编译ucjava版去吧。
最好2个集合看 分析的很快。
s60的手机进水了 没法wifi抓包了
n73还没有wifi 所有懒得研究了 不想用蓝牙抓包 麻烦。
想继续研究的可以找我 加我qq好了 我不常在线 有事留言 如果我在线会和你讨论的
提取出来的uc 请求服务器报文 跟我当年写的一样^_^
Java代码
- boolean flag5 = flag;
- String s1 = ((String) (obj));
- obj = this;
- Vector vector;
- (vector = new Vector()).addElement(new String[] {
- "sn", b.a(s.k_java_lang_String_static_fld)
- });
- vector.addElement(new String[] {
- "version", s.x
- });
- vector.addElement(new String[] {
- "platform", s.o
- });
- vector.addElement(new String[] {
- "useragent", b.d(s.p)
- });
- vector.addElement(new String[] {
- "last_server", flag5 ? s.u : ""
- });
- vector.addElement(new String[] {
- "reassign", String.valueOf(flag5 && b.b(s.u))
- });
- vector.addElement(new String[] {
- "m_bid", "999"
- });
- if(s.b)
- vector.addElement(new String[] {
- "m_" + b.d("ch"), b.d(s.d)
- });
- Object obj1;
- ((Vector) (obj1 = vector)).addElement(new String[] {
- "m_pfid", "69"
- });
- ((Vector) (obj1)).addElement(new String[] {
- "m_bseq", "10033015"
- });
- ((Vector) (obj1)).addElement(new String[] {
- "m_ss", s.j_int_static_fld + "x" + s.k_int_static_fld
- });
- if(b.b(s.q))
- ((Vector) (obj1)).addElement(new String[] {
- "m_imei", b.d(s.q)
- });
- ((Vector) (obj1)).addElement(new String[] {
- "m_dn", s.l
- });
- ((Vector) (obj1)).addElement(new String[] {
- "m_ssid1", s.w
- });
- vector = vector;
- obj1 = "assign";
- byte abyte0[] = a("assign", vector, ((String) (null)));
- if((flag1 = ((n) (obj)).a(s1, "/", abyte0)) != 1 && flag4)
- c(i1 + 20);
- if(flag1)
- flag1 = a();
- }











