{"id":16010264,"url":"https://github.com/radare/v-r2pipe","last_synced_at":"2026-02-11T20:36:15.534Z","repository":{"id":77040982,"uuid":"232449703","full_name":"radare/v-r2pipe","owner":"radare","description":"r2pipe for V","archived":false,"fork":false,"pushed_at":"2024-09-28T19:26:32.000Z","size":58,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-07T14:44:10.678Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"V","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/radare.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-08T01:17:57.000Z","updated_at":"2024-09-28T19:26:36.000Z","dependencies_parsed_at":"2023-12-12T16:30:19.412Z","dependency_job_id":"20689565-08c5-49dd-a80d-a3509fda5a86","html_url":"https://github.com/radare/v-r2pipe","commit_stats":{"total_commits":46,"total_committers":1,"mean_commits":46.0,"dds":0.0,"last_synced_commit":"d9c9a57faf18ab5990e6370a50b61dce7d10c796"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/radare/v-r2pipe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radare%2Fv-r2pipe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radare%2Fv-r2pipe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radare%2Fv-r2pipe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radare%2Fv-r2pipe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/radare","download_url":"https://codeload.github.com/radare/v-r2pipe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radare%2Fv-r2pipe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29324213,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T00:34:26.354Z","status":"ssl_error","status_checked_at":"2026-02-11T00:34:09.494Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T13:05:12.844Z","updated_at":"2026-02-11T20:36:15.506Z","avatar_url":"https://github.com/radare.png","language":"V","readme":"# r2pipe for V\n\nThis repository contains the r2pipe implementation in V\n\n## Installation\n\n```go\n$ v install radare.r2pipe\n\n```\n\n## Usage\n\nThis module can be used to interact with an already existing session of r2:\n\n```go\n$ r2 /bin/ls\n[0x8048000]\u003e #!pipe v\n\u003e\u003e\u003e import radare.r2pipe\n\u003e\u003e\u003e r2 := r2pipe.new()\n\u003e\u003e\u003e print(r2.cmd('?E Hello World'))\n\u003e\u003e\u003e r2.free()\n```\n\nor\n\n```sh\n$ r2 -i test.v /bin/ls\n\u003e . test.v\n```\n\nBut it can also be used to spawn new instances of r2:\n\n```go\nmodule main\n\nimport radare.r2pipe\n\nfn main() {\n  c := r2pipe.spawn('/bin/ls', '')\n  print(c.cmd('?E Hello'))\n  c.free()\n}\n\n```\n\n## Side Channel\n\nr2pipe.v introduces a new api to capture the output of the stderr messages printed by r2\nto the user. This channel is async, and can contain anything unstructured, so it's not\nbreaking backward compatibility and enables the users to also use this side pipe to\ncomunicate with the target process when running in debugger mode for example.\n\nThis is implemented by making r2pipe run a command in r2 that redirects the stderr to\na pipe, socket or file, which is then handled as an event captured in the r2 side.\n\n```go\nimport r2pipe\nimport time\n\nfn main() {\n\tmut r := r2pipe.spawn('/bin/ls', '')\n\tr.on('errmsg', works, fn (s r2pipe.R2PipeSide, msg string) bool {\n\t\teprintln('errmsg.received($msg)')\n\t\treturn true\n\t})\n\tr.cmd('Z')\n\tr.free()\n}\n```\n\n## Example\n\n```go\nmodule main\n\nimport radare.r2pipe\n\nfn main() {\n  c := r2pipe.new()\n  print(c.cmd('?E Hello'))\n  c.free()\n}\n\n```\n","funding_links":[],"categories":["Reverse Engineering"],"sub_categories":["Malware Articles and Sources"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradare%2Fv-r2pipe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fradare%2Fv-r2pipe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradare%2Fv-r2pipe/lists"}