Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }