
Web3 JSON-RPC ट्रैफ़िक को डिकोड करने के लिए Burp Suite एक्सटेंशन, जिसमें स्मार्ट कॉन्ट्रैक्ट फ़ंक्शन कॉल, रिस्पॉन्स, तथा proxy-aware और multicall समर्थन के साथ ABI रिज़ॉल्यूशन शामिल है।
Web3 Decoder एक Burp Suite एक्सटेंशन है जो web3 के स्मार्ट कॉन्ट्रैक्ट से जुड़े संचालनों का विश्लेषण करने में मदद करता है। यह मुख्य रूप से Ethereum नोड्स और अन्य संगत नेटवर्कों (जैसे Polygon, Arbitrum, BSC...) के नोड्स को किए जाने वाले JSON-RPC कॉल हैं।
नवीनतम एक्सटेंशन JAR डाउनलोड करें — यह लिंक हमेशा नवीनतम रिलीज़ प्रदान करता है:
पुराने संस्करण Releases पेज पर उपलब्ध हैं।
फिर इसे Burp Suite में लोड करें:
web3-decoder.jar का चयन करें।Web3 टैब और Web3 Request/Web3 Response एडिटर टैब दिखाई देते हैं।JRE 21 के साथ बंडल किए गए Burp रिलीज़ की आवश्यकता है (वर्तमान Burp Suite संस्करण)। JAR स्व-निहित है — सभी निर्भरताएँ (web3j, आदि) शामिल हैं।
./gradlew jar
एक्सटेंशन JAR हमेशा एक स्थिर पथ पर लिखा जाता है — web3-decoder/build/libs/web3-decoder.jar — संस्करण की परवाह किए बिना, इसलिए आप एक बार Burp को इसकी ओर इंगित कर सकते हैं और पुनर्निर्माण पर इसे स्वतः-पुनःलोड होने दे सकते हैं। रिलीज़ प्रक्रिया docs/RELEASING.md में प्रलेखित है।
आपके JSON-RPC अनुरोधों और प्रतिक्रियाओं को सफलतापूर्वक डिकोड करने के बाद हमारे बेहतर Web3 एडिटर टैब इस प्रकार दिखते हैं:

नीचे पुनःडिज़ाइन किया गया Web3 टैब है, जिसमें सभी सेटिंग्स, डिटेक्ट किए गए ABIs और बहुत कुछ है! (धन्यवाद Claude Design!)

