ওয়ার্ল্ড পাই ডে ওকেএক্স প্রাইভেট কী পাজল অ্যাওয়ার্ড (সম্পূর্ণ কোড সহ) কীভাবে সমাধান করবেন

লেখক:লিডিয়া, সৃষ্টিঃ ২০২৩-০৩-১৬ ১৭ঃ১৯ঃ০৮, আপডেটঃ ২০২৩-০৮-০১ ১১ঃ৩৫ঃ৩৬

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

তবে, তিনি একটি ৬১-বিট ডি২২৯০ পোস্ট করেছেন। তিনি আরও বলেন যে তিনি সাবধানে চেক করা হয়েছে। এটা কোন ব্যাপার না। একটি সুযোগ নিন। যাইহোক, এটা বিদ্যুৎ অপচয়। চেষ্টা করার মনোভাব নিয়ে, আমি আরও কয়েকজনকে খুঁজে পেয়েছি যারা বলেছিল যে তারা ৬১-বিট খুঁজে পেয়েছে। তারা সবাই খুব আত্মবিশ্বাসী ছিল। মন্তব্য বিভাগে পাওয়া উপসর্গগুলি সংগ্রহ করা হয়, কোডটি কেবল অতিক্রম করা হয়েছে, বেসিক কোডটি পরিবর্তিত হয়নি, এবং এটি বারবার আটকানো হবে না।

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

আমার নেতৃত্বে টিএক্সঃ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 আরো কঠোর হবে।


সম্পর্কিত

আরো