找回密码
 立即注册
搜索
热搜: 中医 针灸 咳嗽
查看: 490|回复: 0

破解Emeditor,算出序列号

[复制链接]

3706

主题

1

回帖

1万

积分

管理员

积分
11870
发表于 2023-3-12 22:28:51 | 显示全部楼层 |阅读模式
[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|
#>




*/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|私人站点 ( 冀ICP备2023028127号-2 )

GMT+8, 2025-4-19 12:19 , Processed in 0.072541 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表