विस्तृत दस्तावेज़ीकरण docs/ फ़ोल्डर में उपलब्ध है:
अधिकांश समर्थित ब्लॉक एक्सप्लोरर्स, जैसे etherscan.io, को प्रति 5 सेकंड में 1 से अधिक अनुरोध की अनुमति देने के लिए API कुंजी की आवश्यकता होती है।
नया इंटरफ़ेस आपको चेन, ब्लॉक एक्सप्लोरर्स और API कुंजियाँ प्रबंधित करने की सुविधा देता है।
एक्सटेंशन etherscan जैसे ब्लॉक एक्सप्लोरर्स से डाउनलोड किए गए ABIs को कैश करता है। आप उन्हें Web3 टैब से सीधे भी जोड़ सकते हैं, ब्लॉक एक्सप्लोरर से स्वचालित रूप से प्राप्त करके, या मैन्युअल रूप से जोड़कर।
Web3 Request एडिटर टैब (बिना eth_call / eth_sendRawTransaction वाले ट्रैफ़िक पर छिपा हुआ)।Web3 Response एडिटर टैब।Web3 सुइट टैब।eth_call कॉलडेटा को function + टाइप किए गए args में डिकोड करता है।decoded, skipped, error) और स्किप/विफल होने पर कारण बताया जाता है।eth_call अनुरोधों के लिए result डिकोड करता है।id (या इंडेक्स फ़ॉलबैक) द्वारा प्रविष्टियों का मिलान करता है।cache, builtin, etherscan, detected, या 4byte)।PassiveScanCheck HTTP प्रतिक्रिया निकायों (आमतौर पर मिनिफाइड dapp JS बंडल) को Solidity ABIs के लिए स्कैन करता है और जो कुछ भी मिलता है उसे फ़ंक्शन सेलेक्टर द्वारा अनुक्रमित प्रोजेक्ट-स्कोप्ड पूल में संग्रहीत करता है।!0 / !1 बूलियन शॉर्टकट शामिल हैं।decodeSource: "detected" के रूप में टैग किया जाता है।eth_chainId निर्धारित नहीं किया जा सकता: डिटेक्ट किया गया पूल और 4byte चेन-अज्ञेय हैं, इसलिए डिकोडर पूरी तरह मना करने के बजाय उन्हें आज़माता ही है।api.4byte.sourcify.dev के विरुद्ध फ़ंक्शन सेलेक्टर लुकअप किया जाता है।ERC1967 स्लॉट और लीगेसी ZeppelinOS/OpenZeppelin स्लॉट।aggregate, tryAggregate, aggregate3, aggregate3Value, blockAndAggregate, tryBlockAndAggregate।chains.json से डिफ़ॉल्ट चेन लोड करता है और Burp प्राथमिकताओं में अनुकूलन संग्रहीत करता है।Web3 टैब के नीचे साइड-बाय-साइड पैनल जो निष्क्रिय स्कैनर द्वारा संचित प्रत्येक ABI को सूचीबद्ध करता है।eth_sendRawTransaction JSON-RPC कॉल (और उनके आंतरिक फ़ंक्शन) का डिकोडबंडल की गई चेनों की पूर्ण, वर्तमान सूची web3-decoder/src/main/resources/chains.json में उपलब्ध है — एक्सटेंशन अब Etherscan v2 मल्टीचेन सेट के साथ आता है (Ethereum, Sepolia, BNB Smart Chain, Polygon, Base, Arbitrum, Linea, Blast, Optimism, Avalanche, Gnosis, Scroll, Taiko, Berachain, और उनके टेस्टनेट सहित कई और)। इंटरफ़ेस आपको रनटाइम पर अपनी स्वयं की चेन जोड़ने की भी सुविधा देता है — कोई भी चेन जिसका ब्लॉक एक्सप्लोरर Etherscan-शैली APIs उजागर करता है, काम करेगी। चेन प्रबंधन विवरण (अप्रचलित चेन ID के माइग्रेशन सहित) के लिए Features देखें।
उपयोग में लिए जा रहे नोड पर भेजा गया eth_chainId JSON-RPC अनुरोध यह पता लगाता है कि हम किस चेन पर काम कर रहे हैं, और चेन के आधार पर, chains.json फ़ाइल में खोज करके एक ब्लॉक एक्सप्लोरर API का चयन करता है।
फ़ंक्शन कॉल को डिकोड करने के लिए हमें कॉन्ट्रैक्ट के ABI (Application Binary Interface) की आवश्यकता होती है, जिसमें कॉन्ट्रैक्ट में कॉल किए जा सकने वाले सभी फ़ंक्शन और उनके इनपुट और आउटपुट शामिल होते हैं। एक्सटेंशन ABIs को इस क्रम में हल करता है:
api.4byte.sourcify.dev के विरुद्ध सेलेक्टर → सिग्नेचर लुकअप, किसी भी मिलान उम्मीदवार से निर्मित सिंथेटिक ABI के साथ।यदि चेन ID निर्धारित नहीं की जा सकती (जैसे एंडपॉइंट eth_chainId का जवाब नहीं देता), तो चेन-स्कोप्ड चरण (1–3) छोड़ दिए जाते हैं और डिकोडर फिर भी चेन-अज्ञेय चरणों (4 और 5) को आज़माता है।
ट्रैफ़िक डिकोड करने के लिए, एक्सटेंशन कुछ बाहरी स्रोतों से संपर्क करता है। ये वैकल्पिक हैं और आप Web3 टैब से इन्हें निष्क्रिय कर सकते हैं। सभी आउटबाउंड अनुरोध Burp के स्वयं के HTTP स्टैक (api.http().sendRequest) के माध्यम से भेजे जाते हैं, इसलिए वे Burp की अपस्ट्रीम प्रॉक्सी/TLS सेटिंग्स का सम्मान करते हैं और Burp के ट्रैफ़िक में दिखाई देते हैं।
| सेवा | एंडपॉइंट | उपयोग |
|---|---|---|
| JSON-RPC नोड (आपके ट्रैफ़िक में पहले से मौजूद एंडपॉइंट) | प्रॉक्सी किया गया RPC URL | सक्रिय चेन का पता लगाने के लिए eth_chainId, और प्रॉक्सी इम्प्लीमेंटेशन स्लॉट पढ़ने के लिए eth_getStorageAt (ERC-1967 / लीगेसी ZeppelinOS)। |
| Etherscan (v2 मल्टीचेन) | https://api.etherscan.io/v2/api?chainid=… | सत्यापित कॉन्ट्रैक्ट ABIs प्राप्त करना। जब v2 उस चेन का समर्थन नहीं करता तो चेन के लीगेसी एक्सप्लोरर होस्ट (/api) पर वापस चला जाता है। |
| 4byte सिग्नेचर डेटाबेस | https://api.4byte.sourcify.dev | जब कोई ABI उपलब्ध न हो तो अज्ञात 4-बाइट फ़ंक्शन सेलेक्टर को उम्मीदवार सिग्नेचर में हल करना (फिर मिलान से एक सिंथेटिक ABI निर्मित किया जाता है)। |
गोपनीयता नोट: ABI लुकअप कॉन्ट्रैक्ट पता कॉन्फ़िगर किए गए ब्लॉक एक्सप्लोरर को भेजते हैं, और 4byte फ़ॉलबैक फ़ंक्शन सेलेक्टर
api.4byte.sourcify.devको भेजता है। डाउनलोड किए गए ABIs स्थानीय रूप से कैश किए जाते हैं ताकि बार-बार डिकोड करने पर पुनः-क्वेरी न हो। अधिकांश एक्सप्लोरर्स (जैसे etherscan.io) को ~1 अनुरोध / 5 सेकंड से अधिक के लिए API कुंजी की आवश्यकता होती है —Web3टैब से कुंजियाँ प्रबंधित करें।निष्क्रिय ABI डिटेक्टर उन HTTP प्रतिक्रिया निकायों को पढ़ता है जिन्हें Burp पहले ही कैप्चर कर चुका है और पूरी तरह स्थानीय रूप से चलता है — डिटेक्शन से कोई ट्रैफ़िक उत्पन्न नहीं होता है।