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); }
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)); }