Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • Реклама на форуме платная! Обращаться к Admin.
    Произошла смена домена с maza.one на maza1.top!!!

Инструкция Открываем платные опции в продукции Agilent (осциллографы)

  • Автор темы Автор темы eax
  • Дата начала Дата начала
Инструкция по использованию

eax

New member
LV
0
 
Регистрация
Ноя 17, 2022
Сообщения
11
Реакции
8
Предыстория такая:
Ко мне обратился человек с просьбой написать 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

Опции можете менять на нужные.
Успешных активаций.
 
Чего только не было за мою практику, но никогда и нигде ничего не выкладывал.
Все наработки просто растворяются в архивах.
Решил немного внести свою лепту :)
 

Пинг форума и аптайм

Averaged results for https://maza.one

uptime counter
Назад
Сверху