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.
IPyIDA has been tested with IDA 6.6 and up on Windows, OS X and Linux.
A script is provided to install IPyIDA and its dependencies automagically from the IDA console. Simply copy the following line to the IDA console.
import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()The script will do the following:
-
Install
pipif it’s not already install -
Install the ipyida package from the
stablebranch -
Load the ipyida plugin
-
Add a few lines to your
idapythonrc.pyso it’s loaded at the proper time when IDA starts.
You can inspect the install_from_ida.py script if you which to see exactly what it does.
|
Warning
|
Don’t panic. It’s normal to see Windows' command prompt window open during the installation on Windows. |
This is not the recommend way of installing IPyIDA but if you insist, you can
copy the ipyida_plugin_stub.py and the ipyida 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.
IPython notebook cannot attach to an existing kernel like ipython console and
ipython qtconsole do. There’s some more background info here:
ipython/ipython#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.
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@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.