মূলবোর্ড থেকে উইন্ডোজ 8 পণ্য কী পুনরুদ্ধার করুন


13

আমার নতুন ল্যাপটপটি উইন্ডোজ ৮ এর সাথে পূর্বেই ইনস্টল করা হয়েছিল Na এখন আমি আবার দ্বৈত বুটের জন্য উইন্ডোজ 8 ইনস্টল করতে চাই, তবে আমার কোনও ডিভিডি নেই এবং আইএসও ডাউনলোড করতে কোনও পণ্য কী প্রয়োজন। সেই কীটি আর ল্যাপটপের পিছনে নেই তবে কোথাও মেইনবোর্ডে রয়েছে।

উবুন্টু ব্যবহার করে মূল বোর্ড থেকে পণ্য কীটি পুনরুদ্ধার করার কোনও উপায় আছে?

উত্তর:


16

সাধারণত, ওএম নির্মাতারা কোনও রমে একটি বৈদ্যুতিন সংকেত চাপিয়ে রেখেছেন। উইন্ডোজ এটি সনাক্ত করবে এবং স্বয়ংক্রিয়ভাবে আপনার ইনস্টলেশনটি সক্রিয় করবে। সুতরাং, সাধারণত, আপনার এই কোডটি জানার দরকার নেই। যাইহোক, যদি আপনি পারেন ব্যবহার করে এই কিছু অস্তিত্ব দেখতে পান

sudo dmidecode

OEM-specific Typeগুলি হিসাবে এনকোডড / এনক্রিপ্ট করা তালিকাভুক্ত , যা এটি ধারণ করতে পারে। এইচপি এবং ডেলের মতো প্রধান OEMগুলি এটি ব্যবহার করে। আরও তথ্যের জন্য উইন্ডোজ ওয়েবসাইটে জিজ্ঞাসা করুন; এই ভুল জায়গা। কেবলমাত্র আমি মনে রাখি যে কারওটির জন্য উইন্ডোজ ইনস্টলেশন ডিস্কের একটি OEM সংস্করণ প্রয়োজন (যেমন নন-রিটেইল)।


আমি অতীতে একটি লেনভো থিঙ্কপ্যাডে dmidecode ব্যবহার করার কথা মনে করি, তবে মনে হয় এই লেনোভো আইডিয়াপ্যাডে এটিতে কোথাও লাইসেন্স কী নেই। অবশেষে আমি এটি /sys/firmware/acpi/tables/MSDMনীচের অন্যান্য উত্তরে চ আর দ্বারা উল্লিখিত হিসাবে পেয়েছি ।
লুক

24

আরও একটি উপায় যার জন্য এক টন আউটপুট সন্ধানের প্রয়োজন নেই:

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

এসপিডাম্পটি টেবিলটি ফেলে দেয় (হেক্সডাম্প ফর্ম্যাটে ডিফল্ট) তবে -বি বিকল্পগুলি এটিকে কাঁচা ডেটা আউটপুট করতে বলে। যেহেতু আমাদের কেবল টেবিলের শেষ অংশটি প্রয়োজন, আউটপুটটি ডিডিতে পাইপ করুন তবে অপ্রয়োজনীয় জাঙ্কটি এড়িয়ে যান। পরিশেষে, এটিকে টার্মিনাল বান্ধব = ডি করতে শেষে একটি প্রতিধ্বনি যুক্ত করুন

acpidump -t MSDM পাশাপাশি কাজ করবে, তবে কীটি একাধিক লাইনে বিভক্ত হয়ে গেছে, এটি অনুলিপি করা শক্ত করে তোলে।


লেকেনস্টেইনকে ধন্যবাদ আপডেট করুন:

acpidumpউবুন্টু সহ শিপডের নতুন সংস্করণগুলি উপরে বর্ণিত চেয়ে ভিন্নভাবে কাজ করে। -B ফ্ল্যাগটি acpidumpসমস্ত পরিস্থিতিতে একটি ফাইলে লেখার কারণ , তাই একটি বিকল্প পদ্ধতি হ'ল কমান্ডটি ব্যবহার করা

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

একটি বৈধ উইন্ডোজ 8 ইনস্টলারকে এসিপিআইতে স্বয়ংক্রিয়ভাবে কীটি সনাক্ত করা উচিত এবং বিল্ট-ইন কী দিয়ে ইনস্টল করা চালিয়ে যাওয়া উচিত।

