Tất cả các hoán vị của khóa cấp phép Windows


97

Tôi cần đăng ký bản nâng cấp Windows 8 cho máy tính xách tay của mình, tôi cần có khóa cấp phép Windows 7 ở mặt dưới của máy tính xách tay.

Bởi vì Microsoft đã quyết định với sự khôn ngoan vô hạn của họ để tạo ra các nhãn cấp phép bị mòn và tôi không thể đọc rõ khóa cấp phép của mình, điều đó có nghĩa là tôi không thể đăng ký máy tính xách tay của mình cho ưu đãi nâng cấp windows bằng quy trình tự động.

Bằng cách giữ máy tính xách tay ở một góc so với ánh sáng, tôi đã có thể xác minh hầu hết các mã nhưng một số chữ cái không rõ ràng (một lần nữa cảm ơn Microsoft đã sử dụng các ký tự dễ đọc nhầm trong nhãn của bạn).

Tôi có khóa cấp phép (bị xáo trộn) sau đây,

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

nơi các nhân vật trong ngoặc vuông là không rõ ràng, vì vậy nó là một trong hai 8hoặc B, Bhoặc 8, Hhoặc N, 6hoặc G.

Lập 16 tổ hợp.

Có thích hợp để tạo ra các hoán vị có thể có của khóa cấp phép này bằng cách sử dụng itertools hay không hay có cách nào tốt hơn?

Tôi đã nhận được chìa khóa chính xác nhờ những người đóng góp. Một cách rất tiện lợi để kiểm tra xem khóa có hợp lệ hay không là sử dụng trình kiểm tra khóa sản phẩm của Windows 7 .


11
Tôi nghĩ bạn có thể liệt kê ra mười sáu cách kết hợp bằng tay, cuối cùng có thể mất ít thời gian hơn.
Waleed Khan

17
Một câu hỏi thú vị. +1
Flavius

12
Tôi thực sự hy vọng rằng bạn đã thay đổi một số trong những nhân vật được công nhận và bạn không đăng phím Windows thực sự của bạn trên Internet ...
Rodrigo

1
Heh, sẽ đã là một câu hỏi rất thú vị để đường bưu điện đến codegolf.stackexchange.com
Earlz

4
@rodrigo Có, tôi đã làm xáo trộn mã :)
Kerridge.

Câu trả lời:


165

Tuyên bố từ chối trách nhiệm: Có, tôi biết rằng đây không phải là mã Python . Nó chỉ hiện ra trong đầu tôi và tôi chỉ đơn giản là phải viết nó ra.

Cách đơn giản nhất là sử dụng mở rộng trình bao:

$ 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
Tôi biết rằng đây không phải là mã python. Nó chỉ nảy ra trong đầu tôi và tôi thích ý tưởng về nó. Không cần phải từ chối câu trả lời này. :-(
bikeshedder

Không phải python, nhưng dù sao thì cũng là một giải pháp tuyệt vời.
Yuval Adam

2
1 ... và Windows (như xa như tôi biết) không có này "mở rộng" ... nhưng bạn luôn có thể sử dụng Cygwin
Barranka

55
Vâng Windows có thể không có nó, nhưng nếu bạn đã bao giờ cần phải lặp license key Linux của bạn .. oh chờ đợi, đó là một lý do tôi yêu linux
Drake Clarris

1
Nó không chỉ ngắn gọn và hấp dẫn mà còn đưa ra câu trả lời một cách rất rõ ràng để sao chép và dán. Thực ra có một biến thứ 5, và tôi đã lấy được chìa khóa của mình !! Tôi thực sự đã giao nhiệm vụ "viết nó ra" cho một đồng nghiệp, và anh ta đã từ bỏ! Cảm ơn rất nhiều.
Kerridge:

59
from itertools import product
for perm in product('8B', 'B8', 'HN', '6G'):
    print 'MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R' % perm

17

Một cách khác để tạo các kết hợp

>>> ['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

Làm thế nào về việc sử dụng itertools và functools cùng một lúc?

>>> 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
Đẹp! Tôi chưa bao giờ nghĩ rằng bạn có thể sử dụng operator.mod để thực hiện định dạng chuỗi.
Tom

@MartijnPieters partialkhông bắt buộc khi sử dụng formatvì nó không thay đổi gì khi được gọi mà không có *argshoặc **kwargs. Khi sử dụng formatbạn không thể vượt qua tuple trực tiếp nhưng cần phải chuyển nó sang tranh luận đầu tiên: map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G')). Tôi vẫn sử dụng %định dạng chuỗi cũ rất nhiều vì lý do tình cảm. Tôi thực sự nên xem xét việc sử dụng formatchức năng thường xuyên hơn.
xe đạp

Vâng, bằng cách nào đó, tôi hình dung ra các đối số được áp dụng như *args. Lỗi của tôi.
Martijn Pieters

3

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

Magical Jelly Bean Keyfinder là một tiện ích phần mềm miễn phí lấy Khóa sản phẩm (khóa cd) của bạn được sử dụng để cài đặt các cửa sổ từ sổ đăng ký của bạn. Nó cũng có tệp cấu hình do cộng đồng cập nhật để truy xuất khóa sản phẩm cho nhiều ứng dụng khác.

Chỉ cần chạy nó trên bản cài đặt mà bạn muốn có khóa.


2
Thật không may, Windows được cài đặt trên máy tính xách tay không sử dụng khóa cấp phép được tìm thấy ở mặt dưới của máy tính xách tay, mà được cài đặt bằng một số loại phím âm lượng công ty. Microsoft không cho phép sử dụng những mã này để xác thực nâng cấp windows.
Kerridge:

1

Nếu bạn sử dụng tùy chọn Windows Anytime Upgrade trực tiếp từ bên trong Windows 7, thì bạn KHÔNG cần biết khóa cấp phép là gì.

Miễn là hệ điều hành được kích hoạt thì Windows 8 sẽ chỉ ghi đè lên hệ điều hành hiện có và đặt mọi thứ từ Windows 7 vào một thư mục "Windows cũ" mà bạn có thể xóa trừ khi cần tệp hoặc thứ gì đó.

Quá trình nâng cấp Windows tìm kiếm một hệ điều hành Windows đã được kích hoạt, ngay cả Windows XP cũng sẽ thực hiện miễn là nó được kích hoạt trước khi cài đặt bản nâng cấp.

Bạn sẽ được gửi qua email khóa cấp phép Windows 8 khi mua thông qua Nâng cấp mọi lúc. Nếu bạn mua bản nâng cấp từ cửa hàng, bạn sẽ chỉ nhận được khóa cấp phép và URL tải xuống HOẶC bạn chỉ cần cắm khóa vào Windows Anytime Upgrade và nó sẽ tự tải xuống và cài đặt.


Đúng, tuy nhiên tại thời điểm đăng mã này là cần thiết cho "Đề nghị nâng cấp Windows". Quá trình này cũng có thể hữu ích cho những ai muốn cài đặt lại cửa sổ bằng mã trên COA và không có phân vùng khôi phục của nhà sản xuất nữa.
Kerridge:
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.