Как взломать частный ключ к головоломке "День круглого круга" OKX (сопровождается полным кодом)

Автор:Изобретатель количественный, Создано: 2023-03-14 23:25:45, Обновлено: 2023-09-18 20:08:33

img

Посмотрите на соседний храм, где говорят, что ОКХ проводит День круглогодия, чтобы разгадать тайну.

img

Я, будучи старым фермером, увидев эту новость, немного поднял рот, открыл свой MacBook Pro, не сказал ни слова, начал.

Анализ

Официально говорится, что 61-разрядный ключ в изображении совпадает с окружностью, частный ключ, который, как мы знаем, имеет длину 32 байта, преобразуется в гекса, то есть 64 бита плюс префикс 0x, в общей сложности 66 битов, уже 61 бита, на первый взгляд на рисунок "0X" в первой строке, очевидно, не окружность частного ключа начинается префиксом, есть еще 5 правой ((0123456789ABCDEF)

С помощью инструментов Mac, которые мы принесли с собой, мы можем просто обработать цветные оттенки.

img

Это выглядит примерно так, а затем Mac автоматически распознает символы на изображении, и мы просто копируем:

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

Это точно не работает, мы сделали небольшую модификацию, чтобы скрыть неподтвержденные изображения, которые были помечены как *, не очень точно, но позже мы поговорим. Другие, застрявшие в рисунке, можно определить, наблюдая за формой печати других шрифтов, в этот раз мы на 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))

Результаты выполнения были следующими:

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

Если я добавлю 3 цифры, то там есть 3 неопределенности, и я попробую убрать его, потому что если я исключу остальные 61 цифру, это нормально. Оставляем только самые определенные различия, и в конечном итоге принимаем префикс:

0X1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744

Вы можете скачивать на Python, насильственно скачивать по цепочке OK, сравнивать, какой из частных ключей имеет баланс, а на самом деле вы можете выбрать публичный ключ, который имеет 314 USDT перевода, так что быстрее, если вы посмотрите на сайт, который говорит, что есть газ, вы можете просто посмотреть на баланс, код более беспорядочен.

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()
    

Вы можете видеть, что это требует 10 485 76 прохождений, чтобы использовать несколько потоков, чтобы запустить их на один из моих серверов.

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
以下省略......

В ожидании беспокойства, пришли плохие новости, тактика не сработала до выхода, показывают все

Вершина крутится

Не должно быть, Брюс не мог понять, и тогда я начал искать в Твиттере обсуждения, и обнаружил, что все шаги, которые я сделал, были почти такими же, но, что удивительно, никто не сказал, что расшифровка была успешной, и официально не опубликовали точные 61 цифру, и тогда я обратил внимание на странное сообщение, потому что между ними есть разница.D2299Я не сомневаюсь, но он выглядит уверенным.

img

Но этот человек, который разместил 61 номер, дал D2290, и он сказал, что он тщательно проверил, что это не имеет значения, просто случайность.

img

И я нашел 61 комментарий, которые были написаны несколькими другими людьми, и все они выглядели уверенно.

img

Все префиксы, найденные в поле комментариев, собраны и просмотрены с помощью жесткого кода, основной код не изменяется, не наклеивается.

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

На самом деле, есть еще несколько новых сообщений, и один из братьев, у которого тоже был другой ПИ, был потрясающим. Сначала бегите с этими двумя, не можете поверить своим глазам, выбегаете и показываете, что один из них прав, это ненаучно, частный ключ:

1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744C8155

Он здесь D229, но на картинке это D2299, а за 731 - 7, а за ним - 2. Но это точное 61-е число, и я не знаю, как он это вычислил, и мне любопытно, но я не сомневаюсь в своих действиях. Посмотрев в комментариях, официальный клиент сказал, что есть другая версия круговой скорости, и я был ошеломлен тем, что, учитывая то, что я узнал, и то, как люди понимают Вселенную, круговой скорость может представлять собой бесконечность Вселенной, ее дроби никогда не повторяются или не заканчиваются.

Это был ответ другого старшего брата, который ответил на вопросы клиентов:

img

Я не знаю, что это такое.

Код перевода Web3

Наконец, код, который переводит бонус, на этот раз я использовал непосредственно функцию Web3 платформы FMZ, адрес цепочки был настроен как OKC, а когда добавлялся частный ключ, он был недействителен, а затем были выполнены две строки, выполненные непосредственно в режиме инструмента дешифровки.

img

Доказательство

Адрес взломанного ключа

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

Смотрите ссылку:https://www.okx.com/cn/explorer/okc/address/0x0bd08825e05e540c9508961a32e58d14da47275a

Я не могу сказать, что я не знаю, что это такое.https://www.okx.com/cn/explorer/okc/tx/0x4211418b09571011417257201aaf10fc3c5d638809a9456eb5aba5fe8c5d4e2c

Вы можете увидеть адрес получателя.

0x25f0a126be95f437ee71d7c4de725567c5f6c731

img

Чтобы доказать, что это мой адрес, я перечислил счет в адрес черной дыры с помощью этого адреса получателя.

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

Адрес черной дыры:0x0000000000000000005757572e464d5a2e434f4d

Этот адрес чёрной дыры содержит последекодированный текст:

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

Последнее

Это конечная точка, чтобы вернуться назад и поблагодарить за накопленные знания, которые вы накопили за все эти годы, иначе вы не сможете расшифровать их так быстро, и вы будете опередины другими людьми. Официальная карта, конечно, ошибочна, но, по крайней мере, удалось ее расшифровать до того, как ответ был опубликован, и надеюсь, что OKX будет более строгим, когда в следующий раз будет проводить подобные мероприятия.


Связанные

Больше

Папочка.Сколько времени требуется 104 000 раз?

Джонни.З - это дерзость!

btcrobotПервоклассность

Ок количественныйЗ - это дерзость!

Изобретатель количественныйОколо 20 минут.

Изобретатель количественныйСтарая железная дорога