往事依依,随风而行。淡忘过去的一切,在风中迎接新的希望。
浏览模式: 标准 | 列表 | 无广告2010年07月的文章

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.         }  

 

带有后门的加密算法

最及闲着无聊,正在写一个带后门的加密算法,目前写的差不多了。
算法就不发了免得别人嘲笑(本人学艺不精呀^_^)。

不过会提供一下大概的思路。

好像这种带有后门的加密算法在网上应该有,不过流传不广。应该是作为某个组织内部发布给外部用户的。因为要监视用户的信息哈哈。很有天朝的特色。

好了不多说了直接给出算法的一些概况吧。

 

加密算法我选用的是32bits密匙TEA算法,比较好用。

TEA算法只能1对1解密,不存在公匙和密匙。

在服务器和用户之间用起来很不错。安全,但是却给监听带来了一些难读。虽然可以从服务器的数据库中读出密匙,但是如果2用户之间利用这个传送就不能截取了,因为没人知道密匙。

所以我就蛋疼的写了这个算法。

XX XX  ~ XX XX ~xx

id |后门密匙| 密文部分


其实算法也不难 就是把密匙经过我写的一个算法加密存储在密文的前面。

对于任意1个知道后门密匙加密算法的人来所都可以把这个数据包解开。

id就是加密算法的种子。 利用这个种子对密匙加密。

密匙加密算法用的是 discuz商业版的算法。

很偷懒 php实现。

写的乱死了

没了

over

 

 

 

Tags: 后门, 加密算法