การเรียงสับเปลี่ยนทั้งหมดของคีย์ใบอนุญาต Windows


97

ฉันต้องการสมัครการอัปเกรด Windows 8 สำหรับแล็ปท็อปของฉันซึ่งฉันต้องการรหัสใบอนุญาต Windows 7 ที่ด้านล่างของแล็ปท็อป

เนื่องจาก Microsoft ตัดสินใจด้วยภูมิปัญญาที่ไม่มีที่สิ้นสุดในการสร้างป้ายชื่อใบอนุญาตที่เสื่อมสภาพและฉันไม่สามารถอ่านรหัสใบอนุญาตได้อย่างชัดเจนนั่นหมายความว่าฉันไม่สามารถลงทะเบียนแล็ปท็อปของฉันสำหรับข้อเสนอการอัปเกรด windows โดยใช้กระบวนการอัตโนมัติ

ด้วยการถือแล็ปท็อปในมุมที่มีแสงทำให้ฉันสามารถตรวจสอบรหัสส่วนใหญ่ได้ แต่ตัวอักษรหลายตัวไม่ชัดเจน (ขอขอบคุณ Microsoft อีกครั้งที่ใช้อักขระที่อ่านผิดในฉลากของคุณได้ง่าย)

ฉันมีคีย์ใบอนุญาต (ที่ทำให้สับสน) ต่อไปนี้

MPP6R-09RXG-2H[8B]MT-[B8]K[HN]M9-V[6G]C8R

ที่ตัวละครในวงเล็บเป็นคลุมเครือดังนั้นมันจึงเป็นอย่างใดอย่างหนึ่ง8หรือB, Bหรือ8, HหรือN, หรือ6G

ทำ 16 ชุด

เหมาะสมหรือไม่ที่จะสร้างการเรียงสับเปลี่ยนที่เป็นไปได้ของรหัสสัญญาอนุญาตนี้โดยใช้ itertools หรือมีวิธีที่ดีกว่านี้

ฉันได้รับคีย์ที่ถูกต้องโดยขอบคุณผู้ร่วมให้ข้อมูล วิธีที่สะดวกมากในการตรวจสอบว่าที่สำคัญคือการที่ถูกต้องคือการใช้การตรวจสอบที่สำคัญผลิตภัณฑ์ Windows 7


11
ฉันคิดว่าคุณสามารถเขียนรายการชุดค่าผสมสิบหกชุดด้วยมือซึ่งในที่สุดอาจใช้เวลาน้อยลง
Waleed Khan

17
เป็นคำถามที่น่าสนใจ +1
Flavius

13
ฉันคาดหวังว่าคุณจะเปลี่ยนอักขระที่รู้จักและคุณไม่ได้โพสต์คีย์ Windows จริงของคุณบนอินเทอร์เน็ต ...
rodrigo

1
นี่เป็นคำถามที่น่าสนใจมากที่จะโพสต์ไปที่codegolf.stackexchange.com
Earlz

4
@rodrigo ใช่ฉันทำให้รหัสสับสน :)
Kerridge0

คำตอบ:


166

คำเตือน:ใช่ฉันรู้ว่านี่ไม่ใช่รหัสPython มันโผล่เข้ามาในความคิดของฉันและฉันก็ต้องเขียนมันลงไป

วิธีที่ง่ายที่สุดคือการใช้การขยายเชลล์:

$ echo MPP6R-09RXG-2H{8,B}MT-{B,8}K{H,N}M9-V{6,G}C8R
MPP6R-09RXG-2H8MT-BKHM9-V6C8R
MPP6R-09RXG-2H8MT-BKHM9-VGC8R
MPP6R-09RXG-2H8MT-BKNM9-V6C8R
MPP6R-09RXG-2H8MT-BKNM9-VGC8R
MPP6R-09RXG-2H8MT-8KHM9-V6C8R
MPP6R-09RXG-2H8MT-8KHM9-VGC8R
MPP6R-09RXG-2H8MT-8KNM9-V6C8R
MPP6R-09RXG-2H8MT-8KNM9-VGC8R
MPP6R-09RXG-2HBMT-BKHM9-V6C8R
MPP6R-09RXG-2HBMT-BKHM9-VGC8R
MPP6R-09RXG-2HBMT-BKNM9-V6C8R
MPP6R-09RXG-2HBMT-BKNM9-VGC8R
MPP6R-09RXG-2HBMT-8KHM9-V6C8R
MPP6R-09RXG-2HBMT-8KHM9-VGC8R
MPP6R-09RXG-2HBMT-8KNM9-V6C8R
MPP6R-09RXG-2HBMT-8KNM9-VGC8R

