[C] 纯文本查看 复制代码 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
const char* keys[] = {
"RABNAEEAWgBNAC0AVwBIAFkANQAyAC0AQQBYADIAMgAyAC0AWgBRAEoAWABOAC0ANwA5AEoAWABIAA==",
"RABTAEIAWgBHAC0AQgBGADIAWABIAC0ATQA5ADIAMgAyAC0ARAA1AE0AOABMAC0AUQBDAEMAWABIAA==",
"RABNAEEAWgBFAC0AVgBLAFoASgBWAC0AMgA4AFoAWgBaAC0ANABUADcAQQBKAC0ANwBIAEgANQA1AA==",
"RABQAEEAWgA2AC0AUwBIADIAVQBQAC0AUwA3AFoAWgBaAC0AWAA0ADcAVABVAC0ARgBVAEwAMgBYAA==",
"RABTAEgAWgBBAC0AUQBKADMARwBXAC0AWQBVAFoAWgBaAC0AUwBWAEYAWgAyAC0ANgBEAEIAVQBFAA==",
"RABNAEEAWgBNAC0AWgBNADUANQA2AC0ASwA2AFoAWgBaAC0AOQA5AEwAVwA4AC0AVwBWADUAQgBUAA=="
};
const char* get_random_key() {
int i = rand() % 6;
return keys[i];
}
int base64_decode(const char* input, char* output, int output_len) {
const char* base64_chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int i = 0;
int j = 0;
int k = 0;
int len = strlen(input);
uint32_t bits = 0;
uint8_t char_count = 0;
while (i < len && j < output_len) {
char c = input[i++];
if (c >= 'A' && c <= 'Z') {
bits = (bits << 6) | (c - 'A');
}
else if (c >= 'a' && c <= 'z') {
bits = (bits << 6) | (c - 'a' + 26);
}
else if (c >= '0' && c <= '9') {
bits = (bits << 6) | (c - '0' + 52);
}
else if (c == '+') {
bits = (bits << 6) | 62;
}
else if (c == '/') {
bits = (bits << 6) | 63;
}
else if (c == '=') {
char_count++;
bits <<= 6;
}
if (++char_count == 4) {
char_count = 0;
while (k < 3 && j < output_len) {
output[j++] = (bits >> 16) & 0xFF;
bits <<= 8;
k++;
}
bits = 0;
k = 0;
}
}
return j;
}
int unicode_to_utf8(const char* unicode_str, int unicode_str_len, char* utf8_str, int utf8_str_len) {
int utf8_len = 0;
for (int i = 0; i < unicode_str_len; i += 2) {
unsigned int unicode_char = ((unsigned char)unicode_str[i + 1] << 8) | (unsigned char)unicode_str[i];
if (unicode_char <= 0x7f) {
if (utf8_len + 1 >= utf8_str_len) {
// output buffer is not large enough
return 0;
}
utf8_str[utf8_len++] = (char)unicode_char;
}
else if (unicode_char <= 0x7ff) {
if (utf8_len + 2 >= utf8_str_len) {
// output buffer is not large enough
return 0;
}
utf8_str[utf8_len++] = (char)(0xc0 | (unicode_char >> 6));
utf8_str[utf8_len++] = (char)(0x80 | (unicode_char & 0x3f));
}
else if (unicode_char <= 0xffff) {
if (utf8_len + 3 >= utf8_str_len) {
// output buffer is not large enough
return 0;
}
utf8_str[utf8_len++] = (char)(0xe0 | (unicode_char >> 12));
utf8_str[utf8_len++] = (char)(0x80 | ((unicode_char >> 6) & 0x3f));
utf8_str[utf8_len++] = (char)(0x80 | (unicode_char & 0x3f));
}
else {
// unsupported Unicode character
return 0;
}
}
utf8_str[utf8_len] = '\0';
return utf8_len;
}
int main() {
const char* emeditor_v21_str = get_random_key();
char* decoded_key = NULL;
int decoded_key_len = 0;
int result_len = 0;
// base64 解码
decoded_key_len = strlen(emeditor_v21_str);
decoded_key = (char*)malloc(decoded_key_len);
result_len = base64_decode(emeditor_v21_str, decoded_key, decoded_key_len);
// 转换编码
char* utf8_key = (char*)malloc(result_len * 2);
result_len = unicode_to_utf8(decoded_key, result_len, utf8_key, result_len * 2);
// 输出序列号
printf("注册名字随便填一个,序列号粘贴进去就行了:\n%s\n", utf8_key);
printf("xp/win7/server2008请下载:[url]http://files.emeditor.com/emed32_14.8.1.exe[/url]\n\n");
printf("win10/win11及未来更高版本以上:[url]https://support.emeditor.com/en/downloads/latest/installer/64[/url]\n");
free(decoded_key);
free(utf8_key);
return 0;
}
/*参考资料
* [url]https://ghproxy.com/https://raw.githubusercontent.com/hoochanlon/ihs-simple/main/d-pwsh/emeditor_random_keygen.ps1[/url]
* # 发现一个升级的aiu文件,删不删随喜吧,"C:\ProgramData\Emurasoft\EmEditor\updates\emed64_updates4u.aiu"
# 摇骰子1~6点随机选一个 emeditor key。
# $emeditor_v21_str;$getkey; 重复定义增加多余的输出显示
$i = (1..6|Get-Random)
$emeditor_v21_str = switch ($i)
{
1 {"RABNAEEAWgBNAC0AVwBIAFkANQAyAC0AQQBYADIAMgAyAC0AWgBRAEoAWABOAC0ANwA5AEoAWABIAA=="}
2 {"RABTAEIAWgBHAC0AQgBGADIAWABIAC0ATQA5ADIAMgAyAC0ARAA1AE0AOABMAC0AUQBDAEMAWABIAA=="}
3 {"RABNAEEAWgBFAC0AVgBLAFoASgBWAC0AMgA4AFoAWgBaAC0ANABUADcAQQBKAC0ANwBIAEgANQA1AA=="}
4 {"RABQAEEAWgA2AC0AUwBIADIAVQBQAC0AUwA3AFoAWgBaAC0AWAA0ADcAVABVAC0ARgBVAEwAMgBYAA=="}
5 {"RABTAEgAWgBBAC0AUQBKADMARwBXAC0AWQBVAFoAWgBaAC0AUwBWAEYAWgAyAC0ANgBEAEIAVQBFAA=="}
6 {"RABNAEEAWgBNAC0AWgBNADUANQA2AC0ASwA2AFoAWgBaAC0AOQA5AEwAVwA4AC0AVwBWADUAQgBUAA=="}
}
# 编码测试 [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("asdasdxzczc"));
$getkey = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($emeditor_v21_str))
Set-Clipboard -Value $getkey # Get-Clipboard
Write-Output ""
Write-Output "注册名字随便填一个,序列号粘贴进去就行了。序列号已复制到粘贴板:" $getkey
Write-Output ""
Write-Output "xp/win7/server2008请下载:[url]http://files.emeditor.com/emed32_14.8.1.exe[/url]"
Write-Output ""
Write-Output "win10/win11及未来更高版本以上:[url]https://support.emeditor.com/en/downloads/latest/installer/64[/url]"
<# 实验:
## iwr https | iex 倒是不用再删除自身了( remove-item $MyInvocation.MyCommand.Path -force )
## utf8显示中文会出问题,GB2312还是会出问题,可能iex只支持ansi显示了...
## 编码:GB2312,Mac调试powershell注意换回UTF8
## iwr https | iex 可能可以使用下UTF8 (方案已成功)
## irm [url]https://ghproxy.com/https://raw.githubusercontent.com/hoochanlon/ihs-simple/main/d-pwsh/emeditor_random_keygen.ps1[/url]|iex (新)
## curl -O [url]https://ghproxy.com/https://raw.githubusercontent.com/hoochanlon/ihs-simple/d-pwsh/main/emeditor_random_keygen.ps1[/url] &&
### powershell -c emeditor_random_keygen.ps1 (旧)
参考链接:
[url]https://www.educba.com/powershell-base64/[/url]
[url]https://www.52pojie.cn/thread-658917-1-1.html[/url]
[url]https://www.52pojie.cn/forum.php?mod=viewthread&tid=578165[/url]
[url]https://www.cnblogs.com/estherlty/p/15771219.html[/url]
[url]https://www.bilibili.com/read/cv19068695[/url]
[url]https://www.baidu.com/s?wd=emeditor[/url]
[url]https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-clipboard[/url]
[url]https://learn.microsoft.com/zh-cn/powershell/scripting/learn/deep-dives/everything-about-switch[/url]
[url]http://zhishichong.com/article/47563[/url]
[url]http://www.hackdig.com/03/hack-309458.htm[/url]
| DUANG~ 嘎得 KEY | 抛瓦拜 一群网友们|
|:---------------------------------------------------------:|
|DMAZM-WHY52-AX222-ZQJXN-79JXH|DSBZG-BF2XH-M9222-D5M8L-QCCXH|
|DKAZQ-R9TYP-5SM2A-9Z8KD-3E2RK||DQHZ2-ZWTCU-S5222-6GT6T-QZ4HZ|
#>
*/ |