# Ethereum RPC Fingerprinting Tool
A comprehensive Python tool for fingerprinting Ethereum/EVM chains RPC endpoints to identify node implementations, versions, network configurations, and security characteristics.
[](https://badge.fury.io/py/ethereum-rpc-fingerprinter)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://asciinema.org/a/740150)
## Features
- 🔍 **Enhanced Node Detection**: Identify Geth, Parity/OpenEthereum, Besu, Nethermind, Erigon, Reth, EthereumJS, Anvil, Hardhat, Ganache, TurboGeth
- 🧬 **Detailed Client Analysis**: Extract programming language, version, OS, and architecture from client version strings
- 📊 **Network Information**: Chain ID, network ID, block height, gas prices, peer count
- 🚀 **Async Support**: Fingerprint multiple endpoints concurrently with configurable limits
- 📁 **Bulk Scanning**: Read endpoint lists from files (one URL per line) - perfect for pentesting workflows
- 🔐 **Security Analysis**: Detect exposed accounts, admin interfaces, debug capabilities
- 📋 **Method Discovery**: Enumerate supported RPC methods
- 📄 **Multiple Formats**: Output results in table, JSON, or YAML format
- 🐍 **Python API**: Use as a library in your Python projects
### Client Version Parsing
The tool can extract detailed information from client version strings:
- **Programming Language**: Go, Rust, Java, .NET, JavaScript/TypeScript
- **Language Version**: Specific version (e.g., Go 1.21.4, Java 17, .NET 8.0.0)
- **Operating System**: Linux, Windows, macOS, FreeBSD, OpenBSD
- **Architecture**: x86_64, amd64, arm64, ARM, etc.
- **Node Version**: Exact node software version
- **Build Information**: Commit hashes, timestamps (where available)
Example parsed information:
```
Client Version: Geth/v1.13.5-stable/linux-amd64/go1.21.4
├── Implementation: Geth
├── Node Version: 1.13.5-stable
├── Programming Language: Go
├── Language Version: 1.21.4
├── Operating System: Linux
└── Architecture: amd64
```
## Installation
### From PyPI (Recommended)
```bash
pip install ethereum-rpc-fingerprinter
```
### From Source
```bash
git clone https://github.com/yourusername/ethereum-rpc-fingerprinter.git
cd ethereum-rpc-fingerprinter
pip install -e .
```
## Quick Start
### Command Line Usage
The tool provides a modern CLI with two command names:
- `ethereum-rpc-fingerprinter` (full name)
- `erf` (short alias)
#### Basic Fingerprinting
```bash
# Fingerprint a single endpoint
erf fingerprint http://localhost:8545
# Multiple endpoints with async processing
erf fingerprint -a http://localhost:8545 https://eth.llamarpc.com
# From file (one URL per line) - great for pentesting
erf fingerprint -f endpoints.txt
# From file with async processing
erf fingerprint -f endpoints.txt -a --max-concurrent 10
# Export results to JSON
erf fingerprint -o results.json http://localhost:8545
# Different output formats
erf fingerprint --format json http://localhost:8545
erf fingerprint --format yaml http://localhost:8545
erf fingerprint --format table http://localhost:8545 # default
# Verbose output with progress
erf fingerprint -v -a http://localhost:8545 https://cloudflare-eth.com
```
#### Bulk Scanning (Perfect for Pentesting) 🎯
```bash
# Scan from file with beautiful progress tracking
erf fingerprint -f endpoints.txt --async --verbose
# High-performance bulk scanning with custom concurrency
erf fingerprint -f endpoints.txt --async --max-concurrent 20 --timeout 5
# Export bulk results to file
erf fingerprint -f endpoints.txt --async -o scan_results.json --format json
# Quiet mode for automation (progress bar only)
erf fingerprint -f endpoints.txt --async --quiet --format json
```
#### Client Version Analysis
```bash
# Parse client version strings
erf parse-version "Geth/v1.13.5-stable/linux-amd64/go1.21.4"
# Multiple versions at once
erf parse-version \
"Geth/v1.13.5-stable/linux-amd64/go1.21.4" \
"Besu/v23.4.0/linux-x86_64/openjdk-java-17" \
"Nethermind/v1.20.3+77d89dbe/windows-x64/dotnet8.0.0"
```
#### Additional Commands
```bash
# List supported implementations
erf list-implementations
# Include development tools
erf list-implementations --include-dev
# Get help for any command
erf --help
erf fingerprint --help
```
### Advanced CLI Usage
```bash
# Comprehensive analysis with all options
erf fingerprint \
--verbose \
--async \
--timeout 30 \
--max-concurrent 5 \
--format json \
--output comprehensive_report.json \
http://localhost:8545 \
https://eth.llamarpc.com \
https://cloudflare-eth.com
# Automation-friendly (quiet mode)
erf fingerprint --quiet --format json http://localhost:8545 | jq '.[]'
```
### Python API Usage
```python
import asyncio
from ethereum_rpc_fingerprinter import EthereumRPCFingerprinter
# Create fingerprinter instance
fingerprinter = EthereumRPCFingerprinter()
# Synchronous fingerprinting
result = fingerprinter.fingerprint("http://localhost:8545")
print(f"Implementation: {result.implementation}")
print(f"Node Version: {result.node_version}")
print(f"Programming Language: {result.programming_language}")
print(f"Language Version: {result.language_version}")
print(f"Operating System: {result.operating_system}")
print(f"Architecture: {result.architecture}")
# Asynchronous fingerprinting
async def fingerprint_multiple():
results = await fingerprinter.fingerprint_async([
"http://localhost:8545",
"https://eth.llamarpc.com",
"https://cloudflare-eth.com"
])
for result in results:
print(f"{result.endpoint}: {result.implementation} {result.node_version}")
asyncio.run(fingerprint_multiple())
# Client version parsing
version_info = fingerprinter.parse_client_version("Geth/v1.13.5-stable/linux-amd64/go1.21.4")
print(f"Language: {version_info.programming_language} {version_info.language_version}")
print(f"Platform: {version_info.operating_system} {version_info.architecture}")
```
## Example Output
### Geth Node
```
Fingerprinting: http://localhost:8545
🔍 Basic Information:
┌─────────────────┬─────────────────────────────────┐
│ Endpoint │ http://localhost:8545 │
│ Implementation │ Geth │
│ Client Version │ Geth/v1.13.5-stable-3f... │
│ Node Version │ 1.13.5-stable │
│ Language │ Go 1.21.4 │
│ Platform │ Linux amd64 │
│ Chain ID │ 1 (Ethereum Mainnet) │
│ Network ID │ 1 │
│ Block Height │ 18,750,123 │
│ Syncing │ No │
└─────────────────┴─────────────────────────────────┘
📊 Network Status:
┌─────────────────┬─────────────────────────────────┐
│ Gas Price │ 15.2 Gwei │
│ Peer Count │ 47 peers │
│ Mining │ No │
│ Hashrate │ 0 H/s │
└─────────────────┴─────────────────────────────────┘
🔒 Security Information:
┌─────────────────┬─────────────────────────────────┐
│ Accounts │ None exposed │
│ Debug Interface │ Not detected │
│ Admin Interface │ Not detected │
└─────────────────┴─────────────────────────────────┘
🛠️ Supported Methods:
eth_accounts, eth_blockNumber, eth_call, eth_chainId, eth_estimateGas,
eth_gasPrice, eth_getBalance, eth_getBlockByHash, eth_getBlockByNumber,
eth_getCode, eth_getLogs, eth_getStorageAt, eth_getTransactionByHash,
eth_getTransactionCount, eth_getTransactionReceipt, eth_hashrate,
eth_mining, eth_sendRawTransaction, eth_syncing, net_listening,
net_peerCount, net_version, web3_clientVersion, web3_sha3
```
### Hardhat Development Node
```
Fingerprinting: http://localhost:8545
🔍 Basic Information:
┌─────────────────┬─────────────────────────────────┐
│ Endpoint │ http://localhost:8545 │
│ Implementation │ Hardhat │
│ Client Version │ HardhatNetwork/2.17.2/@hard... │
│ Node Version │ 2.17.2 │
│ Language │ JavaScript (Node.js) │
│ Platform │ Unknown │
│ Chain ID │ 31337 (Hardhat Network) │
│ Network ID │ 31337 │
│ Block Height │ 0 │
│ Syncing │ No │
└─────────────────┴─────────────────────────────────┘
🔒 Security Information:
┌─────────────────┬─────────────────────────────────┐
│ Accounts │ 20 accounts exposed │
│ Debug Interface │ Available │
│ Admin Interface │ Not detected │
└─────────────────┴─────────────────────────────────┘
⚠️ Development Environment Detected
```
## Supported Implementations
### Production Nodes
- **Geth** (Go Ethereum) - Go implementation
- **Besu** (Hyperledger Besu) - Java implementation
- **Nethermind** - .NET implementation
- **Erigon** (formerly TurboGeth) - Go implementation
- **Reth** - Rust implementation (modern)
- **Parity/OpenEthereum** - Rust implementation (legacy)
- **EthereumJS** - TypeScript implementation (beta)
### Development Tools
- **Hardhat Network** - JavaScript/TypeScript
- **Ganache** - JavaScript
- **Anvil** (Foundry) - Rust
## CLI Documentation
For comprehensive CLI usage, see [CLI_USAGE.md](CLI_USAGE.md).
## Security Considerations
This tool is designed for:
- ✅ Security research and auditing
- ✅ Network analysis and monitoring
- ✅ Development and testing
- ✅ Educational purposes
**Important**: Only use this tool on endpoints you own or have explicit permission to test. Unauthorized scanning of RPC endpoints may violate terms of service or be considered malicious activity.
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests (`python -m pytest`)
5. Commit your changes (`git commit -m 'Add amazing feature'`)
6. Push to the branch (`git push origin feature/amazing-feature`)
7. Open a Pull Request
### Publishing
For maintainers, use the automated publish script to release new versions:
```bash
# Test with dry run first
./publish.sh --dry-run
# Publish patch version to Test PyPI
./publish.sh patch --test
# Publish to production PyPI
./publish.sh patch
```
See [PUBLISHING.md](PUBLISHING.md) for detailed publishing instructions.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Changelog
### v1.1.0 (2025-09-12) - Current Release ✨
- 📁 **File Input Support**: Added `--file` / `-f` option to read endpoint lists from files (one URL per line)
- 🎨 **Rich Integration**: Beautiful progress bars with real-time completion tracking, elapsed time, and ETA
- ✨ **Enhanced Tables**: Modern rounded tables with color-coded values and professional styling
- 🚀 **Improved UX**: Spinner animations, better visual feedback, and emoji icons for different sections
- 📊 **Progress Tracking**: Real-time progress bars for async scanning with completion rates and timing
- 🔧 **Better CLI**: Enhanced verbose output with Rich console formatting and improved readability
- 📦 **Bulk Scanning**: Perfect for pentesting workflows - scan thousands of endpoints with visual progress
### v1.0.0 (2025-09-11)
- 🎉 **Major Release**: Migrated to Click CLI framework with modern interface
- ⚡ **Async Processing**: Added async support for multiple endpoints with configurable concurrency
- 🌈 **Enhanced Output**: Colored tables, improved formatting, and better error handling
- 📄 **YAML Support**: Added YAML output format alongside JSON and table formats
- 📦 **PyPI Publication**: Published to PyPI with easy `pip install` and automated publishing
- 📚 **Documentation**: Added comprehensive CLI documentation and usage examples
- 🔧 **Improved Parsing**: Enhanced client version parsing with better language/OS detection
### v0.3.0
- Migrated to Click CLI framework with modern interface
- Added async processing for multiple endpoints
- Enhanced output formatting with colored tables
- Added YAML output support
- Published to PyPI with easy installation
- Added comprehensive CLI documentation
- Improved error handling and progress indication
### v0.2.0
- Added detailed client version parsing
- Enhanced security analysis with language/OS detection
- Improved method detection and categorization
- Better error handling and timeout management
### v0.1.0
- Initial release with basic fingerprinting
- Support for major Ethereum client implementations
- JSON export functionality
- Basic client version detection
Raw data
{
"_id": null,
"home_page": "https://github.com/smolgroot/ethereum-rpc-fingerprinter",
"name": "ethereum-rpc-fingerprinter",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Your Name <your.email@example.com>",
"keywords": "ethereum, rpc, fingerprinting, blockchain, web3, geth, besu, nethermind, erigon, security, analysis",
"author": "smolgroot",
"author_email": "Your Name <your.email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/c3/46/76cc5d5321267a99cba4aa7eb3a1a4946e6e10fead5fe6506e6e13b0fe1c/ethereum_rpc_fingerprinter-1.1.2.tar.gz",
"platform": null,
"description": "# Ethereum RPC Fingerprinting Tool\n\nA comprehensive Python tool for fingerprinting Ethereum/EVM chains RPC endpoints to identify node implementations, versions, network configurations, and security characteristics.\n\n[](https://badge.fury.io/py/ethereum-rpc-fingerprinter)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\n[](https://asciinema.org/a/740150)\n\n## Features\n\n- \ud83d\udd0d **Enhanced Node Detection**: Identify Geth, Parity/OpenEthereum, Besu, Nethermind, Erigon, Reth, EthereumJS, Anvil, Hardhat, Ganache, TurboGeth\n- \ud83e\uddec **Detailed Client Analysis**: Extract programming language, version, OS, and architecture from client version strings\n- \ud83d\udcca **Network Information**: Chain ID, network ID, block height, gas prices, peer count\n- \ud83d\ude80 **Async Support**: Fingerprint multiple endpoints concurrently with configurable limits\n- \ud83d\udcc1 **Bulk Scanning**: Read endpoint lists from files (one URL per line) - perfect for pentesting workflows\n- \ud83d\udd10 **Security Analysis**: Detect exposed accounts, admin interfaces, debug capabilities\n- \ud83d\udccb **Method Discovery**: Enumerate supported RPC methods\n- \ud83d\udcc4 **Multiple Formats**: Output results in table, JSON, or YAML format\n- \ud83d\udc0d **Python API**: Use as a library in your Python projects\n\n### Client Version Parsing\n\nThe tool can extract detailed information from client version strings:\n\n- **Programming Language**: Go, Rust, Java, .NET, JavaScript/TypeScript\n- **Language Version**: Specific version (e.g., Go 1.21.4, Java 17, .NET 8.0.0)\n- **Operating System**: Linux, Windows, macOS, FreeBSD, OpenBSD\n- **Architecture**: x86_64, amd64, arm64, ARM, etc.\n- **Node Version**: Exact node software version\n- **Build Information**: Commit hashes, timestamps (where available)\n\nExample parsed information:\n```\nClient Version: Geth/v1.13.5-stable/linux-amd64/go1.21.4\n\u251c\u2500\u2500 Implementation: Geth \n\u251c\u2500\u2500 Node Version: 1.13.5-stable\n\u251c\u2500\u2500 Programming Language: Go\n\u251c\u2500\u2500 Language Version: 1.21.4\n\u251c\u2500\u2500 Operating System: Linux\n\u2514\u2500\u2500 Architecture: amd64\n```\n\n## Installation\n\n### From PyPI (Recommended)\n\n```bash\npip install ethereum-rpc-fingerprinter\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/yourusername/ethereum-rpc-fingerprinter.git\ncd ethereum-rpc-fingerprinter\npip install -e .\n```\n\n## Quick Start\n\n### Command Line Usage\n\nThe tool provides a modern CLI with two command names:\n- `ethereum-rpc-fingerprinter` (full name)\n- `erf` (short alias)\n\n#### Basic Fingerprinting\n\n```bash\n# Fingerprint a single endpoint\nerf fingerprint http://localhost:8545\n\n# Multiple endpoints with async processing\nerf fingerprint -a http://localhost:8545 https://eth.llamarpc.com\n\n# From file (one URL per line) - great for pentesting\nerf fingerprint -f endpoints.txt\n\n# From file with async processing\nerf fingerprint -f endpoints.txt -a --max-concurrent 10\n\n# Export results to JSON\nerf fingerprint -o results.json http://localhost:8545\n\n# Different output formats\nerf fingerprint --format json http://localhost:8545\nerf fingerprint --format yaml http://localhost:8545\nerf fingerprint --format table http://localhost:8545 # default\n\n# Verbose output with progress\nerf fingerprint -v -a http://localhost:8545 https://cloudflare-eth.com\n```\n\n#### Bulk Scanning (Perfect for Pentesting) \ud83c\udfaf\n\n```bash\n# Scan from file with beautiful progress tracking\nerf fingerprint -f endpoints.txt --async --verbose\n\n# High-performance bulk scanning with custom concurrency\nerf fingerprint -f endpoints.txt --async --max-concurrent 20 --timeout 5\n\n# Export bulk results to file\nerf fingerprint -f endpoints.txt --async -o scan_results.json --format json\n\n# Quiet mode for automation (progress bar only)\nerf fingerprint -f endpoints.txt --async --quiet --format json\n```\n\n#### Client Version Analysis\n\n```bash\n# Parse client version strings\nerf parse-version \"Geth/v1.13.5-stable/linux-amd64/go1.21.4\"\n\n# Multiple versions at once\nerf parse-version \\\n \"Geth/v1.13.5-stable/linux-amd64/go1.21.4\" \\\n \"Besu/v23.4.0/linux-x86_64/openjdk-java-17\" \\\n \"Nethermind/v1.20.3+77d89dbe/windows-x64/dotnet8.0.0\"\n```\n\n#### Additional Commands\n\n```bash\n# List supported implementations\nerf list-implementations\n\n# Include development tools\nerf list-implementations --include-dev\n\n# Get help for any command\nerf --help\nerf fingerprint --help\n```\n\n### Advanced CLI Usage\n\n```bash\n# Comprehensive analysis with all options\nerf fingerprint \\\n --verbose \\\n --async \\\n --timeout 30 \\\n --max-concurrent 5 \\\n --format json \\\n --output comprehensive_report.json \\\n http://localhost:8545 \\\n https://eth.llamarpc.com \\\n https://cloudflare-eth.com\n\n# Automation-friendly (quiet mode)\nerf fingerprint --quiet --format json http://localhost:8545 | jq '.[]'\n```\n\n### Python API Usage\n\n```python\nimport asyncio\nfrom ethereum_rpc_fingerprinter import EthereumRPCFingerprinter\n\n# Create fingerprinter instance\nfingerprinter = EthereumRPCFingerprinter()\n\n# Synchronous fingerprinting\nresult = fingerprinter.fingerprint(\"http://localhost:8545\")\nprint(f\"Implementation: {result.implementation}\")\nprint(f\"Node Version: {result.node_version}\")\nprint(f\"Programming Language: {result.programming_language}\")\nprint(f\"Language Version: {result.language_version}\")\nprint(f\"Operating System: {result.operating_system}\")\nprint(f\"Architecture: {result.architecture}\")\n\n# Asynchronous fingerprinting\nasync def fingerprint_multiple():\n results = await fingerprinter.fingerprint_async([\n \"http://localhost:8545\",\n \"https://eth.llamarpc.com\",\n \"https://cloudflare-eth.com\"\n ])\n \n for result in results:\n print(f\"{result.endpoint}: {result.implementation} {result.node_version}\")\n\nasyncio.run(fingerprint_multiple())\n\n# Client version parsing\nversion_info = fingerprinter.parse_client_version(\"Geth/v1.13.5-stable/linux-amd64/go1.21.4\")\nprint(f\"Language: {version_info.programming_language} {version_info.language_version}\")\nprint(f\"Platform: {version_info.operating_system} {version_info.architecture}\")\n```\n\n## Example Output\n\n### Geth Node\n```\nFingerprinting: http://localhost:8545\n\n\ud83d\udd0d Basic Information:\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Endpoint \u2502 http://localhost:8545 \u2502\n\u2502 Implementation \u2502 Geth \u2502\n\u2502 Client Version \u2502 Geth/v1.13.5-stable-3f... \u2502\n\u2502 Node Version \u2502 1.13.5-stable \u2502\n\u2502 Language \u2502 Go 1.21.4 \u2502\n\u2502 Platform \u2502 Linux amd64 \u2502\n\u2502 Chain ID \u2502 1 (Ethereum Mainnet) \u2502\n\u2502 Network ID \u2502 1 \u2502\n\u2502 Block Height \u2502 18,750,123 \u2502\n\u2502 Syncing \u2502 No \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\ud83d\udcca Network Status:\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Gas Price \u2502 15.2 Gwei \u2502\n\u2502 Peer Count \u2502 47 peers \u2502\n\u2502 Mining \u2502 No \u2502\n\u2502 Hashrate \u2502 0 H/s \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\ud83d\udd12 Security Information:\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Accounts \u2502 None exposed \u2502\n\u2502 Debug Interface \u2502 Not detected \u2502\n\u2502 Admin Interface \u2502 Not detected \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\ud83d\udee0\ufe0f Supported Methods:\neth_accounts, eth_blockNumber, eth_call, eth_chainId, eth_estimateGas,\neth_gasPrice, eth_getBalance, eth_getBlockByHash, eth_getBlockByNumber,\neth_getCode, eth_getLogs, eth_getStorageAt, eth_getTransactionByHash,\neth_getTransactionCount, eth_getTransactionReceipt, eth_hashrate,\neth_mining, eth_sendRawTransaction, eth_syncing, net_listening,\nnet_peerCount, net_version, web3_clientVersion, web3_sha3\n```\n\n### Hardhat Development Node\n```\nFingerprinting: http://localhost:8545\n\n\ud83d\udd0d Basic Information:\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Endpoint \u2502 http://localhost:8545 \u2502\n\u2502 Implementation \u2502 Hardhat \u2502\n\u2502 Client Version \u2502 HardhatNetwork/2.17.2/@hard... \u2502\n\u2502 Node Version \u2502 2.17.2 \u2502\n\u2502 Language \u2502 JavaScript (Node.js) \u2502\n\u2502 Platform \u2502 Unknown \u2502\n\u2502 Chain ID \u2502 31337 (Hardhat Network) \u2502\n\u2502 Network ID \u2502 31337 \u2502\n\u2502 Block Height \u2502 0 \u2502\n\u2502 Syncing \u2502 No \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\ud83d\udd12 Security Information:\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Accounts \u2502 20 accounts exposed \u2502\n\u2502 Debug Interface \u2502 Available \u2502\n\u2502 Admin Interface \u2502 Not detected \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\u26a0\ufe0f Development Environment Detected\n```\n\n## Supported Implementations\n\n### Production Nodes\n- **Geth** (Go Ethereum) - Go implementation\n- **Besu** (Hyperledger Besu) - Java implementation \n- **Nethermind** - .NET implementation\n- **Erigon** (formerly TurboGeth) - Go implementation\n- **Reth** - Rust implementation (modern)\n- **Parity/OpenEthereum** - Rust implementation (legacy)\n- **EthereumJS** - TypeScript implementation (beta)\n\n### Development Tools\n- **Hardhat Network** - JavaScript/TypeScript\n- **Ganache** - JavaScript\n- **Anvil** (Foundry) - Rust\n\n## CLI Documentation\n\nFor comprehensive CLI usage, see [CLI_USAGE.md](CLI_USAGE.md).\n\n## Security Considerations\n\nThis tool is designed for:\n- \u2705 Security research and auditing\n- \u2705 Network analysis and monitoring\n- \u2705 Development and testing\n- \u2705 Educational purposes\n\n**Important**: Only use this tool on endpoints you own or have explicit permission to test. Unauthorized scanning of RPC endpoints may violate terms of service or be considered malicious activity.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes\n4. Run tests (`python -m pytest`)\n5. Commit your changes (`git commit -m 'Add amazing feature'`)\n6. Push to the branch (`git push origin feature/amazing-feature`)\n7. Open a Pull Request\n\n### Publishing\n\nFor maintainers, use the automated publish script to release new versions:\n\n```bash\n# Test with dry run first\n./publish.sh --dry-run\n\n# Publish patch version to Test PyPI\n./publish.sh patch --test\n\n# Publish to production PyPI\n./publish.sh patch\n```\n\nSee [PUBLISHING.md](PUBLISHING.md) for detailed publishing instructions.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Changelog\n\n### v1.1.0 (2025-09-12) - Current Release \u2728\n- \ud83d\udcc1 **File Input Support**: Added `--file` / `-f` option to read endpoint lists from files (one URL per line)\n- \ud83c\udfa8 **Rich Integration**: Beautiful progress bars with real-time completion tracking, elapsed time, and ETA\n- \u2728 **Enhanced Tables**: Modern rounded tables with color-coded values and professional styling\n- \ud83d\ude80 **Improved UX**: Spinner animations, better visual feedback, and emoji icons for different sections\n- \ud83d\udcca **Progress Tracking**: Real-time progress bars for async scanning with completion rates and timing\n- \ud83d\udd27 **Better CLI**: Enhanced verbose output with Rich console formatting and improved readability\n- \ud83d\udce6 **Bulk Scanning**: Perfect for pentesting workflows - scan thousands of endpoints with visual progress\n\n### v1.0.0 (2025-09-11)\n- \ud83c\udf89 **Major Release**: Migrated to Click CLI framework with modern interface\n- \u26a1 **Async Processing**: Added async support for multiple endpoints with configurable concurrency\n- \ud83c\udf08 **Enhanced Output**: Colored tables, improved formatting, and better error handling\n- \ud83d\udcc4 **YAML Support**: Added YAML output format alongside JSON and table formats\n- \ud83d\udce6 **PyPI Publication**: Published to PyPI with easy `pip install` and automated publishing\n- \ud83d\udcda **Documentation**: Added comprehensive CLI documentation and usage examples\n- \ud83d\udd27 **Improved Parsing**: Enhanced client version parsing with better language/OS detection\n\n### v0.3.0\n- Migrated to Click CLI framework with modern interface\n- Added async processing for multiple endpoints\n- Enhanced output formatting with colored tables\n- Added YAML output support\n- Published to PyPI with easy installation\n- Added comprehensive CLI documentation\n- Improved error handling and progress indication\n\n### v0.2.0\n- Added detailed client version parsing\n- Enhanced security analysis with language/OS detection\n- Improved method detection and categorization\n- Better error handling and timeout management\n\n### v0.1.0\n- Initial release with basic fingerprinting\n- Support for major Ethereum client implementations\n- JSON export functionality\n- Basic client version detection\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A comprehensive tool for fingerprinting Ethereum RPC endpoints",
"version": "1.1.2",
"project_urls": {
"Bug Reports": "https://github.com/yourusername/ethereum-rpc-fingerprinter/issues",
"Documentation": "https://github.com/yourusername/ethereum-rpc-fingerprinter#readme",
"Homepage": "https://github.com/yourusername/ethereum-rpc-fingerprinter",
"Repository": "https://github.com/yourusername/ethereum-rpc-fingerprinter"
},
"split_keywords": [
"ethereum",
" rpc",
" fingerprinting",
" blockchain",
" web3",
" geth",
" besu",
" nethermind",
" erigon",
" security",
" analysis"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "776a8860418b9acc982f0ee836d60ae14793dffe408fa346a0282732fc0aeb29",
"md5": "2949889a72f56a434f3fddb163c0f415",
"sha256": "2ae974e74f35d1aad61708129bbff3618cddff6d1919b24f94a8f24119a72037"
},
"downloads": -1,
"filename": "ethereum_rpc_fingerprinter-1.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2949889a72f56a434f3fddb163c0f415",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 18926,
"upload_time": "2025-09-12T23:27:02",
"upload_time_iso_8601": "2025-09-12T23:27:02.435306Z",
"url": "https://files.pythonhosted.org/packages/77/6a/8860418b9acc982f0ee836d60ae14793dffe408fa346a0282732fc0aeb29/ethereum_rpc_fingerprinter-1.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c34676cc5d5321267a99cba4aa7eb3a1a4946e6e10fead5fe6506e6e13b0fe1c",
"md5": "de76e6675e2337c80a2925f4984afb89",
"sha256": "51935fdcb1068afe9bcf4822e71338b078d631ea214bed993b132aec75afdeef"
},
"downloads": -1,
"filename": "ethereum_rpc_fingerprinter-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "de76e6675e2337c80a2925f4984afb89",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 31645,
"upload_time": "2025-09-12T23:27:04",
"upload_time_iso_8601": "2025-09-12T23:27:04.018382Z",
"url": "https://files.pythonhosted.org/packages/c3/46/76cc5d5321267a99cba4aa7eb3a1a4946e6e10fead5fe6506e6e13b0fe1c/ethereum_rpc_fingerprinter-1.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-12 23:27:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "smolgroot",
"github_project": "ethereum-rpc-fingerprinter",
"github_not_found": true,
"lcname": "ethereum-rpc-fingerprinter"
}