public static WifiRespInfo DecodeWifiSearch(byte[] buff) { WifiRespInfo info = new WifiRespInfo(); int locIdx = 4; info.Magic = ConvertHelper.BytesToInt32(buff, 0, true); info.Code = (enumCommandType)buff[locIdx++]; int wifiIDLen = buff[locIdx++]; byte[] wifiIDByte = new byte[wifiIDLen]; Array.Copy(buff, locIdx, wifiIDByte, 0, wifiIDLen); locIdx += wifiIDLen; info.ID = ConvertHelper.BytesToString(wifiIDByte, Encoding.ASCII); int wifiVersionLen = buff[locIdx++]; byte[] wifiVersionByte = new byte[wifiVersionLen]; Array.Copy(buff, locIdx, wifiVersionByte, 0, wifiVersionLen); locIdx += wifiVersionLen; info.Version = ConvertHelper.BytesToString(wifiVersionByte, Encoding.ASCII); int wifiWebLen = buff[locIdx++]; byte[] wifiWebByte = new byte[wifiWebLen]; Array.Copy(buff, locIdx, wifiWebByte, 0, wifiWebLen); locIdx += wifiWebLen; info.Web = ConvertHelper.BytesToString(wifiWebByte, Encoding.ASCII); int wifiNameLen = buff[locIdx++]; byte[] wifiNameByte = new byte[wifiNameLen]; Array.Copy(buff, locIdx, wifiNameByte, 0, wifiNameLen); locIdx += wifiNameLen; info.Name = ConvertHelper.BytesToString(wifiNameByte, Encoding.ASCII); info.IP = string.Format("{0}.{1}.{2}.{3}", buff[locIdx++], buff[locIdx++], buff[locIdx++], buff[locIdx++]); info.NetMask = string.Format("{0}.{1}.{2}.{3}", buff[locIdx++], buff[locIdx++], buff[locIdx++], buff[locIdx++]); info.IsDhcp = buff[locIdx++] == 1; info.IPStatic = string.Format("{0}.{1}.{2}.{3}", buff[locIdx++], buff[locIdx++], buff[locIdx++], buff[locIdx++]); info.NetMaskStatic = string.Format("{0}.{1}.{2}.{3}", buff[locIdx++], buff[locIdx++], buff[locIdx++], buff[locIdx++]); info.NetGateStatic = string.Format("{0}.{1}.{2}.{3}", buff[locIdx++], buff[locIdx++], buff[locIdx++], buff[locIdx++]); info.DNS1 = string.Format("{0}.{1}.{2}.{3}", buff[locIdx++], buff[locIdx++], buff[locIdx++], buff[locIdx++]); info.DNS2 = string.Format("{0}.{1}.{2}.{3}", buff[locIdx++], buff[locIdx++], buff[locIdx++], buff[locIdx++]); byte[] wifiPort = new byte[2]; info.Port = ConvertHelper.BytesToInt16(buff, locIdx, true); locIdx += 2; info.IsHttps = buff[locIdx++] == 1; int wifiNOLen = buff[locIdx++]; byte[] wifiNOByte = new byte[wifiNameLen]; Array.Copy(buff, locIdx, wifiNOByte, 0, wifiNOLen); Array.Reverse(wifiNOByte); locIdx += wifiNOLen; info.Number = ConvertHelper.BytesToString(wifiNOByte, Encoding.ASCII); info.Type = buff[locIdx++]; return(info); }
public static void EncodeLogin2(out byte[] buff) { string name = "admin"; string pwd = string.Empty; int locIdx = 0; int sNameLen = 0, sPwdLen = 0; int nameLen = 0, pwdLen = 0, conLen = 0; sNameLen = name.Length + 1; sPwdLen = pwd.Length + 1; nameLen = (sNameLen + 7) / 8 * 8; pwdLen = (sPwdLen + 7) / 8 * 8; conLen = 1 + nameLen + 1 + pwdLen; byte[] byteName = new byte[nameLen]; for (int i = 0; i < name.Length; i++) { byteName[i] = (byte)name[i]; } byteName[name.Length] = (byte)0; byte[] bytePwd = new byte[pwdLen]; for (int i = 0; i < pwd.Length; i++) { bytePwd[i] = (byte)pwd[i]; } bytePwd[pwd.Length] = (byte)0; ConvertHelper.StringToBytes(pwd, Encoding.ASCII); Random rand = new Random(); for (int i = sNameLen; i < nameLen; i++) { byteName[i] = (byte)rand.Next(48, 125); } for (int i = sPwdLen; i < pwdLen; i++) { bytePwd[i] = (byte)rand.Next(48, 125); } byte[] content = new byte[conLen]; content[locIdx++] = (byte)(sNameLen); fish.Encode(byteName, nameLen, FISH_KEY); Array.Copy(byteName, 0, content, locIdx, nameLen); locIdx += nameLen; content[locIdx++] = (byte)(sPwdLen); fish.Encode(bytePwd, pwdLen, FISH_KEY); Array.Copy(bytePwd, 0, content, locIdx, pwdLen); NormalDataStruct data = new NormalDataStruct() { Code = enumCommandType.LOGIN2_REQ, contentLen = conLen, Content = content }; EncodeData(data, out buff); //byte[] bf1 = new byte[] { 0xd0, 0xab, 0x22, 0x8a, 0x50, 0x35, 0x33, 0x11 }; //byte[] bf2 = new byte[] { 0x92, 0x5c, 0x81, 0xf6, 0x8d, 0xdf, 0xfb, 0x60 }; //byte[] bf3 = new byte[] { 0xed, 0xdf, 0xd8, 0x9e, 0x11, 0xce, 0x7b, 0xd5 }; //fish.Decode(bf1, nameLen, FISH_KEY); //fish.Decode(bf2, nameLen, FISH_KEY); //fish.Decode(bf3, nameLen, FISH_KEY); }