
이더리움 블록체인 네트워크에서 blob 파일을 검색하고 추출합니다.
Etherscan.io API를 사용하여 이더리움 네트워크에서 블롭 파일을 검색하고 추출합니다.

EtherBlob Explorer는 연구자, 분석가, CTF 플레이어 또는 이더리움 블록체인 네트워크에서 다양한 종류의 파일이나 의미 있는 사람이 입력한 데이터를 검색하려는 모든 호기심 많은 사람들을 위해 설계된 도구입니다. 사용자가 제공한 블록 ID 범위 또는 UNIX 타임스탬프를 기준으로 5개의 사용 가능한 네트워크(MainNet, Görli, Kovan, Rinkeby 및 Ropsten)에서 검색합니다.
실제 사례에 대해서는 2017년에 진행된 이 실험을 읽을 수 있습니다. 블록체인의 불변성은 정말 양날의 검일 수 있습니다.
다음 명령을 실행하세요:
$ pip install git+https://github.com/litneet64/etherblob-explorer.git
이제 CLI에서 사용할 준비가 되었습니다. 아래에서 몇 가지 일반적인 사용 예제를 찾을 수 있습니다!
다섯 가지 이더리움 네트워크에서 검색:
이 도구는 다음 위치에서 개별적으로 또는 동일한 실행에서 이들 중 임의의 조합으로 검색할 수 있습니다:
[*] 이더리움 네트워크에서는 연결된 계정 키가 없는 주소로 전송할 때 검증이 이루어지지 않으므로 '수신' 주소에 데이터를 저장할 수 있습니다. 즉, 여러 개의 20바이트 크기 트랜잭션을 통해 페이로드를 만들기 위해 임의의 주소로 트랜잭션을 보낼 수 있습니다 (매우 드물지만 일부 CTF 챌린지에서도 발생합니다).
이러한 모든 방법은 개별적으로 또는 임의의 조합으로 사용할 수 있습니다:
binwalk를 사용하여 데이터 내에 포함된 파일 검색.file을 사용하여 헤더 + 매직 바이트로 검색 (기본 방법).중요: 여기에 표시된 순서는 다른 방법으로 검색을 폐기하기 위해 내부적으로 사용됩니다(예: 내장 파일을 통해 파일이 발견되면 파일 헤더, ASCII 문자열 덤프 또는 엔트로피를 사용한 검색을 시도하지 않습니다). 이전 방법이 이미 성공했다면 의미 있는 결과를 찾을 가능성이 낮기 때문입니다.
-h)에서 더 많은 유용한 기능을 확인할 수 있습니다!.api-key)에 있고 다음 두 블록 ID 사이(포함):$ etherblob 4081599 4081600
$ etherblob -K api.key 3134050 3145570 -M -H --network goerli
$ etherblob 4081599 4081600 --blocks --transactions -D extracted/
Jan 25 2021 19:00:00와 Jan 26 2021 19:00:00 사이에 커밋된 블록 범위에서 '수신' 주소만 검색:$ etherblob -t 1611601200 1611687600 --addresses
$ etherblob 3911697 3912697 -S --contracts -C 4
$ etherblob 4081599 4081600 --encrypted
$ etherblob 3911697 3912697 -E 4.0 5.0 -s
$ etherblob -t 1608836400 1608922800 --blocks --transactions --strings
$ etherblob 4081599 4081600 -U -S -M -H --blocks --transactions --addresses --contracts
고급 사용 사례 및 이와 함께 발견된 사항에 대한 추가 설명은 위키에서 확인할 수 있습니다!
usage: etherblob [-h] [--transactions] [--blocks] [--addresses] [--contracts]
[--network {main,goerli,kovan,rinkeby,ropsten}] [-H] [-M] [-U] [-E CUSTOM_ENTROPY CUSTOM_ENTROPY]
[--encrypted] [-S] [-C CONTRACT_POSITION] [-t] [-K API_KEY_PATH] [-k API_KEY] [-D OUTPUT_DIR]
[-o OUT_LOG] [-s] [-i [IGNORED_FMT [IGNORED_FMT ...]]] [--version]
start_block end_block
이더리움 네트워크에서 블롭 파일을 검색하고 추출하는 도구입니다.
positional arguments:
start_block 블록 ID 범위의 시작.
end_block 블록 ID 범위의 끝.
optional arguments:
-h, --help 이 도움말 메시지를 표시하고 종료합니다.
--transactions 트랜잭션 입력에서 블롭 파일을 검색합니다. 기본 검색 모드입니다.
--blocks 블록 입력에서 블롭 파일을 검색합니다. 활성화되면 명시적으로 활성화하지 않는 한 트랜잭션 입력 확인이 비활성화됩니다.
--addresses '수신' 트랜잭션 주소에서 블롭 파일을 검색합니다. 이더리움에서는 누구나 임의의 주소로 트랜잭션을 보낼 수 있으며, 해당 주소에 관련 소유자가 없더라도 가능합니다(여전히 흔하지는 않음). 활성화되면 명시적으로 활성화하지 않는 한 트랜잭션 입력 확인이 비활성화됩니다.
--contracts 컨트랙트의 스토리지에서 블롭 파일을 검색합니다. 활성화되면 명시적으로 활성화하지 않는 한 트랜잭션 입력 확인이 비활성화됩니다.
--network {main,goerli,kovan,rinkeby,ropsten}, -N {main,goerli,kovan,rinkeby,ropsten}
검색할 블록체인 네트워크를 선택합니다. 선택 가능한 네트워크: Main, Goerli (Görli), Kovan, Rinkeby 및 Ropsten. MainNet이 기본 네트워크입니다. 대소문자를 구분하지 않습니다.
-H, --file-header 활성화되면 데이터(블록, 트랜잭션 또는 주소에서)에서 매직 바이트/파일 헤더를 통해 파일 형식을 검색합니다. 다른 방법도 활성화되지 않은 경우 기본적으로 활성화됩니다.
-M, --embedded 활성화되면 binwalk를 사용하여 데이터(블록, 트랜잭션 또는 주소에서)에서 내장 파일을 검색합니다. 파싱 시간이 더 오래 걸리므로 기본적으로 비활성화되어 있습니다.
-U, --unicode 활성화되면 수집된 데이터(블록, 트랜잭션, 주소)에서 UTF-8 텍스트를 포함하는 파일을 검색하고 덤프하려고 시도합니다. 해당 데이터에서 다른 식별 가능한 파일이 먼저 발견되지 않은 경우 섀넌 엔트로피(3.5에서 5.0 사이)를 사용합니다. 많은 오탐을 생성합니다.
-E CUSTOM_ENTROPY CUSTOM_ENTROPY, --custom-entropy CUSTOM_ENTROPY CUSTOM_ENTROPY
수집된 데이터에서 파일/데이터를 검색하기 위해 고유한 엔트로피 제한(최소 및 최대)을 정의합니다.
--encrypted 활성화되면 수집된 데이터(블록, 트랜잭션, 주소)에서 다른 식별 가능한 파일이 먼저 발견되지 않은 경우 섀넌 엔트로피(7.0에서 8.0 사이)를 사용하여 암호화/압축 데이터를 검색하고 덤프하려고 시도합니다.
-S, --strings 활성화되면 수집된 데이터(블록, 트랜잭션, 주소)에서 다른 식별 가능한 파일이 먼저 발견되지 않은 경우 ASCII 문자열을 파일로 검색하고 덤프하려고 시도합니다.
-C CONTRACT_POSITION, --contract-position CONTRACT_POSITION
컨트랙트의 스토리지 배열에서 (N-1)번째 위치까지 컨트랙트 데이터 내부를 검색합니다. 각 위치는 32바이트 데이터입니다. 카운트는 0부터 시작하며, 사용자 정의 위치가 제공되지 않은 경우 기본 위치는 15번째 위치(총 16개 인덱스)입니다.
-t, --timestamps 활성화되면 시작 및 종료 블록 ID가 UNIX 타임스탬프로 해석되며, 해당 특정 시간에 대해 가장 가까운 커밋된 블록으로 해석됩니다.
-K API_KEY_PATH, --api-key-path API_KEY_PATH
쿼리를 위한 Etherscan API 키가 포함된 파일의 경로입니다. 기본 검색 위치는 '.api-key'입니다.
-k API_KEY, --api-key API_KEY
매개변수로 제공되는 Etherscan API 키입니다. 제공되면 '--api-key-path'는 무시됩니다.
-D OUTPUT_DIR, --output-dir OUTPUT_DIR
추출된 파일의 출력 디렉토리입니다. 기본값은 'ext_{시작 블록}-{종료 블록}'입니다.
-o OUT_LOG, --out-log OUT_LOG
로그 출력 파일입니다. 기본값은 'etherblob_{시작 블록}-{종료 블록}.log'입니다.
-s, --save-transactions
활성화되면 모든 트랜잭션과 해당 정보가 'transactions_{시작 블록}-{종료 블록}.txt' 파일에 저장됩니다.
-i [IGNORED_FMT [IGNORED_FMT ...]], --ignored-fmt [IGNORED_FMT [IGNORED_FMT ...]]
추출을 위해 무시할 파일 형식입니다. 기본적으로 무시되는 일반 파일 형식은 'ISO-8859 text' 및 'Non-ISO extended-ASCII text'입니다. 'data' 파일 형식은 항상 무시됩니다. 파일 형식 부분 문자열을 허용하며 대소문자를 구분하지 않고 일치시킵니다. '*'는 모든 파일 형식을 무시하는 와일드카드입니다.
--version 프로그램의 버전 번호를 표시하고 종료합니다.
공식 GitHub 저장소 'https://github.com/litneet64/etherblob-explorer'