मुख्यबोर्ड से विंडोज 8 उत्पाद कुंजी को पुनः प्राप्त करें


13

मेरा नया लैपटॉप विंडोज 8 के साथ प्रीइंस्टॉल्ड आया। Naively, जैसा कि मैं हूं, मैंने अभी हार्डड्राइव को फॉर्मेट किया और ठीक पुराने उबंटू को स्थापित किया। अब मैं फिर से ड्यूल बूट के लिए विंडोज 8 स्थापित करना चाहता हूं, लेकिन मेरे पास कोई डीवीडी नहीं है और आईएसओ डाउनलोड करने के लिए उत्पाद कुंजी की आवश्यकता है। वह कुंजी अब लैपटॉप के पीछे नहीं है, बल्कि मेनबोर्ड पर कहीं है।

क्या उबंटू का उपयोग करके मुख्यबोर्ड से उत्पाद कुंजी को पुनर्प्राप्त करने का कोई तरीका है?

जवाबों:


16

आमतौर पर, OEM निर्माताओं ने एक ROM पर इलेक्ट्रॉनिक रूप से एक कुंजी लोड की है। विंडोज इसकी पहचान करेगा और स्वचालित रूप से आपकी स्थापना को सक्रिय करेगा। इसलिए, आमतौर पर, आपको इस कोड को जानने की आवश्यकता नहीं है। हालाँकि, आप इसका उपयोग करते हुए कुछ निशान देख सकते हैं

sudo dmidecode

सूचीबद्ध के रूप में सूचीबद्ध OEM-specific Type, एन्कोडेड / एन्क्रिप्टेड, जो इसे पकड़ सकता है। एचपी और डेल जैसे प्रमुख ओईएम इसका उपयोग करते हैं। अधिक जानकारी के लिए विंडोज वेबसाइटों पर पूछें; यह गलत जगह है। एकमात्र विस्तार मुझे याद है कि एक को विंडोज इंस्टॉलेशन डिस्क (यानी गैर-खुदरा) के एक OEM संस्करण की आवश्यकता है।


मुझे याद है कि अतीत में लेनोवो थिंकपैड पर dmidecode का उपयोग किया गया था, लेकिन ऐसा लगता है कि इस लेनोवो आइडियापैड पर कहीं भी लाइसेंस कुंजी नहीं है। आखिरकार मैंने इसे /sys/firmware/acpi/tables/MSDMनीचे के दूसरे उत्तर में चक आर द्वारा वर्णित रूप में पाया ।
ल्यूक

24

एक और तरीका है कि उत्पादन की एक टन के माध्यम से देखने की आवश्यकता नहीं है:

sudo acpidump -b -t MSDM | dd bs=1 skip=56 2>/dev/null;echo

acpidump तालिका को डंप करता है (हेक्सडंप प्रारूप में डिफ़ॉल्ट), लेकिन -b विकल्प इसे कच्चे डेटा को आउटपुट करने के लिए कहता है। चूंकि हमें केवल तालिका के अंतिम भाग की आवश्यकता है, इसलिए आउटपुट को dd में पाइप करें, लेकिन अनावश्यक रद्दी को छोड़ दें। अंत में, इसे टर्मिनल-अनुकूल = डी बनाने के लिए अंत में एक प्रतिध्वनि जोड़ें

acpidump -t MSDM के रूप में अच्छी तरह से काम करेंगे, लेकिन कई लाइनों पर कुंजी टूट गई है, जिससे इसे कॉपी करना मुश्किल है।


Lekensteyn के लिए धन्यवाद अपडेट करें:

acpidumpउबंटू के साथ शिप किए गए नए संस्करण ऊपर वर्णित की तुलना में अलग तरीके से काम करते हैं। -B ध्वज acpidumpसभी परिस्थितियों में एक फ़ाइल को लिखने का कारण बनता है, इसलिए एक वैकल्पिक विधि कमांड का उपयोग करना है

sudo tail -c+57 /sys/firmware/acpi/tables/MSDM

एक वैध विंडोज 8 इंस्टॉलर को एसीपीआई में कुंजी का स्वचालित रूप से पता लगाना चाहिए और अंतर्निहित कुंजी के साथ इंस्टॉल करना जारी रखना चाहिए।

हालांकि, यह ध्यान दिया जाना चाहिए कि मैंने इस विधि का उपयोग अपने स्वयं के उत्पाद कुंजी का उपयोग करके VM में Win8 को स्थापित करने का प्रयास करने के लिए किया था, लेकिन यह स्वचालित रूप से यह कहते हुए निष्क्रिय हो गया कि उत्पाद कुंजी उपयोग में थी। तो, यह सभी वास्तविकता में बहुत कम उपयोग है। चूँकि Win8 OEM कीज़ को उस विशिष्ट कंप्यूटर से बाँधने के लिए डिज़ाइन किया गया है, इसलिए यदि आप Microsoft से कुंजी को अपंजीकृत करने के लिए कहेंगे तो आप ईंट की दीवार से टकराएँगे, ताकि आप इसका उपयोग VM में कर सकें, अकेले दूसरे कंप्यूटर को करने दें।

