往事依依,随风而行。淡忘过去的一切,在风中迎接新的希望。

uc的协议

其实我不打算发这篇文章了,听很多友友说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代码
  1. private HttpConnection a(String s1)  
  2.     {  
  3.         String s2 = s1;  
  4.         String as1[] = f.a(f.a(new f(s2, true)));  
  5.         StringBuffer stringbuffer = new StringBuffer();  
  6.         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))  
  7.         {  
  8.             String s3 = s.j_int_static_fld + "x" + s.k_int_static_fld;  
  9.             stringbuffer.append("ss=").append(s3).append("&pf=").append("69");  
  10.             if(s1.indexOf("dn=") == -1)  
  11.                 stringbuffer.append("&dn=").append(s.l != null ? s.l : "");  
  12.             if(s1.indexOf("uc_support_flash") != -1)  
  13.             {  
  14.                 stringbuffer.append("&ver=").append("7.2.0");  
  15.                 stringbuffer.append("&ua=").append(f.b(s.p, null));  
  16.             }  
  17.             if(b.b(s.f))  
  18.                 stringbuffer.append("&cp=").append(f.b(s.f, null));  
  19.         }  
  20.         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))  
  21.             stringbuffer.append("&li=").append(f.b(b.h, null));  
  22.         if(stringbuffer.length() > 0)  
  23.         {  
  24.             s1 = stringbuffer.toString();  
  25.             if(b.a(as1[1]) || as1[1].indexOf('?') == -1)  
  26.                 as1[1] = b.a(as1[1]) + '?' + s1;  
  27.             else  
  28.                 as1[1] += '&' + s1;  
  29.         }  
  30.         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代码
  1. boolean flag5 = flag;  
  2.             String s1 = ((String) (obj));  
  3.             obj = this;  
  4.             Vector vector;  
  5.             (vector = new Vector()).addElement(new String[] {  
  6.                 "sn", b.a(s.k_java_lang_String_static_fld)  
  7.             });  
  8.             vector.addElement(new String[] {  
  9.                 "version", s.x  
  10.             });  
  11.             vector.addElement(new String[] {  
  12.                 "platform", s.o  
  13.             });  
  14.             vector.addElement(new String[] {  
  15.                 "useragent", b.d(s.p)  
  16.             });  
  17.             vector.addElement(new String[] {  
  18.                 "last_server", flag5 ? s.u : ""  
  19.             });  
  20.             vector.addElement(new String[] {  
  21.                 "reassign", String.valueOf(flag5 && b.b(s.u))  
  22.             });  
  23.             vector.addElement(new String[] {  
  24.                 "m_bid""999"  
  25.             });  
  26.             if(s.b)  
  27.                 vector.addElement(new String[] {  
  28.                     "m_" + b.d("ch"), b.d(s.d)  
  29.                 });  
  30.             Object obj1;  
  31.             ((Vector) (obj1 = vector)).addElement(new String[] {  
  32.                 "m_pfid""69"  
  33.             });  
  34.             ((Vector) (obj1)).addElement(new String[] {  
  35.                 "m_bseq""10033015"  
  36.             });  
  37.             ((Vector) (obj1)).addElement(new String[] {  
  38.                 "m_ss", s.j_int_static_fld + "x" + s.k_int_static_fld  
  39.             });  
  40.             if(b.b(s.q))  
  41.                 ((Vector) (obj1)).addElement(new String[] {  
  42.                     "m_imei", b.d(s.q)  
  43.                 });  
  44.             ((Vector) (obj1)).addElement(new String[] {  
  45.                 "m_dn", s.l  
  46.             });  
  47.             ((Vector) (obj1)).addElement(new String[] {  
  48.                 "m_ssid1", s.w  
  49.             });  
  50.             vector = vector;  
  51.             obj1 = "assign";  
  52.             byte abyte0[] = a("assign", vector, ((String) (null)));  
  53.             if((flag1 = ((n) (obj)).a(s1, "/", abyte0)) != 1 && flag4)  
  54.                 c(i1 + 20);  
  55.             if(flag1)  
  56.                 flag1 = a();  
  57.         }  

 

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):