Type/to search
11
Follow
651
Followers
Cách bẻ khóa giải thưởng câu đố khóa riêng của OKX cho Ngày Pi thế giới (có mã đầy đủ)
Original
Created 2023-03-14 23:25:45  Updated 2024-11-29 18:57:29
 6
 2239

img

Tôi thấy trong nhóm chuyên gia bên cạnh OKX đang tổ chức sự kiện giải mã bí ẩn Ngày Pi Thế giới, chủ đề như sau

img

Là một lập trình viên kỳ cựu, sau khi xem tin tức, khóe miệng tôi hơi cong lên, tôi mở MacBook Pro và bắt đầu làm việc mà không nói gì.

phân tích

Các viên chức cho biết có 61 bit của khóa trong phần hình ảnh chồng lên pi. Như chúng ta đều biết, độ dài của khóa riêng là 32 byte, được chuyển đổi thành hex, tức là 64 bit cộng với tiền tố 0x , tổng cộng 66 bit, 61 bit đã có. Thoạt nhìn, "0X" ở dòng đầu tiên của hình ảnh rõ ràng không phải là pi, mà là tiền tố của khóa riêng. Sau đó có 5 chữ số (0123456789ABCDEF) của sắp xếp ngẫu nhiên các ký tự này. Không có vấn đề gì với việc chạy brute force, vì vậy hãy bắt đầu

Sử dụng các công cụ tích hợp của Mac để làm sắc nét và điều chỉnh màu sắc một cách đơn giản

img

Có vẻ như thế này. Mac có thể tự động nhận dạng các ký tự trên hình ảnh. Hãy sao chép chúng trực tiếp:

3.141592653589793230X1D64338 А694502884197169399375105820 974925E123078164062862089986 28033DB034211706409914808651 32823066470ED424609550582231 8B3 81284 •探索, 038 永无止境 027 493 05% 0128 4756482337867831731712019091 47D9E56692346034861045432664 8213393607743749141273724587 006606315588174881BEEA209628 2925409192744436789259036001

Điều này chắc chắn không thể sử dụng được. Hãy sửa thủ công. Những mục bị hình ảnh chặn và không được xác nhận sẽ được đánh dấu là*Không. Không chắc lắm, tôi sẽ nói với bạn sau.
Những font chữ khác bị chặn bởi hình ảnh có thể được đánh giá bằng cách quan sát hình dạng nét của các font chữ khác. Lúc này, chúng tôi sử dụng Python để tính toán sự khác biệt giữa hai font chữ. Tương tự như vậy_' có nghĩa là chỉ khác nhau

python
img = ''' 3.141592653589793230X1D64338 A694502884197169399375105820 974925E123078164062862089986 28033DB034211706409914808651 32823066470ED424609550582231 8B32594081284811174502841027 0193**2*D2299964462294895493 0381960EFC8103F9365933446128 4756482337867831731712019091 47D9E56692346034861045432664 82133936077A3749141273724587 006606315588174881BEEA209628 2925409192744436789259036001 ''' # 真实圆周率 real=''' 3.14159265358979323846264338 3279502884197169399375105820 9749445923078164062862089986 2803482534211706798214808651 3282306647093844609550582231 7253594081284811174502841027 0193852110555964462294895493 0381964428810975665933446128 4756482337867831652712019091 4564856692346034861045432664 8213393607260249141273724587 0066063155881748815209209628 2925409171536436789259036001 ''' items = img.strip().split('\n') diffStr = '' for pos, line in enumerate(real.strip().split('\n')): for i, c in enumerate(line): imgLine = list(items[pos]) if line[i] == imgLine[i]: imgLine[i] = '_' else: diffStr += imgLine[i] items[pos] = ''.join(imgLine) print('\n'.join(items)) print(diffStr, 'Len:', len(diffStr))

Kết quả thực hiện như sau:

___________________0X1D_____ A694________________________ ____25E1____________________ ____3DB0________4099________ ___________ED42_____________ 8B32________________________ ____**_*D2299_______________ ______0EFC___3F93___________ ________________731_________ _7D9E_______________________ __________7A37______________ __________________BEEA______ ________92744_______________ 0X1DA69425E13DB04099ED428B32***D22990EFC3F937317D9E7A37BEEA92744 Len: 64

Có 3 chữ số thừa, không chắc chắn. Hãy loại bỏ chúng và thử lại. Bởi vì sau khi loại bỏ chúng, 61 chữ số còn lại đều đúng.
Chỉ những khác biệt chắc chắn nhất được giữ lại và tiền tố cuối cùng như sau