जिस तरह से आप कुंजी का उपयोग कर सकते हैं वह एकमात्र तरीका है अगर आपने कभी भी Win8 में बूट नहीं किया था, जिसके साथ आप शुरू नहीं हुए थे या नेटवर्क से कनेक्ट नहीं थे जब आपने किया था। फिर भी, यदि आपका वीएम / नया कंप्यूटर कभी भी नेटवर्क से कनेक्ट करने की अनुमति देता है, तो यह स्वचालित रूप से आपकी वास्तविक स्थापना को बेकार बनाने वाली कुंजी को पंजीकृत करेगा।


बस यह कोशिश कर रहा था, और ऊपर दिए गए आदेश में से एक वर्ण को काट दिया गया। मैंने इस्तेमाल किया sudo acpidump -b -t MSDM | dd bs=1 skip=56 2>/dev/null;echoऔर मुझे पूरी चाबी मिली।
एंड्रयू सी

आप सही हैं, इस बारे में खेद है। मेरे उत्तर को अपडेट करना।
चक आर।

1
-bविकल्प के लिए विशिष्ट है acpidumpकर्नेल पेड़ के साथ शामिल उपकरण। नए उबंटू संस्करण एक अलग acpidumpटूल (से iasl) के साथ जहाज करते हैं, जिसमें विभिन्न विकल्प होते हैं। मैं इस आदेश का परीक्षण नहीं कर सका, लेकिन यह काम करना चाहिए sudo acpidump -n HPET | tail -n+2 | xxd -r | head -c+57:। वैकल्पिक विधि:sudo tail -c+57 /sys/firmware/acpi/tables/MSDM
लेकेनस्टाइन

@Lekensteyn मैंने देखा कि हाल ही में जब मैं एमएस के साथ फोन पर था। यदि आप -b विकल्प करते हैं, तो यह किसी कारण से किसी फ़ाइल पर बम्पिंग करने में चूक करता है। मुझे आश्चर्य है कि अगर झंडा लगाने का कोई तरीका है कि एक पाइप तब नष्ट हो जाए जब उस पर कोई अधिक डेटा नहीं बचा हो ... एक और दिन के लिए एक और विषय। आपके पहले आदेश ने मेरे लिए काम नहीं किया, हालांकि दूसरा एक ठीक था। मैं इसे शामिल करने के लिए अपने उत्तर को अपडेट करूँगा =)
चक आर

1
उबंटू 16.04 LTS के लिए अद्यतन संस्करण उपयोग किया: "sudo पूंछ -c + 57 / sys / फर्मवेयर / ACPI / टेबल / MSDM" पुष्टि कर सकते हैं मैं एक सैमसंग लैपटॉप से मेरे Windows कुंजी मिल गया ठीक =)
Valross.nu

10
 sudo tail -c+57 /sys/firmware/acpi/tables/MSDM

यह मुझे MSI लैपटॉप पर मेरे OEM विंडोज 8 की उत्पाद कुंजी मिला।


3

आप सभी इस कोड का उपयोग कर सकते हैं जो साथ ही साथ काम करता है यदि ऊपर वाले आपके लिए काम नहीं करते हैं या आप अपनी कुंजी के साथ हेक्स आउटपुट देखना चाहते हैं। यह हेक्स बाइनरी एडिटर को आशीर्वाद देने के समान है। विंडोज की सामान्य प्रारूप HAN50-0L00M-4D31T-CR4ZY में उनकी कुंजी होगी। 5 समूहों में 5 अक्षर या संख्या।

$ ls /sys/firmware/acpi/tables
$ sudo hd /sys/firmware/acpi/tables/MSDM

00000000  ha ns oo lo oe at es ap  pl le sa uc ef or li fe  |Key in area|
00000010  cu si ca nb ro ha ms am  cu si ca nb ro ha ms am  |In key area|
00000020  it sj us ho wz ir ol lz  it sj us ho wz ir ol lz  |Area in key|
00000000  ha ns oo lo oe at es ap  pl le sa uc ef or li fe  |It is 5 x 5|
00000010  cu si ca nb ro ha ms am  cu si ca nb ro ha ms am  |Key in area|
00000020  it sj us ho wz ir ol lz  it sj us ho wz ir ol lz  |In key area|
00000050  ha ns oo lo ow az he re                           |Area in key|
00000055                                                    |It is 5 x 5|

