IPyIDA
IPyIDA is a python-only solution to use a IPython console in the context of IDA Pro. It spawns an IPython kernel that you can connect to with ipython console --existing in your shell or by opening a QT Console window in IDA Pro with <Shift-.>. You can then benefit from IPython’s autocompletion, online help, monospaced font input field, graphs, and so on.
Install
IPyIDA has been tested with IDA 6.6 and up on Windows, OS X and Linux.
Fast and easy install
A script is provided to install IPyIDA and its dependencies automagically from the IDA console. Simply copy the following line to the IDA console.
The script will do the following:
Warning
Don’t panic. It’s normal to see Windows' command prompt window open during the installation on Windows.
Install it the IDA way
This is not the recommend way of installing IPyIDA but if you insist, you can copy the ipyida_plugin_stub.py and theipyida directory inside IDA’s plugins directory.
This method requires that you manage dependencies on your own. IPyIDA requires the ipython[qtconsole]==3.2.3 package.
Caveats
Notebook not working
IPython notebook cannot attach to an existing kernel like ipython console and ipython qtconsole do. There’s some more background info here: https://github.com/ipython/ipython/issues/4066.
There are workarounds to this be I didn’t include one yet. I will consider adding it if it’s not too hackish. Pull requests are welcome.
External console not responding if IDA’s window is in the background for too long
This problem is specific to OS X’s App Nap feature in OS X 10.9 and up. When running Disabling App Nap for IDA Pro seems to fix the problem, but is a a hack for now and will use more battery on a laptop, we should find a better solution.
Here is how to disable App Nap for IDA Pro:
defaults write com.hexrays.idaq NSAppSleepDisabled -bool YES
defaults write com.hexrays.idaq64 NSAppSleepDisabled -bool YES
IPython version >= 4.0 (Jupyter) not yet tested
I haven’t had time to test if it works on Jupyter, but I don’t think it will out of the box. I’ll try that later; for now IPython 3 provides pretty much everything I need.
Similar work
@james91b also successfully integrated a IPython kernel in IDA. Being a non-Windows IDA user, I needed something cross-platform and took a Python-only approach to implement it. Although the some of the implementation idea comes from that project, IPyIDA was written from scratch. Hat tip to @james91b and all IDA_IPython contributors. IDA_IPython is available on Github at https://github.com/james91b/ida_ipython.
IPyIDA is a python-only solution to use a IPython console in the context of IDA Pro. It spawns an IPython kernel that you can connect to with ipython console --existing in your shell or by opening a QT Console window in IDA Pro with <Shift-.>. You can then benefit from IPython’s autocompletion, online help, monospaced font input field, graphs, and so on.
Install
IPyIDA has been tested with IDA 6.6 and up on Windows, OS X and Linux.
Fast and easy install
A script is provided to install IPyIDA and its dependencies automagically from the IDA console. Simply copy the following line to the IDA console.
Code:
import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
- Install pip if it’s not already install
- Install the ipyida package from the stable branch
- Load the ipyida plugin
- Add a few lines to your idapythonrc.py so it’s loaded at the proper time when IDA starts.
Warning
Don’t panic. It’s normal to see Windows' command prompt window open during the installation on Windows.
Install it the IDA way
This is not the recommend way of installing IPyIDA but if you insist, you can copy the ipyida_plugin_stub.py and theipyida directory inside IDA’s plugins directory.
This method requires that you manage dependencies on your own. IPyIDA requires the ipython[qtconsole]==3.2.3 package.
Caveats
Notebook not working
IPython notebook cannot attach to an existing kernel like ipython console and ipython qtconsole do. There’s some more background info here: https://github.com/ipython/ipython/issues/4066.
There are workarounds to this be I didn’t include one yet. I will consider adding it if it’s not too hackish. Pull requests are welcome.
External console not responding if IDA’s window is in the background for too long
This problem is specific to OS X’s App Nap feature in OS X 10.9 and up. When running Disabling App Nap for IDA Pro seems to fix the problem, but is a a hack for now and will use more battery on a laptop, we should find a better solution.
Here is how to disable App Nap for IDA Pro:
defaults write com.hexrays.idaq NSAppSleepDisabled -bool YES
defaults write com.hexrays.idaq64 NSAppSleepDisabled -bool YES
IPython version >= 4.0 (Jupyter) not yet tested
I haven’t had time to test if it works on Jupyter, but I don’t think it will out of the box. I’ll try that later; for now IPython 3 provides pretty much everything I need.
Similar work
@james91b also successfully integrated a IPython kernel in IDA. Being a non-Windows IDA user, I needed something cross-platform and took a Python-only approach to implement it. Although the some of the implementation idea comes from that project, IPyIDA was written from scratch. Hat tip to @james91b and all IDA_IPython contributors. IDA_IPython is available on Github at https://github.com/james91b/ida_ipython.