Yet anohter radare2 python bindings.
Project description
pyr2
Yet another radare2 python bindings.
Compared to radare2-bindings and radare2-r2pipe, this binding:
- Doesn't need any extra installation of radare2. Just
pip install
and you are ready to go. - Gives you the full control of the core radare2 API and helps build your own tools.
Install
pip3 install --upgrade pyr2
No need to install radare2 since all dynamic libraries are bundled with the Python wheels.
Example
Implement a basic command line r2 by pyr2.
import r2
import ctypes
import argparse
class R2:
def __init__(self, bin):
self._r2c = r2.r_core.r_core_new()
fh = r2.r_core.r_core_file_open(self._r2c, ctypes.create_string_buffer(b"/bin/ls"), 0b101, 0)
r2.r_core.r_core_bin_load(self._r2c, ctypes.create_string_buffer(b"/bin/ls"), (1<<64) - 1)
def cmd(self, cmd):
r = r2.r_core.r_core_cmd_str(self._r2c, ctypes.create_string_buffer(cmd.encode("utf-8")))
return ctypes.string_at(r).decode('utf-8')
def __del__(self):
r2.r_core.r_core_free(self._r2c)
if __name__ == "__main__":
ap = argparse.ArgumentParser("Implement a basic command line r2 by pyr2")
ap.add_argument("binary", help="The binary to analyse.")
args = ap.parse_args()
r2pipe = R2(args.binary)
while True:
print("> ", end="")
cmd = input()
if cmd.strip() == "q":
break
print(r2pipe.cmd(cmd))
Note that all radare2 APIs are exported as bare ctypes function prototype. Be catious with c-style strings.
Build Instructions
Clone the repository and submodules.
git clone https://github.com/wtdcode/pyr2
cd pyr2
git submodule update --init --recursive
Since radare2 chooses meson
as their alternative building system and it's cross-platform, the first step is install meson
.
pip3 install meson
Build the package. Note that on Windows, x64 Native Tools Command Prompt
is required to build.
python3 setup.py build
Install and use.
# Or pip3 install -e .
pip3 install .
Credits
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for pyr2-2.0.0-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8fcd416242c552d59d8a9908ebc070a1b811674f91145b5147c768dfe80ccc7 |
|
MD5 | 7e8cc4d86e06378d10bbe86bfa9dce55 |
|
BLAKE2b-256 | 4f334d79975e2c2e86a75d428a8e04a08add51c785ddb1b6861fd6b1b7209732 |
Hashes for pyr2-2.0.0-py3-none-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83fc1106373edbda99828bcdcf0ea8a9b1ac5596f1c527f0f058953da6e9f6b6 |
|
MD5 | 30796da0df4b1ccd49c9c8852b5c5d48 |
|
BLAKE2b-256 | 4792fec30626f8f1fd9e4a0d1b1a39e6a11dcf231b26aa064482c0ee503753f5 |
Hashes for pyr2-2.0.0-py3-none-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c22d750939e3b98f77c1a95be2708d9b6a23de0bb3e34a475e824252f1c6b76 |
|
MD5 | d8a497c26d6b06708d6529af84c0f536 |
|
BLAKE2b-256 | 22789bf0c34890243d5f04a0e4e4f7c0d2cbd296acc225db80ba6d3b46772487 |