0X1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744

Tiếp theo, chúng ta vẫn cần sử dụng Python để leo thang mạnh mẽ số dư trên chuỗi OK và so sánh khóa riêng nào có số dư. Trên thực tế, bạn cũng có thể chọn khóa công khai trước với chuyển khoản 314USDT, nhanh hơn. Theo trang web chính thức , còn gas. Chỉ cần kiểm tra số dư trực tiếp. Mã này lộn xộn.

python
import sys import web3,time,logging from eth_account import Account from web3 import Web3 logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s') w3 = Web3(Web3.HTTPProvider("https://exchainrpc.okex.org")) logging.info(w3.clientVersion) found = None def get_balance_gas(key): global found _counter += 1 address = Account.from_key(key).address logging.info('fetch address %s %s' % (found, address)) while True: try: balance = w3.eth.get_balance(address) break except: logging.warning(traceback.format_exc()) time.sleep(1) continue if balance != 0: found = key raise BaseException('Found balance: %s %s' % (address, balance)) return balance from concurrent.futures import ThreadPoolExecutor executor = ThreadPoolExecutor(max_workers=50) keys = [] prefix = '1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744' # 无所谓优化算法了, 争分夺秒跑密钥 ch = '0123456789ABCDEF' for a in range(0, 16): for b in range(0, 16): for c in range(0, 16): for d in range(0, 16): for e in range(0, 16): keys.append("0x"+prefix+ch[a]+ch[b]+ch[c]+ch[d]+ch[e]) print('all keys:', len(keys)) tasks = [None for t in keys] for idx, key in enumerate(keys): tasks[idx] = executor.submit(get_balance_gas, key) for t in tasks: t.result()

Bạn có thể thấy rằng nó cần phải được duyệt 1048576 lần. Sử dụng đa luồng nhanh hơn nhiều. Chạy nó trên một trong các máy chủ của tôi.

2023-03-15 00:20:19,491 exchain-v1.6.8.5 all keys: 1048576 2023-03-15 00:20:20,372 fetch address None 0xc20C41f06F2428a0FD84ef03Ec6960992F5f8016 2023-03-15 00:20:20,473 fetch address None 0xcFa87ee54bc1c14c09a3AB3f41640bBab5C5480a 2023-03-15 00:20:20,483 fetch address None 0x126E922652f8B276F231D0eCA94d98685a26a45D 以下省略......

Đang hồi hộp chờ đợi~~~~, tin xấu, không có kết quả nào trước khi chiến lược thoát, tất cả hiển thị là Không có

Một sự thay đổi đột ngột của các sự kiện

Điều này không nên xảy ra. Tôi không thể hiểu được. Tôi bắt đầu đọc các cuộc thảo luận của mọi người trên Twitter và thấy rằng mọi người đều đã làm theo các bước tương tự như tôi. Nhưng điều kỳ lạ là không ai nói rằng việc giải mã đã thành công , và viên chức vẫn chưa công bố. 61 chữ số đầu tiên chính xác. Lúc này, một câu trả lời kỳ lạ đã thu hút sự chú ý của tôi vì có sự khác biệt ở giữa.D2299Tôi chắc chắn là không có ai phản đối, nhưng anh ấy cũng có vẻ rất tự tin.

img

Nhưng chữ số thứ 61 mà người này đưa ra là D2290. Anh ta cũng nói rằng đã kiểm tra cẩn thận rồi. Không sao cả. Chúng ta hãy thử vận ​​may của mình. Dù sao thì cũng chỉ là lãng phí điện.

img

Với thái độ cố gắng, tôi tìm được một số người khác để lại tin nhắn nói rằng họ đã tìm được 61 người và tất cả họ đều có vẻ rất tự tin.

img

Tôi đã thu thập tất cả các tiền tố được tìm thấy trong phần bình luận và duyệt qua chúng bằng mã trước đó. Mã cơ bản không thay đổi nhiều, vì vậy tôi sẽ không dán lại nữa.

prefixs =[ '1DA69425E13DB04099ED428B3202290EFC3F9317317D9E7A37BEEA92744', '1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744', '1DA69425E13DB04099ED428B320D2290EFC3F937317D9E7A37BEEA92744', '1DA694255E3DB040990ED428B3208890EFC3F937317D9E7A37BEEA92744', '1DA69425E13DB04099ED428B3202299EFC3F9317317D9E7A37BEEA92744', '1DA69425E13DB01099ED428B3202290EFC3F9317317D9E7A37BEEA92744', '1DA69425E13DB04099ED428B32D2290EFC3F9317317D9E7A37BEEA92744', '1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744', ]

