Example #1
0
        public static NewInitRequest CreateNewInitRequestEntity(uint uin, string sessionKey, string userName, string deviceID, string OSType, byte[] init, byte[] max)
        {
            BaseRequest br = CreateBaseRequestEntity(deviceID, sessionKey, uin, OSType, 3);

            NewInitRequest.Builder nirb = new NewInitRequest.Builder();
            nirb.SetBase(br);
            nirb.SetUserName(userName);
            nirb.SetLanguage("zh_CN");

            SKBuiltinBuffer_t.Builder csb = new SKBuiltinBuffer_t.Builder();

            if (init == null)
            {
                csb.SetILen(0);
                csb.SetBuffer(ByteString.CopyFrom(new byte[0] {
                }));
            }
            else
            {
                csb.SetILen(init.Length);
                csb.SetBuffer(ByteString.CopyFrom(init));
            }
            SKBuiltinBuffer_t cs = csb.Build();

            nirb.SetCurrentSynckey(cs);

            SKBuiltinBuffer_t.Builder msb = new SKBuiltinBuffer_t.Builder();
            if (max == null)
            {
                msb.SetILen(0);
                msb.SetBuffer(ByteString.CopyFrom(new byte[0] {
                }));
            }
            else
            {
                msb.SetILen(max.Length);
                msb.SetBuffer(ByteString.CopyFrom(max));
            }
            SKBuiltinBuffer_t ms = msb.Build();

            nirb.SetMaxSynckey(ms);

            NewInitRequest nir = nirb.Build();

            return(nir);
        }
Example #2
0
        public static void NewInit(MMClient mm)
        {
            NewInitRequest.Builder init = new NewInitRequest.Builder();
            byte[] sessionKey           = mm.AESKey.ToByteArray(16, 2);



            SKBuiltinBuffer_t.Builder Bmaxsync = new SKBuiltinBuffer_t.Builder();
            Bmaxsync.SetBuffer(ByteString.CopyFrom(new byte[0]));
            Bmaxsync.SetILen(0);
            SKBuiltinBuffer_t maxsynckey = Bmaxsync.Build();

            SKBuiltinBuffer_t.Builder sync = new SKBuiltinBuffer_t.Builder();
            sync.SetBuffer(ByteString.CopyFrom(new byte[0]));
            sync.SetILen(0);
            SKBuiltinBuffer_t synckey = sync.Build();

            BaseRequest bBase = GetBasePack(sessionKey, mm.uin, 3);

            init.SetBase(bBase);
            init.SetLanguage("zh_CN");
            init.SetUserName(mm.wxid);
            init.SetMaxSynckey(maxsynckey);
            init.SetCurrentSynckey(synckey);
            NewInitRequest initPack = init.Build();

            // byte[] buf = initPack.ToByteArray();
            // Console.WriteLine(initPack.ToString());
            // byte[]senddata =  mm.ShortLinkPack((MMPro.MM.CGI_TYPE)139, buf);
            // IntPtr AESpushstr = IntPtr.Zero;
            // byte[]afterC =  MyFuckSSL.AesEncodeComprese(buf, buf.Length, sessionKey, AESpushstr);
            //   IntPtr pushstr = IntPtr.Zero;
            // byte[]head = MyFuckSSL.AesHeader((int)mm.uin, mm.cookie, mm.cookie.Length, 139, buf.Length, afterC.Length,pushstr);
            //   var senddata = head.Concat(afterC).ToArray();
            byte[] senddata = null;
            senddata = mm.MakeAESHead(initPack.ToByteArray(), (MMPro.MM.CGI_TYPE) 139);
            ChangeType.Add4Bytes(ref senddata, initPack.ToByteArray());
            Console.WriteLine(ChangeType.ToHexString(senddata));
            byte[] retbuf = null;
            WeChatPost(mm.shortLink + "/cgi-bin/micromsg-bin/newinit", senddata, ref retbuf);
            Console.WriteLine("初始化包已发送");
            Console.WriteLine(ChangeType.ToHexString(retbuf));
        }