{"id":13422816,"url":"https://github.com/eset/ipyida","last_synced_at":"2025-05-14T15:10:27.041Z","repository":{"id":40461838,"uuid":"60036204","full_name":"eset/ipyida","owner":"eset","description":"IPython console integration for IDA Pro","archived":false,"fork":false,"pushed_at":"2024-09-10T16:28:15.000Z","size":1001,"stargazers_count":769,"open_issues_count":10,"forks_count":73,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-04-06T00:06:07.202Z","etag":null,"topics":["ida","ida-plugin","ida-pro","idapython","ipython","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eset.png","metadata":{"files":{"readme":"README.adoc","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":"2016-05-30T20:09:42.000Z","updated_at":"2025-04-04T20:37:33.000Z","dependencies_parsed_at":"2022-07-12T18:02:26.315Z","dependency_job_id":"71db0249-9d7b-44f6-b28a-01a96517ad66","html_url":"https://github.com/eset/ipyida","commit_stats":{"total_commits":132,"total_committers":5,"mean_commits":26.4,"dds":"0.11363636363636365","last_synced_commit":"4f715f0cf0fc25622b6c781244780fbfa72a5286"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eset%2Fipyida","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eset%2Fipyida/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eset%2Fipyida/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eset%2Fipyida/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eset","download_url":"https://codeload.github.com/eset/ipyida/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248654044,"owners_count":21140235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ida","ida-plugin","ida-pro","idapython","ipython","python"],"created_at":"2024-07-30T23:00:58.351Z","updated_at":"2025-04-13T02:02:45.204Z","avatar_url":"https://github.com/eset.png","language":"Python","readme":"= IPyIDA\n\nIPyIDA is a python-only solution to add an IPython console to IDA Pro. Use\n`\u003cShift-.\u003e` to open a window with an embedded _Qt console_. You can then\nbenefit from IPython's autocompletion, online help, monospaced font input\nfield, graphs, and so on.\n\nYou can also connect to the kernel outside of IDA using `ipython console\n--existing`.\n\nimage::ipyida-screenshot.png[IPyIDA screenshot,width=100%]\n\n== Install\n\nIPyIDA should be compatible with IDA 6.6 and later on Windows, OS X and Linux.\nIt has been tested on IDA up to 9.0.\n\n=== Fast and easy install\n\nA script is provided to install IPyIDA and its dependencies automagically from\nthe IDA console. Simply copy the following line to the IDA console.\n\n.Python 2\n[source,python]\n----\nimport urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()\n----\n\n.Python 3\n[source,python]\n----\nimport urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read())\n----\n\nOn macOS, `Python3.framework` does not provide a trusted CA file. You can use\nthe system-wide file `/etc/ssl/cert.pem`.\n\n[source,python]\n----\nimport urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py', cafile=\"/etc/ssl/cert.pem\").read())\n----\n\nThe script will do the following:\n\n1. Install `pip` if it's not already installed\n2. Install the `ipyida` package from https://pypi.org/project/ipyida/[PyPi]\n3. Copy `ipyida_plugin_stub.py` to the user's `plugins` directory\n4. Load the IPyIDA plugin\n\nYou can inspect the link:install_from_ida.py[] script if you wish to see\nexactly what it does.\n\n==== Upgrading\n\nRerun the install script to update to the latest version and restart IDA.\n\n=== Install it the IDA way\n\nIf you'd rather manage the dependencies and updates yourself, you can\ncopy `ipyida_plugin_stub.py` and the `ipyida` directory inside IDA's\n`plugins` directory.\n\nThis method requires that you manage dependencies on your own. IPyIDA requires\nthe `ipykernel` and `qtconsole` package, and the `qasync` package if using\n`ipykernel` version 5 or newer.\n\n== Jupyter Notebook integration\n\nIPyIDA includes a magic command, `%open_notebook`, to open a browser with a\nnotebook attached to IPyIDA. The command takes care of installing dependencies\non its first run and starting a Notebook server unless one is already running.\nCheck the command help (by typing `%open_notebook?`) for further options.\n\n== Customizing the IPython console\n\nBy default, the console does not have any globals available. If you want to\nhave module imported before the console is opened, IPyIDA will read the\n`ipyidarc.py` file from the IDA user directory (`idaapi.get_user_idadir()`).\nAnything you import in this file will be available in the IPython console.\n\nThis is similar to the `idapythonrc.py` file.\n\n=== Dark mode\n\nWith a dark theme in IDA Pro, it's more convenient to also have a dark theme in\nthe IPython console. To activate the dark theme built into `qtconsole`, add the\nfollowing in your `ipyidarc.py`:\n\n[source, python]\n----\nimport qtconsole.styles\nimport ipyida.ida_qtconsole\nipyida.ida_qtconsole.set_widget_options(dict(\n    style_sheet = qtconsole.styles.default_dark_style_sheet,\n    syntax_style = qtconsole.styles.default_dark_syntax_style\n))\n----\n\n== Caveats\n\n=== External console not responding if IDA's window is in the background for too long\n\nThis problem is specific to OS X's App Nap feature in OS X 10.9 and up. When\nrunning  Disabling App Nap for IDA Pro seems to fix the problem, but is a a hack\nfor now and will use more battery on a laptop, we should find a better solution.\n\nHere is how to disable App Nap for IDA Pro:\n\n[source,bash]\n----\ndefaults write com.hexrays.idaq   NSAppSleepDisabled -bool YES\ndefaults write com.hexrays.idaq64 NSAppSleepDisabled -bool YES\n----\n\n== Similar work\n\n@james91b also successfully integrated a IPython kernel in IDA. Being a\nnon-Windows IDA user, I needed something cross-platform and took a Python-only\napproach to implement it. Although the some of the implementation idea comes\nfrom that project, IPyIDA was written from scratch. Hat tip to @james91b and all\nIDA_IPython contributors. IDA_IPython is available on Github at\nhttps://github.com/james91b/ida_ipython.\n","funding_links":[],"categories":["IDA Plugins","\u003ca id=\"c08ebe5b7eec9fc96f8eff36d1d5cc7d\"\u003e\u003c/a\u003e辅助脚本编写","使用"],"sub_categories":["\u003ca id=\"1721c09501e4defed9eaa78b8d708361\"\u003e\u003c/a\u003e控制台\u0026\u0026窗口界面","\u003ca id=\"c08ebe5b7eec9fc96f8eff36d1d5cc7d\"\u003e\u003c/a\u003e辅助脚本编写"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feset%2Fipyida","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feset%2Fipyida","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feset%2Fipyida/lists"}