وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ورلڈ پائی ڈے او کے ایکس پرائیویٹ کلیدی پہیلی ایوارڈ (مکمل کوڈ کے ساتھ) کو کیسے حل کریں

مصنف:FMZ~Lydia, تخلیق: 2023-03-16 17:19:08, تازہ کاری: 2024-11-29 18:58:36

img

ورلڈ پائی ڈے او کے ایکس پرائیویٹ کلیدی پہیلی ایوارڈ (مکمل کوڈ کے ساتھ) کو کیسے حل کریں

میں نے دیکھا کہ گروپ میں کچھ ٹائکون کہہ رہے تھے کہ اوکے ایکس ورلڈ پائی ڈے اسرار ایونٹ منعقد کر رہا ہے، جس کا موضوع ہے تجسس، کبھی ختم نہیں ہوتا۔

ایک تجربہ کار پروگرامر کی حیثیت سے، جب میں نے خبر دیکھی، میں نے مسکرا کر اپنا میک بک پرو کھولا، اور مزید تاخیر کے بغیر، چلیں شروع کرتے ہیں!

تجزیہ

سرکاری طور پر، تصویر میں 61 بٹس کی چابی ہے اور دائرہ کار کا حصہ اوورلیپ ہے، جیسا کہ ہم سب جانتے ہیں، نجی چابی کی لمبائی 32 بائٹ ہے، ہیکس میں تبدیل 64 بٹس پلس 0x پریفیکس ہے، مجموعی طور پر 66 بٹس، پہلے سے ہی 61 بٹس ہیں، پہلی نظر کے لئے، چارٹ میں پہلی سطر میں 0X واضح طور پر پائی نہیں ہے، یہ نجی کلید پریفیکس کا آغاز ہے، پھر تقریبا 5 بٹس ہیں (0123456789ABCDEF). حروف تصادفی ترتیب دیا جاتا ہے، تو ان کو براہ راست چلانے کے ساتھ کچھ بھی غلط نہیں ہے، تو چلو شروع کرتے ہیں ~

چلو صرف رنگ تیز کرنے کے لئے ایک میک آلے کا استعمال کرتے ہیں:

img

اس طرح، میک تصویر پر حروف کو خود بخود پہچان سکتا ہے۔ آئیے براہ راست ان کی کاپی کریں:

3.141592653589793230X1D64338
А694502884197169399375105820
974925E123078164062862089986
28033DB034211706409914808651
32823066470ED424609550582231
8B3
81284
• Exploration, 
038
Never Ending
027
493
05%
0128
4756482337867831731712019091
47D9E56692346034861045432664
8213393607743749141273724587
006606315588174881BEEA209628
2925409192744436789259036001

یہ براہ راست استعمال نہیں کیا جا سکتا۔ آئیے اسے دستی طور پر درست کریں۔ تصویر میں شامل غیر تصدیق شدہ افراد کو * کے ساتھ نشان لگا دیا گیا ہے۔ یقین نہیں ہے۔ آئیے اس کے بارے میں بعد میں بات کریں۔ اعداد و شمار کے ذریعہ مسدود دیگر کو دوسرے فونٹس کے اسٹروک کی شکل کا مشاہدہ کرکے فیصلہ کیا جاسکتا ہے۔ اس وقت ، ہم دونوں کے مابین فرق کا حساب لگانے کے لئے پیتھون کا استعمال کرتے ہیں ، اور ایک ہی فونٹس کے لئے _ استعمال کرتے ہیں اور صرف مختلف فونٹس کو دکھاتے ہیں۔

img = '''
3.141592653589793230X1D64338
A694502884197169399375105820
974925E123078164062862089986
28033DB034211706409914808651
32823066470ED424609550582231
8B32594081284811174502841027
0193**2*D2299964462294895493
0381960EFC8103F9365933446128
4756482337867831731712019091
47D9E56692346034861045432664
82133936077A3749141273724587
006606315588174881BEEA209628
2925409192744436789259036001
'''
# True Pi
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))

عمل درآمد کے نتائج مندرجہ ذیل ہیں:

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

تین اور ہیں ، اور صرف تین غیر یقینی ہیں۔ ان کو ہٹانے کی کوشش کریں ، کیونکہ باقی 61 بٹس خارج ہونے کے بعد ٹھیک ہیں ، صرف سب سے زیادہ واضح فرق چھوڑ دیتے ہیں۔ آخر میں ، پیش لفظ مندرجہ ذیل ہے:

0X1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744

اگلا ، ہم پطرون کا استعمال کریں گے اور اوکے چین پر توازن کو تلاش کرنے کے لئے طاقت کا استعمال کریں گے۔ ہم موازنہ کرسکتے ہیں کہ کس نجی کلید میں توازن ہے۔ در حقیقت ، ہم پہلے 314 یو ایس ڈی ٹی ٹرانسفر کے ساتھ عوامی کلید کا انتخاب بھی کرسکتے ہیں ، جو تیز تر ہے۔ سرکاری ویب سائٹ پر معلومات دیکھ کر کہا گیا ہے کہ ہم توازن کو براہ راست چیک کرسکتے ہیں اگر گیس ہے تو ، کوڈ تھوڑا گندا ہے۔

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'
# It doesn't matter how to optimize the algorithm. Run the secret key against the clock.
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()
    

