Ithildin was a type of specially crafted Mithril that only the most experienced craftsmen of the Noldor could learn how to make and pass on to others.
Ithildin is a semantic analysis tool for EVM bytecode based on Mythril. By using symbolic execution and taint analysis, it aims at detecting functions that are restricted by authentication patterns, and to extract administrator addresses whenever possible.
Check out the wiki for a list of currently working patterns and some that are planned to be implemented soon.
The Aniron font is Copyright © Pete Klassen, 2004. All rights Reserved.
- Python 3.6+
$ pip3 install ithildin
Ithildin can currently analyze contracts provided in one of the following formats.
Run ithil --help
to see all arguments that the program accepts.
The following command analyzes the contract bytecode at the given target address.
You'll have to supply the RPC endpoint using the --rpc
argument, unless you are using geth, in which case the default endpoint http://localhost:8545
is used.
Note: Infura secrets are currently not supported.
# Using a local JSON RPC provider
$ ithil analyze --address 0x3D8e04CC42F61624e1B193C51f27D373A9244D9b --rpc localhost:7545
# Using an Infura provider
$ ithil analyze --address 0x868326efca6e89f75a76d141167759f1ad10854c --rpc https://mainnet.infura.io/v3/<project-id>
This command will use the solc compiler that is currently installed on your system if --solc
is not specified.
Older compilers can be downloaded from the ethereum/solc-bin repository (make sure you make them executable).
# Using solc version v0.7.6
$ ithil analyze --sol Example.sol --solc solc-linux-amd64-v0.7.6+commit.7338295f
Provide a file containing the EVM (creation) bytecode in one line.
$ ithil analyze --bin Example.bin
Install all the requirements inside a virtual environment or globally.
$ cd <ithildin-root>
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip3 install -r requirements.txt
$ pip3 install -r requirements.txt