Legions
Ethereum Node Security Toolkit
Handy toolkit for (security) researchers poking around Ethereum nodes and contracts, now with a slick command-line interface, with auto complete commands and history.
Other functionalities:
- Conversions (toWei, fromWei, keccak, etc)
- Query for balance, code, storage of smart contracts, ecrecover
- etc
This package is extremely beta
Installation
Require Python 3.6.
git clone https://github.com/shayanb/Legions
cd Legions
pip install .
or
pip install legions
Usage
If installed locally:
python legions/main.py
or if installed globally:
legions
Functions
| Command | [Subcommand] | Description |
|---|---|---|
| sethost | Setup the Web3 connection (RPC, IPC, HTTP) (default to infura mainnet) | |
| getnodeinfo | Information about the connected node (run setnode before this) |
|
| conversions | Conversions possible to do with Web3 | |
| fromWei | Converts the input to ether (to currency default to ether) |
|
| toWei | Converts the input to Wei (from currency default to ether) |
|
| keccak | keccak hash of the input | |
| toBytes | Converts the input to hex representation of its Bytes | |
| toChecksumAddress | Converts the input to Checksum Address | |
| toHex | Converts the input text to Hex | |
| fromWei | Converts the input to ether (or specified currency) | |
| query | Query Blockchain (Storage, balance, etc) | |
| balance | Get Balance of an account | |
| block | Get block details by block number | |
| code | Get code of the smart contract at address | |
| ecrecover | Get address associated with the signature (ecrecover) BUGGY |
|
| storage | Read the storage of a contract (count default = 10) |
|
| command | Manual RPC method with args | |
| investigate | Investigate further in the node (e.g. check if accounts are unlocked, etc) | |
| accounts | Investigate accounts (e.g. check if accounts are unlocked, etc) | |
| admin | Investigate accounts (e.g. functionalities under the admin_ namespace) | |
| sign | Investigate signature functionalities | |
| ens | Do Ethereum Name Service queries (supported on the mainnet only) | |
| toName | Transform an address to the ENS name | |
| toAddress | Transform an ENS name to the Ethereum public address | |
| info | Get details about an ENS name | |
| version | Print Versions (If connected to a node it will print the host version too) |
Acknowledgement
- Interactive shell: python-nubia
- Web3.py
TODO:
- Able to connect to ws / http / https / IPC
- Fix
VerboseStatus bar (It does not change fromOFF) - Print Accounts in
getnodeinfoin a pretty format (One per line) - A way to reinitiate w3 (web3) by setting it to new host (right now it works for sethost but getnodeinfo still uses the first initiated w3)
- add way more functionalities
-
chains.jsondepending on the execution path might not be found. fix it. - inline TODOs (tons)
Metadata
Release files for legions 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| legions-0.8.1.tar.gz | 15.8 kB | Details |
Release files / legions-0.8.1.tar.gz
| Download URL | legions-0.8.1.tar.gz |
|---|---|
| Size | 15.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83e2736ce8fd85a7945d8c7ad53d24782fd2f7c583df6066d63255de9fb50434
|
|
BLAKE2b-256 checksum How to use checksums |
3e1d4afe0afcc96950fc66978e49cb99797a45582269ea64a845b428e45133c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.8.0 tqdm/4.46.0 CPython/3.8.1
|