Thực tế, có nhiều bình luận mới hơn. Giá trị PI của một anh khác với tôi. Thật đáng kinh ngạc.
Trước tiên, hãy chạy những cái này. Tôi không tin vào mắt mình. Nó thực sự hoạt động. Điều này có nghĩa là một trong những tiền tố ở trên là đúng. Điều này không mang tính khoa học. Khóa riêng là:

1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744C8155

Số của anh ấy là D229, nhưng hình ảnh cho thấy rõ ràng là D2299, và có số 7 sau số 731, nhưng anh ấy có hai số.
Nhưng hóa ra là đúng 61 chữ số. Tôi không biết anh ấy tính toán thế nào. Tôi rất tò mò, nhưng tôi không nghi ngờ hoạt động của mình. Tôi thấy trong phần bình luận rằng bộ phận dịch vụ khách hàng chính thức nói rằng có một phiên bản khác của pi. Tôi không biết gì cả. Kiến thức học được và sự hiểu biết hiện tại về vũ trụ của con người, số vô tỷ pi có thể biểu diễn vô hạn của vũ trụ, và phần thập phân của nó sẽ không bao giờ lặp lại hoặc kết thúc. Bạn có thể nghĩ về nó như UUID của vũ trụ mà bạn đang sống. Nếu có những phiên bản khác, có thể là từ một thế giới song song.

Đây là phản hồi của bộ phận chăm sóc khách hàng sau khi một anh lớn khác bày tỏ sự nghi ngờ:

img

Đó là sự gia tăng kiến ​​thức.

Mã chuyển tiền Web3

Cuối cùng, đây là mã để chuyển tiền thưởng. Lần này tôi trực tiếp sử dụng chức năng Web3 của nền tảng FMZ. Tôi chỉ đặt địa chỉ chuỗi thành OKC. Khi thêm khóa riêng vào sàn giao dịch, dù sao thì cũng không quan trọng. Sau đó Tôi có thể làm điều đó trong hai dòng. Thực hiện ở chế độ gỡ lỗi

img

chứng minh

Địa chỉ khóa công khai bị bẻ khóa

>>> from eth_account import Account >>> Account.from_key('0x1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744C8155').address '0x0bd08825e05e540C9508961a32E58D14da47275A'

Xem liên kết: https://www.okx.com/cn/explorer/okc/address/0x0bd08825e05e540c9508961a32e58d14da47275a

TX sau khi tôi lấy nó đi: https://www.okx.com/cn/explorer/okc/tx/0x4211418b09571011417257201aaf10fc3c5d638809a9456eb5aba5fe8c5d4e2c

Bạn có thể thấy địa chỉ người nhận là

0x25f0a126be95f437ee71d7c4de725567c5f6c731

img

Để chứng minh địa chỉ này là của tôi, tôi đã sử dụng địa chỉ của người nhận để chuyển tiền đến một địa chỉ hố đen.

https://www.okx.com/cn/explorer/okc/tx/0xc32b5e299064456af3eb67c34a3b153f74a1bd18a31429052e3e3c5614bcdb6e

Địa chỉ lỗ đen là
0x0000000000000000005757572e464d5a2e434f4d

Địa chỉ lỗ đen này chứa một URL, sau khi giải mã, là

~ % python -c 'print(bytes.fromhex("0000000000000000005757572e464d5a2e434f4d"))' b'\x00\x00\x00\x00\x00\x00\x00\x00\x00WWW.FMZ.COM'

Lời bạt

Đây là kết thúc. Nhìn lại, tôi biết ơn vì đã tích lũy được kiến ​​thức trong nhiều năm. Nếu không, tốc độ bẻ khóa sẽ không nhanh như vậy và những người khác sẽ vượt lên trước tôi.
Tôi chắc chắn rằng có lỗi trong sơ đồ chính thức. Dù sao thì tôi cũng may mắn khi đã tìm ra câu trả lời trước khi nó được công khai. Tôi hy vọng OKX sẽ nghiêm ngặt hơn vào lần tới khi tổ chức một sự kiện tương tự.

Comment
All comments (6)

    104万次得花多少时间

    3 years ago

    20分钟左右

    3 years ago

    Z大牛逼!!!

    3 years ago

    动手能力一流

    3 years ago

    Z大牛逼!!!

    3 years ago

    老铁来了

    3 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)