Exemplo n.º 1
0
        public static void ReadRegKey(RegOperate operate)
        {
            string RegPath;

            switch (operate)
            {
            case RegOperate.Password:
                RegPath = RegRootPath[0];
                RegPath = Set6432NodePath(RegPath);
                byte[]        RegData   = (byte[])Registry.LocalMachine.OpenSubKey(RegPath).GetValue("Knock1");
                List <byte>   LPassword = new List <byte>();
                List <byte>   b         = new List <byte>();
                StringBuilder strb      = new StringBuilder();
                for (int i = 0; i < RegData.Length; i += 4)
                {
                    byte[] data = BitConverter.GetBytes(BitConverter.ToUInt32(RegData, i) ^ 0x50434C45 ^ 0x454C4350);
                    for (int j = 0; j < data.Length; j++)
                    {
                        LPassword.Add(data[j]);
                    }
                }
                for (int i = 0; i < LPassword.Count; i++)
                {
                    if ((LPassword[i] | LPassword[i + 1]) != 0)
                    {
                        b.Add(LPassword[i]);
                    }
                    else
                    {
                        b.Add(0x00);
                        break;
                    }
                }
                string Password = Encoding.GetEncoding("UTF-8").GetString(b.ToArray()).Replace("\0", "");

                //for (int i = 0; i < RegData.Length; i += 4)
                //{
                //    Password.Add(BitConverter.ToUInt32(RegData, i) ^ 0x50434c45 ^ 0x454c4350);
                //}
                //for (int i = 0; i < Password.Count; i++)
                //{
                //    byte[] byte4 = BitConverter.GetBytes(Password[i]);

                //    for (int j = 0; j < byte4.Length; j++)
                //    {
                //        DecPassword.Add(byte4[j]);
                //    }
                //}
                //DecPassword.Reverse();
                //byte[] a = DecPassword.ToArray();
                //for (int i = 0; i < a.Length; i++)
                //{

                //}
                break;

            default:
                break;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 注册表操作测试
        /// </summary>
        private void RegeditOperateTest()
        {
            PrintLogLn(MsgType.Info, "检查注册表项存在: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");
            if (!RegOperate.CF_ExistSubItem(ERegDomain.LocalMachine, "SOFTWARE\\ItemTester\\"))
            {
                PrintLogLn(MsgType.Info, "不存在注册表项: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");

                if (RegOperate.CF_CreateSubItem(ERegDomain.LocalMachine, "SOFTWARE\\ItemTester\\"))
                {
                    PrintLogLn(MsgType.Success, "创建注册表项成功: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");
                }
                else
                {
                    PrintLogLn(MsgType.Error, "创建注册表项失败: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");
                }
            }
            else
            {
                PrintLogLn(MsgType.Info, "存在注册表项: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");
            }

            PrintLogLn(MsgType.Info, "检查注册表键值名称存在: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\RegTester");
            if (!RegOperate.CF_ExistRegeditKey(ERegDomain.LocalMachine, "SOFTWARE\\ItemTester\\", "RegTester"))
            {
                PrintLogLn(MsgType.Info, "不存在注册表键值名称: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\RegTester");
            }
            else
            {
                PrintLogLn(MsgType.Info, "存在注册表键值名称: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");
            }

            string value = GetRandomString(10);

            PrintLogLn(MsgType.Info, $"生成随机字符串: {value}");

            if (RegOperate.CF_WriteRegeditKey(ERegDomain.LocalMachine, "SOFTWARE\\ItemTester\\", "RegTester", ERegValueKind.String, value))
            {
                PrintLogLn(MsgType.Success, $"写入注册表键值成功: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\RegTester -> {value}");
            }
            else
            {
                PrintLogLn(MsgType.Error, $"写入注册表键值失败: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\RegTester -> {value}");
            }

            string result = RegOperate.CF_ReadRegeditKey(ERegDomain.LocalMachine, "SOFTWARE\\ItemTester\\", "RegTester") as string;

            PrintLogLn(MsgType.Info, $"读取注册表键值: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\RegTester -> {result}");

            if (value == result)
            {
                PrintLogLn(MsgType.Success, $"写入值与读取值比对成功!");
            }
            else
            {
                PrintLogLn(MsgType.Error, $"写入值与读取值比对失败!");
            }

            if (RegOperate.CF_DeleteRegeditKey(ERegDomain.LocalMachine, "SOFTWARE\\ItemTester\\", "RegTester"))
            {
                PrintLogLn(MsgType.Success, "删除注册表键值成功: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\RegTester");
            }
            else
            {
                PrintLogLn(MsgType.Error, "删除注册表键值失败: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\RegTester");
            }

            if (RegOperate.CF_DeleteSubItem(ERegDomain.LocalMachine, "SOFTWARE\\ItemTester\\"))
            {
                PrintLogLn(MsgType.Success, "删除注册表项成功: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");
            }
            else
            {
                PrintLogLn(MsgType.Error, "删除注册表项失败: HKEY_LOCAL_MACHINE\\SOFTWARE\\ItemTester\\");
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// 删除键值
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <param name="regKey">键值名称</param>
 /// <returns>执行结果</returns>
 public static bool CF_DeleteRegeditKey(this ERegDomain regDomain, string subItem, string regKey)
 {
     return(RegOperate.CF_DeleteRegeditKey(regDomain, subItem, regKey));
 }
Exemplo n.º 4
0
 /// <summary>
 /// 读取键值内容
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <param name="regKey">键值名称</param>
 /// <returns>键值内容</returns>
 public static object CF_ReadRegeditKey(this ERegDomain regDomain, string subItem, string regKey)
 {
     return(RegOperate.CF_ReadRegeditKey(regDomain, subItem, regKey));
 }
Exemplo n.º 5
0
 /// <summary>
 /// 设置指定的键值内容
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <param name="regKey">键值名称</param>
 /// <param name="valueKind">键值类型</param>
 /// <param name="value">键值内容</param>
 /// <returns>执行情况</returns>
 public static bool CF_WriteRegeditKey(this ERegDomain regDomain, string subItem, string regKey, ERegValueKind valueKind, object value)
 {
     return(RegOperate.CF_WriteRegeditKey(regDomain, subItem, regKey, valueKind, value));
 }
Exemplo n.º 6
0
 /// <summary>
 /// 删除注册表项
 /// </summary>
 /// <param name="regDomain">注册表基项域</param>
 /// <param name="subItem">注册表项名称</param>
 /// <returns>执行情况</returns>
 public static bool CF_DeleteSubItem(this ERegDomain regDomain, string subItem)
 {
     return(RegOperate.CF_DeleteSubItem(regDomain, subItem));
 }