Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
web3-decoder — Burp Suite 확장 프로그램으로, 이더리움 JSON-RPC 호출과 스마트 계약 상호작용을 디코딩하며, 여러 체인과 자동 ABI 검색을 지원합니다. | Kitploit
도구/GitHubGitHub/uwctcjnwlk/web3-decoder
Vulnerability AnalysisReverse EngineeringWeb SecurityPenetration TestingAPI Security
GitHubuwctcjnwlk/web3-decoder

web3-decoder

Burp Suite 확장 프로그램으로, 이더리움 JSON-RPC 호출과 스마트 계약 상호작용을 디코딩하며, 여러 체인과 자동 ABI 검색을 지원합니다.

저장소 보기
2154199일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Web3 Decoder

Web3 Decoder는 블록체인 작업과 스마트 계약 상호작용을 분석하기 위해 설계된 Burp Suite 확장 프로그램입니다. 이더리움 및 호환 네트워크(Polygon, Arbitrum, BSC 등 포함)에 대한 JSON-RPC 호출을 처리합니다.

블록 탐색기 API 키

etherscan.io와 같은 대부분의 지원되는 블록 탐색기는 5초에 1회 이상의 요청을 허용하려면 API 키가 필요합니다.

API 키를 추가하는 방법은 2가지가 있습니다:

  • .api_keys.json 파일을 수정하여 API 키를 추가할 수 있습니다.
  • API_KEYS.json 파일에 있는 것과 동일한 이름으로 환경 변수를 추가할 수 있습니다.
    • 예: export ETHERSCAN_API=YOURAPIKEY

계약 ABI 수동 추가

확장 프로그램은 etherscan과 같은 블록 탐색기에서 다운로드한 ABI를 .abi_caches라는 폴더 안에 JSON 형식으로 캐시합니다. 해당 폴더 안에 다음 명명 규칙으로 새 파일을 추가하기만 하면 됩니다:

{chain_id}_{contract_address.lower()}.abi

예를 들어:

root@kitploit:~
# 이더리움 메인넷(체인 ID 1), 계약 0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b
1_0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b.abi

# Polygon(체인 ID 137), 계약 0x447646e84498552e62ecf097cc305eabfff09308
137_0x447646e84498552e62ecf097cc305eabfff09308.abi

Windows 및 macOS 사용자 주의:

이 문서는 Windows와 Linux에 적용됩니다. macOS 사용자는 DMG 파일을 사용할 수 있습니다.

시스템에 Git과 Python이 설치되어 있는지 확인하세요.

https://git-scm.com/install/windows

https://www.python.org/ftp/python/3.13.12/python-3.13.12-amd64.exe

관리자 권한으로 터미널 세션을 시작하세요.

사전 컴파일된 바이너리 및 Python3 Virtualenv

이 확장 프로그램은 web3.py와 같은 python3 라이브러리를 필요로 합니다. 불행히도 이러한 라이브러리는 Jython 2.7과 함께 직접 사용할 수 있도록 python 2.7용으로 제공되지 않습니다. '해킹'의 일환으로, 주요 기능은 python 3 라이브러리로 작성되었으며, 확장 프로그램이 python 가상 환경을 통해 실행합니다(지저분하다고 말할 수 있겠네요...)

사용된 python3 라이브러리의 사전 컴파일된 바이너리를 Linux, Windows 및 Mac OSX용으로 만들었습니다. 확장 프로그램은 라이브러리를 실행할 수 없는 경우 이러한 바이너리를 사용합니다. 더 나은 성능이나 개발을 위해 virtualenv를 생성하고 다음과 같이 설치할 수 있습니다:

root@kitploit:~
cd "web3-decoder"
virtualenv -p python3 venv
source venv/bin/activate
pip install web3 py-evm

확장 프로그램은 생성된 virtualenv를 사용하여 라이브러리를 호출합니다.

virtualenv가 생성되면 Burp Suite의 Extender 탭에서 burp_web3_decoder.py 파일을 선택하여 python 확장 프로그램을 추가할 수 있습니다.

기능 및 TODO

  • 호환되는 요청 및 응답에 Burp EditorTab 추가
  • eth_call JSON-RPC 호출 디코딩
  • eth_sendRawTransaction JSON-RPC 호출(및 내부 함수) 디코딩
  • eth_call의 응답 결과 디코딩
  • 디코딩된 eth_call 함수 재인코딩 지원
  • etherscan API에서 호출된 스마트 계약 ABI 자동 다운로드(계약이 검증된 경우)
  • eth_call 및 eth_sendRawTransaction 모두에서 함수 입력 디코딩
  • "Delegate Proxy" 계약을 사용하는 함수 입력 디코딩
  • "Multicall" 계약을 통해 호출된 함수 입력 디코딩
  • etherscan에서 검증되지 않은 계약에 대한 계약 ABI 수동 추가
    • JSON을 파일에 쓰는 대신 Burp 인터페이스에서 이 작업을 수행할 수 있도록 허용
  • 설정 없이 확장 프로그램이 작동하도록 하는 사전 컴파일된 바이너리
  • 기타 호환 네트워크(Polygon, Arbitrum, Fantom, BSC 등) 지원
  • 수정된 디코딩된 rawTransaction 재서명 지원(privateKey 입력 필요)