8
ฉันรู้ว่านี่ไม่ใช่รหัสหลาม มันโผล่เข้ามาในความคิดของฉันและฉันชอบความคิดของมัน ไม่จำเป็นต้องลดคะแนนคำตอบนี้ :-(
bikeshedder

ไม่ใช่หลาม แต่เป็นวิธีการแก้ปัญหาที่สวยงาม
Yuval Adam

2
+1 ... และ Windows (เท่าที่ฉันรู้) ไม่มี "ส่วนขยาย" นี้ ... แต่คุณสามารถใช้ Cygwin
Barranka ได้ตลอด

55
Windows อาจไม่มี แต่ถ้าคุณจำเป็นต้องทำซ้ำ License Key ของ Linux .. เดี๋ยวก่อนนั่นเป็นอีกเหตุผลที่ฉันชอบ linux
Drake Clarris

1
ไม่เพียง แต่จะสั้นและไพเราะ แต่ยังให้คำตอบสำหรับการคัดลอกและวางที่สะอาดมาก มีตัวแปรตัวที่ 5 จริงๆและฉันก็ได้กุญแจมา !! จริงๆแล้วฉันได้ให้งาน "จดบันทึก" กับเพื่อนร่วมงานและเขาก็ยอมแพ้! ขอบคุณมาก.
Kerridge0


17

อีกวิธีในการสร้างชุดค่าผสม

>>> ['MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R' % (a, b, c, d)
...  for a in '8B' for b in 'B8' for c in 'HN' for d in '6G']
['MPP6R-09RXG-2H8MT-BKHM9-V6C8R',
 'MPP6R-09RXG-2H8MT-BKHM9-VGC8R',
 'MPP6R-09RXG-2H8MT-BKNM9-V6C8R',
 'MPP6R-09RXG-2H8MT-BKNM9-VGC8R',
 'MPP6R-09RXG-2H8MT-8KHM9-V6C8R',
 'MPP6R-09RXG-2H8MT-8KHM9-VGC8R',
 'MPP6R-09RXG-2H8MT-8KNM9-V6C8R',
 'MPP6R-09RXG-2H8MT-8KNM9-VGC8R',
 'MPP6R-09RXG-2HBMT-BKHM9-V6C8R',
 'MPP6R-09RXG-2HBMT-BKHM9-VGC8R',
 'MPP6R-09RXG-2HBMT-BKNM9-V6C8R',
 'MPP6R-09RXG-2HBMT-BKNM9-VGC8R',
 'MPP6R-09RXG-2HBMT-8KHM9-V6C8R',
 'MPP6R-09RXG-2HBMT-8KHM9-VGC8R',
 'MPP6R-09RXG-2HBMT-8KNM9-V6C8R',
 'MPP6R-09RXG-2HBMT-8KNM9-VGC8R']
>>> 

9

แล้วการใช้ itertools และ functools ในเวลาเดียวกันล่ะ?

>>> from operator import mod
>>> from functools import partial
>>> from itertools import product
>>> map(partial(mod, 'MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R'), product('8B', 'B8', 'HN', '6G'))
['MPP6R-09RXG-2H8MT-BKHM9-V6C8R', 'MPP6R-09RXG-2H8MT-BKHM9-VGC8R', 'MPP6R-09RXG-2H8MT-BKNM9-V6C8R', 'MPP6R-09RXG-2H8MT-BKNM9-VGC8R', 'MPP6R-09RXG-2H8MT-8KHM9-V6C8R', 'MPP6R-09RXG-2H8MT-8KHM9-VGC8R', 'MPP6R-09RXG-2H8MT-8KNM9-V6C8R', 'MPP6R-09RXG-2H8MT-8KNM9-VGC8R', 'MPP6R-09RXG-2HBMT-BKHM9-V6C8R', 'MPP6R-09RXG-2HBMT-BKHM9-VGC8R', 'MPP6R-09RXG-2HBMT-BKNM9-V6C8R', 'MPP6R-09RXG-2HBMT-BKNM9-VGC8R', 'MPP6R-09RXG-2HBMT-8KHM9-V6C8R', 'MPP6R-09RXG-2HBMT-8KHM9-VGC8R', 'MPP6R-09RXG-2HBMT-8KNM9-V6C8R', 'MPP6R-09RXG-2HBMT-8KNM9-VGC8R']

1
ดี! ฉันไม่เคยนึกถึงว่าคุณสามารถใช้ operator.mod เพื่อจัดรูปแบบสตริงได้ด้วย
ทอม

@MartijnPieters partialไม่จำเป็นต้องใช้เมื่อใช้formatเป็นมันไม่มีอะไรเปลี่ยนแปลงเมื่อเรียกโดยไม่มีหรือ*args **kwargsเมื่อใช้formatคุณไม่สามารถส่ง tuple โดยตรง map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G'))แต่ต้องแปลงเป็นข้อโต้แย้งครั้งแรก: ฉันยังคงใช้การ%จัดรูปแบบสตริงแบบเก่าเป็นจำนวนมากด้วยเหตุผลทางอารมณ์ ฉันควรพิจารณาใช้formatฟังก์ชันนี้บ่อยขึ้น
bikeshedder

ใช่ฉันวาดภาพอาร์กิวเมนต์ที่ใช้เป็น*args. ความผิดพลาดของฉัน.
Martijn Pieters

3

http://www.magicaljellybean.com/keyfinder/

Magical Jelly Bean Keyfinder เป็นยูทิลิตี้ฟรีแวร์ที่ดึงรหัสผลิตภัณฑ์ของคุณ (คีย์ cd) ที่ใช้ในการติดตั้งหน้าต่างจากรีจิสทรีของคุณ นอกจากนี้ยังมีไฟล์คอนฟิกูเรชันที่อัปเดตโดยชุมชนซึ่งดึงคีย์ผลิตภัณฑ์สำหรับแอปพลิเคชันอื่น ๆ อีกมากมาย

เพียงแค่เรียกใช้ในการติดตั้งที่คุณต้องการคีย์


2
น่าเสียดายที่ Windows ที่ติดตั้งบนแล็ปท็อปไม่ได้ใช้รหัสใบอนุญาตที่อยู่ด้านล่างของแล็ปท็อป แต่ติดตั้งโดยใช้ปุ่มปรับระดับเสียงขององค์กรบางประเภท Microsoft ไม่อนุญาตให้ใช้รหัสเหล่านี้เพื่อตรวจสอบการอัปเกรด windows
Kerridge0

1

หากคุณใช้ตัวเลือกWindows Anytime Upgradeโดยตรงจากภายใน Windows 7 คุณก็ไม่จำเป็นต้องรู้ว่าคีย์ใบอนุญาตคืออะไร

ตราบใดที่ระบบปฏิบัติการเปิดใช้งาน Windows 8 ก็จะเขียนทับระบบปฏิบัติการที่มีอยู่และวางทุกอย่างจาก Windows 7 ลงในโฟลเดอร์ "Windows-old" ซึ่งคุณสามารถลบได้เว้นแต่คุณจะต้องการไฟล์หรืออะไรบางอย่าง

กระบวนการอัปเกรด Windows จะค้นหาระบบปฏิบัติการ Windows ที่เปิดใช้งานแม้ Windows XP จะทำตราบเท่าที่เปิดใช้งานก่อนติดตั้งการอัปเกรด

คุณจะได้รับรหัสลิขสิทธิ์ Windows 8 ทางอีเมลเมื่อซื้อผ่าน Anytime Upgrade หากคุณซื้อการอัปเกรดจากร้านค้าคุณจะได้รับรหัสใบอนุญาตและURL สำหรับดาวน์โหลดหรือคุณเพียงแค่เสียบคีย์เข้ากับ Windows Anytime Upgrade และจะดาวน์โหลดและติดตั้งเอง


ถูกต้องอย่างไรก็ตามในขณะที่โพสต์รหัสนี้จำเป็นสำหรับ "ข้อเสนอการอัปเกรด Windows" กระบวนการนี้อาจเป็นประโยชน์สำหรับผู้ที่ต้องการติดตั้ง windows ใหม่โดยใช้โค้ดบน COA และไม่มีพาร์ติชันกู้คืนของผู้ผลิตอีกต่อไป
Kerridge0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.