Накрутка лічильника на KMS сервері (недостатнє значення лічильника)

На сторінках нашого сайту ми вже не раз торкалися особливостей установки, настройки і функціонування служби управління ключами Microsoft KMS (Key Management Service). Сьогодні ми розглянемо поняття лічильника активації на KMS сервері, особливості обліку кількості активацій клієнтів на сервері активації, способи примусової накрутки лічильника кількості активацій і навіщо це взагалі все це потрібно.

зміст:

  • Принципи функціонування KMS
  • Помилка KMS активації 0xC004F038 - недостатнє значення лічильника
  • Скрипт для накрутки KMS лічильника
  • Збільшення лічильника активацій за допомогою снапшотов віртуальної машини

Принципи функціонування KMS

Ще раз повернемося до теоретичних основ функціонування служби KMS.

Порада. Попередньо рекомендуємо познайомитися з наступними статтями на нашому сайті:

  • Установка KMS сервера на Windows Server 2012 R2
  • Активація ОС Windows за допомогою KMS (KMS активація Windows 8.1, 2012 R2)
  • ADBA активація, KMS активація MS Office 2013, 2010
Великий огляд системи KMS активації Microsoft представлений в статті FAQ по технології KMS активації .

Згідно корпоративній програмі ліцензування Microsoft (Volume License) мінімальна кількість ліцензій, яке продається в одному пакеті ліцензій - 25 штук. Кожному покупцеві корпоративної ліцензії видається спеціальний ключ активації CSVLK (Або KMS host key), за допомогою якого активується внутрішній KMS сервер компанії. Надалі клієнти (як ОС Windows, так і офісний пакет MS Office) всередині мережі компанії можуть активуватися на даному KMS сервері, без необхідності звертатися до серверів активації Microsoft в Інтернеті.

Помилка KMS активації 0xC004F038 - недостатнє значення лічильника

Однак все адміністратори неминуче стикаються з тим, що відразу після установки і активації KMS сервер не активує операційні системи звернулися до нього клієнтів. При спробі активувати ОС на новому KMS сервері (в цьому прикладі Windows 7 Pro) з'явиться помилка:

Activating Windows 7, Professional edition

0xc004f038: The Software Licensing Service reported that the computer could not be activated. The count reported by your Key Management Service (KMS) is insufficient. Please contact your system administrator.


У російській версії Windows 7 помилка виглядає так:

Помилка: 0xc004f038. Служба ліцензування програмного забезпечення повідомила, що для даного комп'ютера не вдалося виконати активацію. Значення лічильника, яке повідомила служба управління ключами (KMS), недостатньо. Зверніться до системного адміністратора.

Справа в тому, що на KMS сервері є т.зв. лічильник активацій (kms count) який збільшується на одиницю при отриманні нового запиту на активацію від клієнта в мережі. При зверненні KMS сервер присвоює кожному клієнту унікальний ідентифікатор CMID (Client machine identification) і заносить його в свою базу. При цьому ОС комп'ютера, з якого було отримано клопотання не активується відразу. Дані запити на активацію накопичуються у внутрішньому кеші KMS сервера. Це відбувається до тих пір, поки в базі KMS НЕ буде подолано певний мінімальний поріг запитів на активацію, отриманих від клієнтів за останні 30 днів. Цей поріг становить 5 запитів на активацію від серверних ОС або 25 запитів від клієнтських ОС Windows (пороги активації для десктопних / серверних ОС незалежні, тобто якщо значення KMS лічильника на сервері для клієнтських систем перевищило значення 25, цей сервер все одно не буде активувати північні ОС до тих пір, поки кількість звернень на активацію з цих платформ не досягне 5). Якщо клієнт не звертається до сервера активації KMS протягом 30 днів, він автоматично видаляється з бази KMS, а лічильник активації зменшується на одиницю.

отримати значення CMID на конкретному комп'ютері можна за допомогою такої команди:

Get-WmiObject -class SoftwareLicensingService -ComputerName pc1 | Select-object ClientMachineID

Скинути поточний CMID можна виконавши sysprep або за допомогою команди:

slmgr / rearm  (Знадобиться перезавантаження).

У будь-який момент загальна кількість запитів активації, отриманих KMS сервером можна подивитися за допомогою команди:

slmgr / dli

У цьому прикладі значення лічильника на KMS сервері дорівнює 50 (Current count).

Примітка. KMS сервер кешує тільки 50 останніх ідентифікаторів CMID (тобто в даному випадку кількість клієнтів KMS сервера може бути значно більше 50).

Щоб отримати точно значення лічильника, виконайте на KMS сервері команду:

cscript slmgr.vbs / dlv 98ebfe73-2084-4c97-932c-c0cd1643bea7

Key Management Service cumulative requests received from clients
Total requests received: 2563

Тобто даними KMS сервером отримано 2563 запитів на активацію від клієнтів.

Термін активації клієнта на KMS сервері - 180 днів, причому кожні 7 днів (7 днів за замовчуванням, змінити його можна командою slmgr.vbs / sri) Клієнт намагається продовжити активацію (на ті ж 180 днів). Якщо протягом 180 днів клієнт не продовжувати активацію, KMS сервер видаляє CMID клієнта з бази і зменшує лічильник активацій. ОС клієнта при цьому вважає себе активованою протягом 180 днів. Якщо клієнт не продовжив активацію на KMS сервері протягом цього часу, він переходить в режим grace period.

