top имеет пакетный режим (-b), который генерирует выходной сигнал без кодов управления экраном. Добавив некоторые другие ключи и параметры, вы сможете сосредоточиться на необходимой вам статистике и перенаправить ее в файл или другую программу для обработки.
Сначала восстановите свой Ubuntu, перейдя в режим восстановления и запустив
sudo apt install --reinstall ubuntu-desktop
Этот ответ написан не мной, а режимом восстановления on Суперпользователь, пожалуйста, проголосуйте там, если вы проголосуете за это спасибо
Для Linux под названием chntpw есть отличный инструмент. Вы можете легко получить его на Debian / Ubuntu с помощью: sudo apt install chntpw Чтобы посмотреть в соответствующий файл реестра, закрепите диск Windows и откройте его так: chntpw -e /path/to/windisk/Windows/System32/config/software Теперь, чтобы получить декодированный DigitalProductId, введите следующую команду: dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductId [!d6 ]Комментарий ниже говорит:
В Linux есть отличный инструмент, называемый chntpw. Вы можете легко получить его на Debian / Ubuntu с помощью:
Сначала восстановите свой Ubuntu, перейдя в режим восстановления и запустив
sudo apt install --reinstall ubuntu-desktop
Этот ответ написан не мной, а режимом восстановления on Суперпользователь, пожалуйста, проголосуйте там, если вы проголосуете за это спасибо
Для Linux под названием chntpw есть отличный инструмент. Вы можете легко получить его на Debian / Ubuntu с помощью: sudo apt install chntpw Чтобы посмотреть в соответствующий файл реестра, закрепите диск Windows и откройте его так: chntpw -e /path/to/windisk/Windows/System32/config/software Теперь, чтобы получить декодированный DigitalProductId, введите следующую команду: dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductIdКомментарий ниже говорит:
В Linux есть отличный инструмент, называемый chntpw. Вы можете легко получить его на Debian / Ubuntu с помощью:
Сначала восстановите свой Ubuntu, перейдя в режим восстановления и запустив
sudo apt install --reinstall ubuntu-desktop
Этот ответ написан не мной, а режимом восстановления on Суперпользователь, пожалуйста, проголосуйте там, если вы проголосуете за это спасибо
Для Linux под названием chntpw есть отличный инструмент. Вы можете легко получить его на Debian / Ubuntu с помощью: sudo apt install chntpw Чтобы посмотреть в соответствующий файл реестра, закрепите диск Windows и откройте его так: chntpw -e /path/to/windisk/Windows/System32/config/software Теперь, чтобы получить декодированный DigitalProductId, введите следующую команду: dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductIdКомментарий ниже говорит:
В Linux есть отличный инструмент, называемый chntpw. Вы можете легко получить его на Debian / Ubuntu с помощью:
Итак, для кого-то интересно, как это работает.
По существу вам нужно будет захватить содержимое раздела реестра
HKLM\Software\Microsoft\Windows NT\CurrentVersion\DigitalProductId
Это так называемый REG_BINARY , Это просто набор байтов. Вы можете сбросить их через chntpw или скопировать их вручную.
Посмотрим, что мы делаем с этими байтами, чтобы получить наш ключ продукта с помощью некоторого псевдокода.
Как только у вас есть объекты в массиве, вам нужно извлечь подмножество байтов, которые кодируют идентификатор продукта. В частности: диапазон между 52 и (52 + 14). Это дает вам 15 байт.
EncodedId = DigitalProductId.Range(52, 52+14)
Это все еще куча байтов, которые совсем не напоминают ключ продукта. Итак, давайте расшифруем его.
Для этого вам понадобится коллекция всех символов, из которых может быть сделан ключ продукта:
Characters = "BCDFGHJKMPQRTVWXY2346789"
Да, это не весь алфавит. Как оказалось, ключ продукта Windows не использует все буквенно-цифровые символы.
Теперь давайте сделаем декодирование. Нам понадобится:
Переменная, которая удерживает ключ продукта. Цикл от 0 до 24. Для каждого символа нашего ключа продукта Внутренний цикл от 0 до 14 (В обратном порядке) Для каждого байта в нашем закодированном id Несколько бит fiddeling и арифметический для процесса декодированияProductKey = ""
FOR i = 0 TO 24
c = 0
FOR j = 14 TO 0 STEP -1
# Shift the current contents of c to the left by 1 byte
# and xor it with the next byte of our id
c = (c * 256) XOR EncodedId[j]
# Put the result of the divison back into the array
EncodedId[j] = FLOOR(c / 24)
# Calculate remainder of c
c = c MOD 24
LOOP
# Take character at position c and prepend it to the ProductKey
ProductKey = Characters[c] + ProductKey
LOOP
Наконец, мы вставляем символ «-» в строку в соответствующих местах.
FOR i = 4 TO 1 STEP -1
ProductKey = ProductKey.Insert(i * 5, "-")
LOOP
И все готово!
... Почти:
PRINT(ProductKey)
Теперь!
Возможности нашего псевдокода
Переменная для удерживания ключа продукта $array.Insert($where, $what) Вставить $what в $where Цикл с 0 по 24. Для каждого символа нашего ключа продукта $a XOR $b Вычислить побитовое исключение или по номерам $a и $b [d14 ] Внутренний цикл от 0 до 14 (в обратном порядке) Для каждого байта в нашем закодированном id $array[$i] Возьмите только элемент в позиции $i из массива . Некоторое битное искажение и арифметическое для процесса декодирования Строки - это только массивы символов.Вы можете увидеть 2 фактических реализации в C # и PowerShell в this
Итак, для кого-то интересно, как это работает.
По существу вам нужно будет захватить содержимое раздела реестра
HKLM\Software\Microsoft\Windows NT\CurrentVersion\DigitalProductId
Это так называемый REG_BINARY , Это просто набор байтов. Вы можете сбросить их через chntpw или скопировать их вручную.
Посмотрим, что мы делаем с этими байтами, чтобы получить наш ключ продукта с помощью некоторого псевдокода.
Как только у вас есть объекты в массиве, вам нужно извлечь подмножество байтов, которые кодируют идентификатор продукта. В частности: диапазон между 52 и (52 + 14). Это дает вам 15 байт.
EncodedId = DigitalProductId.Range(52, 52+14)
Это все еще куча байтов, которые совсем не напоминают ключ продукта. Итак, давайте расшифруем его.
Для этого вам понадобится коллекция всех символов, из которых может быть сделан ключ продукта:
Characters = "BCDFGHJKMPQRTVWXY2346789"
Да, это не весь алфавит. Как оказалось, ключ продукта Windows не использует все буквенно-цифровые символы.
Теперь давайте сделаем декодирование. Нам понадобится:
Переменная, которая удерживает ключ продукта. Цикл от 0 до 24. Для каждого символа нашего ключа продукта Внутренний цикл от 0 до 14 (В обратном порядке) Для каждого байта в нашем закодированном id Несколько бит fiddeling и арифметический для процесса декодированияProductKey = ""
FOR i = 0 TO 24
c = 0
FOR j = 14 TO 0 STEP -1
# Shift the current contents of c to the left by 1 byte
# and xor it with the next byte of our id
c = (c * 256) XOR EncodedId[j]
# Put the result of the divison back into the array
EncodedId[j] = FLOOR(c / 24)
# Calculate remainder of c
c = c MOD 24
LOOP
# Take character at position c and prepend it to the ProductKey
ProductKey = Characters[c] + ProductKey
LOOP
Наконец, мы вставляем символ «-» в строку в соответствующих местах.
FOR i = 4 TO 1 STEP -1
ProductKey = ProductKey.Insert(i * 5, "-")
LOOP
И все готово!
... Почти:
PRINT(ProductKey)
Теперь!
Возможности нашего псевдокода
Переменная для удерживания ключа продукта $array.Insert($where, $what) Вставить $what в $where Цикл с 0 по 24. Для каждого символа нашего ключа продукта $a XOR $b Вычислить побитовое исключение или по номерам $a и $b Внутренний цикл от 0 до 14 (в обратном порядке) Для каждого байта в нашем закодированном id $array[$i] Возьмите только элемент в позиции $i из массива . Некоторое битное искажение и арифметическое для процесса декодирования Строки - это только массивы символов.Вы можете увидеть 2 фактических реализации в C # и PowerShell в this
Итак, для кого-то интересно, как это работает.
По существу вам нужно будет захватить содержимое раздела реестра
HKLM\Software\Microsoft\Windows NT\CurrentVersion\DigitalProductId
Это так называемый REG_BINARY , Это просто набор байтов. Вы можете сбросить их через chntpw или скопировать их вручную.
Посмотрим, что мы делаем с этими байтами, чтобы получить наш ключ продукта с помощью некоторого псевдокода.
Как только у вас есть объекты в массиве, вам нужно извлечь подмножество байтов, которые кодируют идентификатор продукта. В частности: диапазон между 52 и (52 + 14). Это дает вам 15 байт.
EncodedId = DigitalProductId.Range(52, 52+14)
Это все еще куча байтов, которые совсем не напоминают ключ продукта. Итак, давайте расшифруем его.
Для этого вам понадобится коллекция всех символов, из которых может быть сделан ключ продукта:
Characters = "BCDFGHJKMPQRTVWXY2346789"
Да, это не весь алфавит. Как оказалось, ключ продукта Windows не использует все буквенно-цифровые символы.
Теперь давайте сделаем декодирование. Нам понадобится:
Переменная, которая удерживает ключ продукта. Цикл от 0 до 24. Для каждого символа нашего ключа продукта Внутренний цикл от 0 до 14 (В обратном порядке) Для каждого байта в нашем закодированном id Несколько бит fiddeling и арифметический для процесса декодированияProductKey = ""
FOR i = 0 TO 24
c = 0
FOR j = 14 TO 0 STEP -1
# Shift the current contents of c to the left by 1 byte
# and xor it with the next byte of our id
c = (c * 256) XOR EncodedId[j]
# Put the result of the divison back into the array
EncodedId[j] = FLOOR(c / 24)
# Calculate remainder of c
c = c MOD 24
LOOP
# Take character at position c and prepend it to the ProductKey
ProductKey = Characters[c] + ProductKey
LOOP
Наконец, мы вставляем символ «-» в строку в соответствующих местах.
FOR i = 4 TO 1 STEP -1
ProductKey = ProductKey.Insert(i * 5, "-")
LOOP
И все готово!
... Почти:
PRINT(ProductKey)
Теперь!
Возможности нашего псевдокода
Переменная для удерживания ключа продукта $array.Insert($where, $what) Вставить $what в $where Цикл с 0 по 24. Для каждого символа нашего ключа продукта $a XOR $b Вычислить побитовое исключение или по номерам $a и $b Внутренний цикл от 0 до 14 (в обратном порядке) Для каждого байта в нашем закодированном id $array[$i] Возьмите только элемент в позиции $i из массива . Некоторое битное искажение и арифметическое для процесса декодирования Строки - это только массивы символов.Вы можете увидеть 2 фактических реализации в C # и PowerShell в this