c# 无法检索解密密钥

注意:今天早上在我的博客上发布了此内容,但也感到字节社区可以从中受益。

我已经在不同的论坛上多次问过这个问题,并认为我会开发一种用于检索Windows产品密钥的解决方案。 实际上,由于密钥在注册表中被编码为字节数组,因此实际上比我最初想的要深得多,因此我们必须对其进行解码才能获得实际的密钥。

我们需要做的第一件事是声明解码和保持解码后的产品密钥所需的所有局部变量:


//first byte offset
const int start = 52;
//last byte offset
const int end = start + 15;
//decoded key length
const int length = 29;
//decoded key in byte form
const int decoded = 15;
//char[] for holding the decoded product key
var decodedKey = new char[length];
//List<byte> to hold the key bytes
var keyHex = new List<byte>();
//list to hold possible alpha-numeric characters
//that may be in the product key
var charsInKey = new List<char>()
{'B', 'C', 'D', 'F', 'G', 'H',
'J', 'K', 'M', 'P', 'Q', 'R',
'T', 'V', 'W', 'X', 'Y', '2',
'3', '4', '6', '7', '8', '9'
}; 

下一步是将所有字节添加到我们的List <byte>中:


//add all bytes to our list
for (var i = start; i <= end; i++)
keyHex.Add(id[i]); 

接下来,我们进行实际的大量列出(解码字节数组)以获取产品密钥:


//now the decoding starts
for (var i = length - 1; i >= 0; i--)
switch ((i + 1) % 6)
{//if the calculation is 0 (zero) then add the seperator
case 0:
decodedKey[i] = '-';
break;
default:
var idx = 0;
for (var j = decoded - 1; j >= 0; j--)
{var @value = (idx << 8) | keyHex[j];
keyHex[j] = (byte) (@value/24);
idx = @value%24;
decodedKey[i] = charsInKey[idx];
}
break;
} 

最后将字节数组转换为包含产品密钥的字符串:


return new string(decodedKey); 

注意:我们使用字符串类的新构造函数将char数组转换为常规字符串。

好的,现在我们有了一种解码产品密钥的方法,现在介绍如何使用它。 我创建了一个带有文本框和按钮的简单WinForm。 我要做的第一件事是打开以下键“

SOFTWARE \\ Microsoft \\ Windows NT \\ CurrentVersion “(在HKEY_LOCAL_MACHINE中 )。然后,我获取DigitalProductId的值并将字节数组传递给解码函数。

按钮单击事件如下所示:


private void FindProductKeyClick(object sender, EventArgs e)
{byte[] id = null;
var regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
if (regKey != null) id = regKey.GetValue("DigitalProductId") as byte[];
ProductKeyTextBox.Text = DecodeKeyByteArray(id);
} 

现在运行您的应用程序并获取Windows产品密钥。 看到那样的浪费与您现在想的一样困难。 希望对您有所帮助,并感谢您的阅读。

编码愉快!

翻译自: https://bytes.com/topic/c-sharp/insights/941406-retrieve-your-windows-product-key-c

c# 无法检索解密密钥

c# 无法检索解密密钥_使用C#检索Windows产品密钥相关推荐

  1. 卸载office产品密钥_如何在出售PC之前卸载Windows产品密钥

    卸载office产品密钥 Do you have an old PC you want to sell, but also want to use your Windows license on yo ...

  2. Windows产品密钥

    由于各种各样的需要,我先后获得了Windows Server 2008,Windows Server 2008 R2,Windows 7 Ultimate(旗舰版),Windows 7 Enterpr ...

  3. 你的计算机运行的是盗本副本,电脑总是提示“您可能是软件盗版的受害者。 此计算机上安装的 Windows 产品密钥不是正版。”该怎么办呀?...

    2007-06-22 回答 2007.3.28微软发布了windows xp的一个新补丁windows genuine advantage   通知(kb905474),如果您使用的是盗版的windo ...

  4. [转]Windows 7 产品密钥是否安全

    提到Windows 7(或Windows Server 2008)有些人认为自己的产品密钥(Product Key)很安全,甚至在公司内部有些网管也认为公司部署的Windows 7 系统的密钥不会泄露 ...

  5. 计算机哪里找产品密钥,计算机windows的密钥在哪里可以找到?

    2007-04-06 验证结果 验证结果 此 Windows 未通过正版验证. 此计算机上的产品密钥不是由 Microsoft 分配的. 产品密钥是 Microsoft 仅分配给正版 Windows ...

  6. 【记录】Windows 11|激活Windows系统的产品密钥的获取、安装、查看以及查询使用次数

    Windows 11. 系统的产品密钥的获取.安装.查看以及查询使用次数的具体步骤如下. 文章目录 1 产品密钥的获取 2 产品密钥的安装和激活 3 产品密钥的查看及使用次数查询 1 产品密钥的获取 ...

  7. node 加密解密模块_聊聊Node加密模块crypto加密原理的那些事

    crypto是node.js中实现加密和解密的模块 在node.js中,使用OpenSSL类库作为内部实现加密解密的手段 OpenSSL是一个经过严格测试的可靠的加密与解密算法的实现工具. 散列(哈希 ...

  8. 《数据结构课程实践》_03_文本文件单词的检索与计数_准备工作

    03_文本文件单词的检索与计数_准备工作 一.实验题目与要求 二.编程语言以及开发环境 三.实验思路 1.朴素模式匹配算法 2.KMP算法 四.预习小结 一.实验题目与要求 实验题目: 建立一个文本文 ...

  9. github ssh密钥_如何使用SSH密钥在一台机器上管理多个GitHub帐户

    github ssh密钥 The need to manage multiple GitHub accounts on the same machine comes up at some point ...

最新文章

  1. bios调整服务器性能模式吗,优化BIOS设置提高显示性能
  2. Tomcat常见问题 (配置)及解决方法
  3. Xcode 8 控制台输出大量不用的log的问题解决NSLog失效的解决
  4. Spring_总结_02_依赖注入
  5. 315 · Istio1.1 功能预告,真的假不了
  6. Android 手机影音 开发过程记录(六)
  7. python 基础——变量
  8. golang中strings.ToUpper
  9. android自定义view圆,Android自定义View圆形百分比控件(一)
  10. Python逐块执行另一个Python程序中的代码观察运行过程
  11. go 是常驻内存吗_图解 Go 内存分配器
  12. python类中的 init_Python类中__init__()的作用
  13. 转自 方倍工作室微信公众平台开发
  14. ggplot2 绘制火山图
  15. css垂直居中怎么设?文字上下居中和图片垂直居中
  16. windows远程控制服务器
  17. Marlin固件串口功能解析和程序移植
  18. ubuntu16.04+cuda8.0安装pytorch
  19. Emacs基础使用教程及常见命令整理
  20. JavaScript-射击比赛成绩单编程

热门文章

  1. Java实现Zoho Mail 发送邮件,使用hutool工具类。
  2. 找到组织了---perftest工作室 TIB工作室
  3. Flutter 移动光标 关闭弹出的键盘
  4. python中气泡图文字标签_Excel中制作气泡图及为气泡图的系列数据点添加文本数据标签...
  5. 对象可以创建数组吗_企业微信活码如何创建?活码可以统计渠道来源吗?
  6. 【python】基础网络爬虫教程
  7. 戴尔微型计算机3048,戴尔5460一体机拆解,戴尔3048一体机
  8. vue大屏可视化自适应完美方案
  9. Ruby方法参数默认值的一个小技巧在Rails中的应用
  10. 《动手学深度学习(PYTORCH版)》第3章引入“d2lzh_pytorch”包报错:No module named ‘torchtext’