Wie man OKX-Privat-Key-Rätsel-Preis für den Weltkreistag knackt (vollständiger Code mit)

Schriftsteller:Der Erfinder quantifiziert, Erstellt: 2023-03-14 23:25:45, Aktualisiert: 2023-09-18 20:08:33

img

Schauen Sie sich die Nachbarschaft an, die sagt, dass OKX sich für den Tag der Weltrundrunde mit dem Thema der Rätsellösung beschäftigt.

img

Als erfahrener Landwirt, als ich die Nachricht sah, hob ich den Mund, öffnete mein MacBook Pro, sagte nichts und fing an.

Analyse

Offiziell heißt es, dass es 61-Bit-Schlüssel gibt, die sich in dem Bild mit dem Umfang der Kreislänge überschneiden. Der private Schlüssel ist 32 Bytes lang und wird in Hex umgewandelt, also 64 Bits plus 0x Präfix, insgesamt 66 Bits, es gibt 61 Bits.

Einfach mit dem mitgelieferten Tool für den Mac.

img

So sieht es aus, und dann erkennt der Mac automatisch die Charaktere in den Bildern, die wir direkt kopieren:

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

Das kann nicht funktionieren, wir haben es manuell verändert, und die unbestätigten Bilder, die überdeckt sind, werden als * markiert, unsicher, aber wir werden später darüber sprechen. Die anderen sind in Bildern verankert und können durch das Beobachten der Schriftform anderer Schriftarten ermittelt werden. Diesmal gehen wir in Python und berechnen den Unterschied zwischen zwei, die mit dem gleichen tag_' dargestellt werden, nur um die unterschiedlichen zu zeigen

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

Das Ergebnis ist folgendermaßen:

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

Wenn wir 3 Zähler hinzufügen, dann gibt es 3 unsichere Zähler, und wir müssen ihn wegnehmen, denn wenn wir die anderen 61 Zähler ausschließen, dann ist das okay. Nur die klarsten Unterschiede bleiben, und schließlich wird die Präfixform wie folgt berücksichtigt:

0X1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744

Und dann geht es weiter nach unten, in Python, und dann kriecht man die Balance in die OK-Kette, um zu vergleichen, welcher privaten Schlüssel den Rest hat, und man kann auch den öffentlichen Schlüssel auswählen, der 314 USDT überwiesen hat, und das ist schneller.

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

Sie können sehen, dass es 1048576 Schritte dauert, um mehrere Threads zu verwenden, um es auf einem meiner Server zu laufen.

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

In einem angespannten Wartezeitraum erscheint die schlechte Nachricht, die Strategie, die vor dem Ausstieg nicht funktioniert hat, zeigt NONE

Die Spitze ist umgedreht

Ich habe angefangen, die Diskussionen auf Twitter zu lesen, und fand heraus, dass alle Schritte, die ich gemacht habe, nahezu dieselben waren, aber seltsamerweise hat niemand gesagt, dass es gelungen ist, sie zu entschlüsseln, und die offizielle Liste der richtigen 61 wurde nicht veröffentlicht, und ein seltsamer Feedback hat meine Aufmerksamkeit erregt, weil es einen Unterschied gibt.D2299Ich bin mir sicher, aber er wirkt auch sehr selbstbewusst.

img

Aber dieser Typ gibt 61 Ziffern, und es ist D2290, und er sagt, dass es sorgfältig geprüft wurde, egal, es ist nur ein Zufall, dass es eine Verschwendung von Strom ist.

img

In der Versuchsbereitschaft fand ich 61 von den Kommentaren, die ich von einigen anderen erhielt, und alle sahen sehr selbstbewusst aus.

img

Die Kommentarbereiche wurden mit den vorgegebenen Präfixen zusammengefasst und mit einem starken Code durchlaufen, der grundlegenden Code wurde nicht verändert und nicht mehr eingeblendet.

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

Es gibt sogar noch mehr neue Beiträge, und ein Bruder, der einen anderen PI hat als ich, ist fantastisch. Wenn man mit diesen drei läuft, kann man nicht glauben, was man sieht, aber man läuft raus, um zu zeigen, dass eine der beiden Schlüssel richtig ist, das ist unwissenschaftlich, der private Schlüssel ist:

1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744C8155

Er ist D229 hier, aber das Bild zeigt deutlich, dass es D2299 ist, und 731 hinter einer 7 ist, und er ist zwei hier, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei, und er ist zwei. Aber es ist wirklich die richtige 61 und es ist unbekannt, wie er es selbst berechnet hat, und ich bin sehr neugierig, aber ich habe keine Zweifel an meiner Handlung, und ich bin überrascht, dass der Kommentarbereich sagt, dass die offiziellen Kunden sagen, dass es eine andere Version der Umlaufrate gibt. Mit dem Wissen, das ich gelernt habe, und dem derzeitigen Verständnis der Menschheit für das Universum, kann diese unvernünftige Umlaufrate die Unendlichkeit des Universums repräsentieren, und ihre Teilchen werden sich nie wiederholen oder beenden.

Das ist die Antwort eines weiteren älteren Bruders auf die Frage des Kundendienstes:

img

Es ist ein Kinderspiel.

Web3 Währungsumwandlung

Schließlich gibt es den Code, der den Bonus umwandelt, und diesmal benutze ich direkt die Web3-Funktion der FMZ-Plattform, die die Kette als OKC einstellt, und die private Schlüssel, die man an die Börse hinzufügt, funktioniert einfach nicht, und dann machen wir es in zwei Zeilen, direkt im Debug-Tool-Modus.

img

Beweise

Die öffentliche Schlüsseladresse nach dem Hacken

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

Sieh dir den Link an:https://www.okx.com/cn/explorer/okc/address/0x0bd08825e05e540c9508961a32e58d14da47275a

TX: Ich bin nicht derjenige, der sich für die Zukunft entscheidet.https://www.okx.com/cn/explorer/okc/tx/0x4211418b09571011417257201aaf10fc3c5d638809a9456eb5aba5fe8c5d4e2c

Sie können sehen, dass die Adresse des Empfängers

0x25f0a126be95f437ee71d7c4de725567c5f6c731

img

Um zu beweisen, dass die Adresse meine ist, habe ich eine Rechnung mit der Adresse des Empfängers an eine Blackhole-Adresse überwiesen.

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

Die Adresse des Schwarzen Lochs lautet0x0000000000000000005757572e464d5a2e434f4d

Die Adresse des Schwarzen Lochs enthält einen Postcode, der lautet:

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

Nachträglich

Das war's, wenn man zurückkehrt und dankbar ist für all die Jahre, die man gesammelt hat, sonst ist man nicht so schnell und wird von anderen überholt. Es ist sicher, dass die offiziellen Bilder fehlerhaft sind, aber es ist besser, wenn die Antworten entschlüsselt werden, bevor sie veröffentlicht werden, und ich hoffe, dass OKX bei der nächsten Veranstaltung genauer ist.


Verwandt

Mehr

- Ich weiß.Wie lange dauert es, 1,04 Millionen Mal zu lesen?

- Was ist los?Z ist ein Riesenschütze!

BtcrobotDie Fähigkeit, sich selbst zu bewegen, ist großartig.

Ock-QuantitätZ ist ein Riesenschütze!

Der Erfinder quantifiziertDas war etwa 20 Minuten.

Der Erfinder quantifiziertDas alte Eisen ist da.