তবে এটি লক্ষ করা উচিত যে আমি আমার নিজস্ব পণ্য কী ব্যবহার করে একটি ভিএম-এ উইন 8 ইনস্টল করার চেষ্টা করার জন্য এই পদ্ধতিটি ব্যবহার করেছি, তবে এটি স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় হয়ে গেছে যে পণ্য কী ব্যবহার করা হয়েছিল। সুতরাং, এটি সমস্ত বাস্তবতায় অল্প ব্যবহার করে। যেহেতু উইন 8 ই এম কীগুলি সেই নির্দিষ্ট কম্পিউটারের সাথে আবদ্ধ হওয়ার জন্য তৈরি করা হয়েছে, আপনি যদি কোনও মাইক্রোসফ্টকে কীটি নিবন্ধন করতে বলেন তবে আপনি এটি একটি ভিএম-এ ব্যবহার করতে পারেন, অন্য কোনও কম্পিউটারকে ছেড়ে দিন a

আপনি কীটি ব্যবহার করার একমাত্র উপায় হ'ল আপনি যদি উইন 8 দিয়ে আরম্ভ করার জন্য কখনও বুট না করেন বা কোনও নেটওয়ার্কের সাথে সংযুক্ত না হয়ে থাকেন when তবুও, যদি আপনার ভিএম / নতুন কম্পিউটারটিকে কখনও নেটওয়ার্কের সাথে সংযোগ স্থাপনের অনুমতি দেওয়া হয় তবে এটি স্বয়ংক্রিয়ভাবে আপনার প্রকৃত ইনস্টলেশনটিকে অকেজো করে তোলে এমন কীটি নিবন্ধভুক্ত করবে।


কেবল এটি চেষ্টা করে দেখছিলাম, এবং উপরের কমান্ডটি একটি অক্ষর কেটে দিয়েছে। আমি ব্যবহার করেছি 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
লেকেনস্টেইন

@ লেকেনস্টেইন আমি লক্ষ্য করেছি যে সম্প্রতি আমি যখন এমএস নিয়ে ফোনে ছিলাম। আপনি যদি-বি অপশনটি করেন তবে এটি কোনও কারণে এখন কোনও ফাইলের কাছে বম্পিং করা ডিফল্ট। আমি ভাবছি যে পতাকা লাগানোর কোনও উপায় আছে যে কোনও পাইপ নষ্ট হয়ে গেলে সেখানে কোনও ডেটা অবশিষ্ট থাকে না ... যদিও অন্য এক দিনের জন্য অন্য বিষয়। আপনার প্রথম কমান্ডটি আমার পক্ষে কার্যকর হয়নি, তবে দ্বিতীয়টি ঠিক ছিল। আমি আমার উত্তরটি এতে অন্তর্ভুক্ত করে আপডেট করব =)
চক আর

1
উবুন্টু 16.04 এলটিএসের জন্য আপডেট হওয়া সংস্করণ ব্যবহার করা হয়েছে: "সুডো টেল-সি + 57 / এসআইএস / ফার্মওয়্যার / এসপিআই / টেবিল / এমএসডিএম" নিশ্চিত করতে পারি যে আমার উইন্ডোজ কীটি একটি স্যামসাং ল্যাপটপ থেকে পেয়েছি ঠিক = =)
Valross.nu

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

এটি এমএসআই ল্যাপটপে আমার OEM উইন্ডোজ 8 এর পণ্য কী পেয়েছে।


3

উপরের যেগুলি আপনার পক্ষে কাজ করে না বা আপনি যদি আপনার কী দিয়ে হেক্স আউটপুট দেখতে চান তবে আপনি সকলেই এই কোডটি ব্যবহার করতে পারেন works এটি হেক্স বাইনারি সম্পাদককে আশীর্বাদ করার মতো। উইন্ডোগুলির সাধারণ কী 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|

নিম্নলিখিত কমান্ডটি চালনা করা পণ্য কীটিকে তার স্ট্যান্ডার্ড মাইক্রোসফ্ট ফর্ম্যাটে ফেলে দেবে।

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

0

সুতরাং আমি অন্যান্য উত্তরগুলি এখানে দেখতে পেয়েছি এবং চিম ইন করা দরকার found

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;
    }

আমি চেষ্টা করে যাচ্ছি এবং অ্যালগরিদমটি ডিকোড করব এবং এটি ব্যাশে লিখব। কী ডিকোড করার জন্য ডিএমআই আউটপুটটি পুরানো অ্যালগরিদম (<উইন 8) বলে মনে হচ্ছে। আমি নতুন অ্যালগরিদম (> উইন 7) ব্যবহারের জন্য কোনও বিকল্প খুঁজে পাইনি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.