- Регистрация
- Ноя 17, 2022
- Сообщения
- 11
- Реакции
- 8
Предыстория такая:
Ко мне обратился человек с просьбой написать keygen для активации платных опций на осциллографе N9340C. Хоть я таким особо не занимаюсь, решил помочь, с учетом что тратить время на реверс уже не надо, так как человек любезно предоставил алгоритм для вычисления ключа, нужно было лишь обернуть в код. Работает и проверено лично на N9340B, N9340C, N9342C, N9344C.
Поднимал в докере, нужен был .NET Core для запуска C# кода.
Program.cs:
MyCSharpProject.csproj:
Dockerfile:
Команды:
1) Создаете каталог, например:
mkdir ~/mycsharpapp && cd $_;
2) В каталоге создаете указанные выше файлы Dockerfile, MyCSharpProject.csproj, Program.cs
3) Запускаете билд контейнера и запускаете контейнер, на выходе получаете коды активации
docker build -t mycsharpapp .
docker run --rm -it mycsharpapp
Опции можете менять на нужные.
Успешных активаций.
Ко мне обратился человек с просьбой написать keygen для активации платных опций на осциллографе N9340C. Хоть я таким особо не занимаюсь, решил помочь, с учетом что тратить время на реверс уже не надо, так как человек любезно предоставил алгоритм для вычисления ключа, нужно было лишь обернуть в код. Работает и проверено лично на N9340B, N9340C, N9342C, N9344C.
Поднимал в докере, нужен был .NET Core для запуска C# кода.
Program.cs:
C#:
using System;
using System.Security.Cryptography;
using System.Text;
namespace MyCSharpProject
{
class Program
{
static void Main(string[] args)
{
string hostID = args[0];
bool is_N9340C = bool.Parse(args[1]);
string[] options = {
"DMA", "AMA", "PWM", "IBO", "XDS", "SIM", "CHP", "ACP", "OBW", "SEM", "FST",
"F13", "F20", "LAN", "RBW", "FSA", "GPS", "TPN", "TG7", "SEC", "PA7", "CAT",
"TMG", "F7G", "PWS", "DIA", "F24", "OPE", "SCN", "CAU", "CA7", "CA6", "F08",
"PA8", "PWP", "D24", "G01", "CAL", "RM7", "MNT", "PFR", "P07", "EMC", "TFE"
};
if (hostID.Length != 8)
{
Console.WriteLine("Error in hostID length!");
return;
}
for (int m = 0; m < options.Length; m++)
{
byte[] hash = MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(hostID + options[m] + (is_N9340C ? "DFE" : "")));
Console.Write("{0,-2} {1} ", m, options[m]);
for (int i = 0; i < hash.Length; i++)
{
byte c = 0;
for (int j = 0; j < 8; j++)
c += (byte)(hash[i] ^ hostID[j]);
c = (byte)(c % 36 + 48);
if (c > 57)
c += 7;
Console.Write(Convert.ToChar(c));
}
Console.WriteLine();
}
}
}
}
MyCSharpProject.csproj:
XML:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
Dockerfile:
Код:
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/runtime:5.0
WORKDIR /app
COPY --from=build-env /app/out ./
ENTRYPOINT ["dotnet", "MyCSharpProject.dll", "HostID", "true"] # HostID осциллографа, параметр true или false, зависит от семейства, для семейства "B" передавайте false, для "C" true
Команды:
1) Создаете каталог, например:
mkdir ~/mycsharpapp && cd $_;
2) В каталоге создаете указанные выше файлы Dockerfile, MyCSharpProject.csproj, Program.cs
3) Запускаете билд контейнера и запускаете контейнер, на выходе получаете коды активации
docker build -t mycsharpapp .
docker run --rm -it mycsharpapp
Опции можете менять на нужные.
Успешных активаций.