현재까지 지원되는 체인

지원되는 모든 체인은 chains.json 파일에서 확인할 수 있습니다. 이들은 etherscan과 동일한 API를 가진 블록 탐색기가 있는 체인입니다. 더 많은 블록체인 탐색기를 추가하려면 chains.json 파일에 추가하고 테스트한 후 풀 리퀘스트를 보내세요!

  • 이더리움 메인넷
  • Ropsten
  • Rinkeby
  • Goerli
  • Optimism
  • Cronos
  • Kovan
  • BSC
  • Huobi ECO
  • Polygon
  • Fantom
  • Arbitrum
  • Sepolia
  • Aurora
  • Avalanche

예시

프록시 및 멀티콜 호출을 포함한 더 많은 예시는 EXAMPLES.md를 참조하세요.

eth_call:

원본: image

디코딩됨: image

eth_sendRawTransaction (Uniswap v2 테스트):

root@kitploit:~
{
    "method": "eth_sendRawTransaction", 
    "params": [
        "0x02f9015b820539808459682f00850df8475800830493e0947a250d5630b4cf539739df2c5dacb4c659f2488d880de0b6b3a7640000b8e47ff36ab500000000000000000000000000000000000000000000009e0950598867d8000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000002105eaa660ff62b14a5e093fc348e13ab63af2e600000000000000000000000000000000000000000000000000000000623b16570000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0fc001a005cfdf9ff11dea2d3e8781cb6ba140ae6e86a0922bfa75938b6f2456f513e24ca057f02b3f7125edb59e22651d503bc296153860e3843f9d495ad21d898c8e20c3"
    ], 
    "id": 4700418092893, 
    "jsonrpc": "2.0"
}

디코딩됨:

root@kitploit:~
[
  {
    "chain_id": 1337, 
    "access_list": [], 
    "nonce": 0, 
    "r": 2628844986784880378434698689940765181553490914879903463877191830852582236748, 
    "s": 39775559607776431912363889945449043629789293388076288013264795388376358199491, 
    "max_priority_fee_per_gas": 1500000000, 
    "gas": 300000, 
    "max_fee_per_gas": 60000000000, 
    "from": "0x2105Eaa660ff62b14a5e093fc348e13ab63AF2E6", 
    "y_parity": 1, 
    "to": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", 
    "value": 1000000000000000000,
    "data": "0x7ff36ab500000000000000000000000000000000000000000000009e0950598867d8000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000002105eaa660ff62b14a5e093fc348e13ab63af2e600000000000000000000000000000000000000000000000000000000623b16570000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f", 
    "decoded_function": {
      "args": {
        "amountOutMin": 2915256698432979992576, 
        "path": [
          "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", 
          "0x6B175474E89094C44Da98b954EedeAC495271d0F"
        ], 
        "to": "0x2105Eaa660ff62b14a5e093fc348e13ab63AF2E6", 
        "deadline": 1648039511
      }, 
      "function": "swapExactETHForTokens(uint256,address[],address,uint256)", 
      "to": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
      "abi": {
        "outputs": [
          {
            "internalType": "uint256[]", 
            "type": "uint256[]", 
            "name": "amounts"
          }
        ], 
        "inputs": [
          {
            "internalType": "uint256", 
            "type": "uint256", 
            "name": "amountOutMin"
          }, 
          {
            "internalType": "address[]", 
            "type": "address[]", 
            "name": "path"
          }, 
          {
            "internalType": "address", 
            "type": "address", 
            "name": "to"
          }, 
          {
            "internalType": "uint256", 
            "type": "uint256", 
            "name": "deadline"
          }
        ], 
        "stateMutability": "payable", 
        "type": "function", 
        "name": "swapExactETHForTokens"
      }
    }
  }
]

작동 방식

사용 중인 노드에 eth_chainId JSON-RPC 요청을 보내 현재 작업 중인 체인을 감지하고, 체인에 따라 chains.json 파일을 검색하여 블록 탐색기 API를 선택합니다.

사용 예시로, 함수 호출을 디코딩하려면 계약의 ABI(애플리케이션 바이너리 인터페이스)가 필요합니다. ABI에는 계약에서 호출할 수 있는 모든 함수와 해당 입력 및 출력이 포함되어 있습니다. 현재는 블록 탐색기에서 검증된 계약 또는 ABI를 수동으로 추가하여 작동합니다. 향후 릴리스에서는 공개 데이터베이스에서 함수 선택기를 검색하여 ABI를 자동 생성할 가능성을 탐구할 것입니다.

다음 "흐름" 다이어그램은 eth_decoder 라이브러리가 eth_call JSON-RPC 호출을 디코딩할 때 따르는 프로세스를 단순화된 방식으로 보여줍니다:

image

알려진 제한 사항

  • Windows에서 원시 트랜잭션 디코딩은 라이브러리 호환성으로 인해 기능이 제한될 수 있습니다.
도구 다운로드