У тому випадку, якщо ви намагаєтеся активувати клієнтську ОС на KMS сервері, а лічильник не збільшується, це може бути викликане наступними причинами:

  • Дублюються CMID (зазвичай це відбувається через клонування ОС)
  • Наявність в мережі інших KMS серверів. За замовчуванням клієнти можуть автоматично знайти KMS сервер в домені за допомогою спеціального запису в DNS  - srv _vlmcs._tcp (Ви можете отримати ім'я сервера, на який вказує даний запис за допомогою команди nslookup -type = srv _vlmcs._tcp). В цьому випадку ми можете вручну вказати конкретний KMS сервер так: slmgr / skms kms_server.winitpro.ru:1688)
  • На клієнті використовується невірний ключ. Наприклад, замість відкритого GVLK (Generic Volume License Key) вказано MAK / retail ключ, або вказано ключ, який не відповідає використовуваної ОС.

Скрипт для накрутки KMS лічильника

У деяких випадках навіть при наявності придбаного VLC ключа буває важко відразу набрати потрібну кількість клієнтів, необхідне для подолання порогу активації KMS сервера і початку активації клієнтів (проблема особливо актуальна для невеликих або ізольованих мереж). При активації клієнта на сервері в цьому випадку ви будете отримувати помилку 0xC004F038.

У цьому випадку адміністратор починає замислюватися про штучну накрутку лічильника активації KMS. Однак не все так просто ... Ні sysprep, ні зміна MAC адреси мережевої карти не допоможуть Вам обдурити KMS сервер. Як досить популярного варіант пропонується створити відсутню кількість віртуальних машин і активувати їх на KMS сервері (віртуальні машини повинні бути унікальними, а не створеними їх одного шаблону). Але цей спосіб досить трудомісткий і вимагає необхідності підтримання роботи цих віртуальних машин (або їх повторного розгортання, включення і активації кожні 180 днів).

Як простіший альтернативи радимо вам скористатися наступним скриптом, що дозволяє накрутити лічильник активації на KMS сервері. Встановіть потрібну версію ОС (в цьому прикладі це Windows 7 Professional), створіть довільний каталог, скопіюйте в нього наступний bat файл, в цьому ж каталозі створіть два порожніх файлу з іменами:

7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0
7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0

Запустіть файл kms_increase.bat:

@echo off
set skms = kms1.winitpro.ru
for %% i in (...) do call: Act% skms%
slmgr / ato
sc stop sppsvc
goto: end
: Act
sc stop sppsvc
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0" "% systemroot% \ system32 \ *" / H / R / K / Y
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0" "% systemroot% \ system32 \ *" / H / R / K / Y
sc start sppsvc
cscript.exe "% systemroot% \ system32 \ slmgr.vbs" / skms% 1
ping 127.0.0.1 -n 5> nul
cscript.exe "% systemroot% \ system32 \ slmgr.vbs" / ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
cscript.exe "% systemroot% \ system32 \ slmgr.vbs" / ato
sc stop sppsvc
: end

kms1.winitpro.ru - DNS ім'я або ip-адреса вашого KMS сервера.

кількість точок у третю рядку - потрібну кількість звернень до KMS сервера (в нашому прикладі ми імітуємо звернення 25 унікальних клієнтів).

В скрипті додана 5 секундна затримка, тому що в деяких випадках система повертала, що файли зайняті, і спроба активації не зараховується.

важливо. Не заводьте даний скрипт на самому KMS сервері! Інакше доведеться повторно активувати KMS сервер (допустимо всього 6 спроб активації одного VLC ключа).

Після закінчення роботи скрипта перевірте значення лічильника активації на KMS сервері:

slmgr / dlv

Значення лічильника Current count має збільшиться на 25. Після цього KMS сервер буде активувати всі звертаються до нього системи клієнтські операційні системи (будь то Windows 7, 8 або Win 10). Цей скрипт надалі (якщо потрібну кількість реальних клієнтів не набереться) потрібно буде запускати кожні 30 днів, тому що при відсутності запитів до сервера лічильник активації буде з часом зменшуватися.

Збільшення лічильника активацій за допомогою снапшотов віртуальної машини

У тому випадку, якщо розглянутий ваше скрипт не допоміг вам збільшити лічильник активації на KMS сервері, можна збільшити значення лічильника за допомогою можливості створення снапшотов віртуальної машини в Hyper-V / VMWare. Алгоритм наступний:

  1. Створіть нову ВМ з Windows 10 (не активується її і не вводьте GVLK ключ, найкраще тимчасово відключити її від мережі)
  2. На робочому столі ВМ створіть наступні 2 скрипта, один з який скидає CMID і перейменовує ім'я хоста. Другий виконує активацію ОС.

    Rearm.bat
    start "cmd / c slmgr / rearm" timeout / t 10 / nobreak> NUL
    wmic computersystem where name = "% COMPUTERNAME%" call rename name = "pc-% random%"
    shutdown / r / t 0
    kms_activate.bat
    set skms = kms1.winitpro.ru
    sc start sppsvc
    script.exe "% systemroot% \ system32 \ slmgr.vbs" / skms% 1
    cscript.exe "% systemroot% \ system32 \ slmgr.vbs" / ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
    cscript.exe "% systemroot% \ system32 \ slmgr.vbs" / ato

  3. Помістіть скрипт kms_activate.bat в автозавантаження.
  4. Створіть снапшот віртуальної машини.
  5. Запустіть скрипт Rearm.bat з правами адміністратора. Віртуальна машина перезавантажиться і активується на KMS сервері.
  6. Відкотити стан ВМ до попереднього знімка.
  7. Виконайте кроки 5,6 стільки раз, скільки запитів активацій потрібно додати на KMS сервері.