ہم دیکھ سکتے ہیں کہ اس میں 1048576 تکراریں لگتی ہیں، لیکن یہ میرے سرورز میں سے ایک پر چلنے والے ملٹی تھریڈنگ کے ساتھ بہت تیز ہے.

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
The following is omitted...

بے چین انتظار~~~، بری خبر آئی، اور حکمت عملی سے باہر نکلنے سے پہلے کوئی نتیجہ نہیں نکلا۔ ان سب کو کوئی نہیں کے طور پر دکھایا گیا تھا۔

پہاڑوں کی پہاڑیوں کے ساتھ سڑک

مجھے ایسا نہیں لگتا، میں سمجھ نہیں پا رہا، میں نے ٹویٹر پر بحث کو دیکھنے کے لئے شروع کر دیا، اور میں نے پایا کہ سب اور میں ایک ہی اقدامات پر پہنچ گئے، لیکن عجیب بات یہ ہے کہ کسی نے بھی نہیں کہا ہے کہ ڈیکرپشن کامیاب ہے، اور سرکاری صحیح پہلے 61 بٹس کا اعلان نہیں کیا ہے، پھر ایک عجیب جواب میری توجہ اپنی طرف متوجہ، کیونکہ ایک فرق ہےD2299درمیانی میں، مجھے یقین ہے، لیکن وہ خوفناک طور پر خود اعتمادی لگتا ہے.

img

تاہم، اس نے ایک 61 بٹ D2290 پوسٹ کیا۔ اس نے یہ بھی کہا کہ اس کی احتیاط سے جانچ کی گئی ہے۔ اس سے کوئی فرق نہیں پڑتا۔ ایک موقع لے لو۔ ویسے بھی، یہ بجلی کی بربادی ہے۔ کوشش کرنے کے رویے کے ساتھ، میں نے کچھ دوسرے لوگوں کو پایا جنہوں نے کہا کہ انہوں نے 61 بٹ پایا تھا۔ وہ سب بہت پر اعتماد تھے. تبصرے کے سیکشن میں پائے جانے والے سابقہ کو جمع کیا جاتا ہے، صرف کوڈ کے ساتھ، بنیادی کوڈ تبدیل نہیں ہوا ہے، اور یہ بار بار چسپاں نہیں کیا جائے گا.

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

دراصل، بعد میں مزید نئے پیغامات آئے ہیں، ایک بھائی کی پی آئی ویلیو میری سے مختلف ہے، یہ حیرت انگیز ہے! آئیے پہلے ان کے ساتھ چلتے ہیں، میں اپنی آنکھوں پر یقین نہیں کر سکتا، لیکن یہ باہر آیا، اس کا مطلب یہ ہے کہ مندرجہ بالا پیش لفظوں میں سے ایک درست ہے، جو کہ بہت غیر سائنسی ہے، نجی کلید ہے:

1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744C8155

یہاں D229 ہے، لیکن تصویر واضح طور پر D2299 ہے، اور 731 کے بعد 7 ہے، یہاں دو ہے، لیکن اصل میں، یہ درست 61 بٹس ہے، اس نے خود کس طرح حساب لگایا ہے نامعلوم ہے، ناقابل یقین حد تک تجسس، لیکن میں نے اپنے آپریشن میں شک نہیں کرتا، میں نے ایک تبصرے میں کہا کہ دیکھا سرکاری کسٹمر سروس نے کہا کہ پائی کا ایک اور ورژن ہے، یہ میں تھا جو جاہل تھا، جو میں نے سیکھا ہے اور کائنات کی موجودہ انسانی تفہیم کی سمجھ کے ساتھ، اس غیر منطقی نمبر کا دائرہ کائنات کی لامحدودیت کی نمائندگی کر سکتا ہے، اس کے جزوی حصہ کبھی نہیں دہرا یا ختم ہوتا ہے، آپ اسے آپ کے کائنات کے UUID کے طور پر تشریح کر سکتے ہیں، اگر دیگر ورژن ہیں، شاید متوازی دنیاؤں سے.

Web3 کرنسی تبادلوں کا کوڈ

آخر میں، یہ بونس دور منتقل کرنے کے لئے کوڈ ہے، اس بار کے لئے، میں FMZ پلیٹ فارم Web3 براہ راست استعمال کرتے ہیں، OKC کرنے کے لئے چین ایڈریس مقرر، نجی کلید تصادفی تبادلہ میں شامل کیا، اور پھر دو لائنوں کیا جائے گا، براہ راست ڈیبگ کے آلے کے موڈ میں اسے چلانے.

img

ثبوت

ڈیکرپٹ شدہ عوامی کلید کا پتہ

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

لنک چیک کریں:https://www.okx.com/cn/explorer/okc/address/0x0bd08825e05e540c9508961a32e58d14da47275a

TX میرے زیر قیادت کے بعد: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 زیادہ سخت ہوگا۔


متعلقہ

مزید