निम्न आदेश को चलाना उत्पाद कुंजी को उसके मानक Microsoft प्रारूप में डंप कर देगा।

sudo hexdump -s 56 -e '"MSDM key: " /29 "%s\n"' /sys/firmware/acpi/tables/MSDM

0

इसलिए मैंने यहां अन्य उत्तरों को देखा और इसमें झंकार करने की आवश्यकता पाई

strings /sys/firmware/acpi/tables/MSDM

मूल कुंजी है जो अभी भी उपयोग किया जा रहा है महान काम करता है। हालांकि मेरे पास कुछ सिस्टम हैं जो होम एडिशन के साथ आए हैं और आपको रजिस्ट्री से वर्तमान कुंजी प्राप्त करने की आवश्यकता है।

winmount=/mnt
echo "hex \\Microsoft\\Windows NT\\CurrentVersion\\DigitalProductId\nq\nq" | chntpw -e ${winmount}/Windows/System32/config/SOFTWARE

फिर हमें कुंजी प्राप्त करने के लिए एक एल्गोरिथ्म के माध्यम से इसे चलाने की आवश्यकता होगी।

मुझे https://github.com/mrpeardotnet/WinProdKeyFinder/blob/master/WinProdKeyFind/KeyDecoder.cs से कुछ कोड मिले

    /// <summary>
    /// Decodes Windows Product Key from the DigitalProductId. 
    /// This method applies to DigitalProductId from Windows 7 or lower versions of Windows.
    /// </summary>
    /// <param name="digitalProductId">DigitalProductId to decode</param>
    /// <returns>Decoded Windows Product Key as a string</returns>
    private static string DecodeProductKey(byte[] digitalProductId)
    {
        const int keyStartIndex = 52;
        const int keyEndIndex = keyStartIndex + 15;
        var digits = new[]
        {
            'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R',
            'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9',
        };
        const int decodeLength = 29;
        const int decodeStringLength = 15;
        var decodedChars = new char[decodeLength];
        var hexPid = new ArrayList();
        for (var i = keyStartIndex; i <= keyEndIndex; i++)
        {
            hexPid.Add(digitalProductId[i]);
        }
        for (var i = decodeLength - 1; i >= 0; i--)
        {
            // Every sixth char is a separator.
            if ((i + 1) % 6 == 0)
            {
                decodedChars[i] = '-';
            }
            else
            {
                // Do the actual decoding.
                var digitMapIndex = 0;
                for (var j = decodeStringLength - 1; j >= 0; j--)
                {
                    var byteValue = (digitMapIndex << 8) | (byte)hexPid[j];
                    hexPid[j] = (byte)(byteValue / 24);
                    digitMapIndex = byteValue % 24;
                    decodedChars[i] = digits[digitMapIndex];
                }
            }
        }
        return new string(decodedChars);
    }

    /// <summary>
    /// Decodes Windows Product Key from the DigitalProductId. 
    /// This method applies to DigitalProductId from Windows 8 or newer versions of Windows.
    /// </summary>
    /// <param name="digitalProductId">DigitalProductId to decode</param>
    /// <returns>Decoded Windows Product Key as a string</returns>
    public static string DecodeProductKeyWin8AndUp(byte[] digitalProductId)
    {
        var key = String.Empty;
        const int keyOffset = 52;
        var isWin8 = (byte)((digitalProductId[66] / 6) & 1);
        digitalProductId[66] = (byte)((digitalProductId[66] & 0xf7) | (isWin8 & 2) * 4);

        const string digits = "BCDFGHJKMPQRTVWXY2346789";
        var last = 0;
        for (var i = 24; i >= 0; i--)
        {
            var current = 0;
            for (var j = 14; j >= 0; j--)
            {
                current = current*256;
                current = digitalProductId[j + keyOffset] + current;
                digitalProductId[j + keyOffset] = (byte)(current/24);
                current = current%24;
                last = current;
            }
            key = digits[current] + key;
        }

        var keypart1 = key.Substring(1, last);
        var keypart2 = key.Substring(last + 1, key.Length - (last + 1));
        key = keypart1 + "N" + keypart2;

        for (var i = 5; i < key.Length; i += 6)
        {
            key = key.Insert(i, "-");
        }

        return key;
    }

मैं एल्गोरिथ्म को डिकोड करने की कोशिश कर रहा हूं और इसे बैश में लिख रहा हूं। डमी आउटपुट कुंजी को डिकोड करने के लिए पुराना एल्गोरिथम (<win8) लगता है। मुझे नए एल्गोरिथ्म (> win7) का उपयोग करने का विकल्प नहीं मिला है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.