GithubHelp home page GithubHelp logo

ipyida's People

Contributors

fritzr avatar marc-etienne avatar rohitab avatar tmr232 avatar zerotypic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ipyida's Issues

%open_notebook dependency against jupyter-kernel-proxy

Hello @marc-etienne,

First thanks for keeping ipyida up to date :).

I wanted to try the %open_notebook feature which would be really usefull.
Nonetheless, when testing it the pip install jupyter-kernel-proxy fails with a no matching distribution found.
Indeed when looking on directly on https://pypi.org there is no such module.
Am I missing something ?

Thank you in advance,
Robin

As a side question: is the version jupyter-client<6.1.13 still required in the setup.py ?

(tested on IDA 8.1 Linux with Python 3.10)

Issues with IDA6.9 & Jupyter

I know that the project is not tested for this setting, but I decided to give it a go. Naturally, there are errors.

  1. IPython.kernel.zmq was changed to ipykernel
  2. IPython.qt.console and IPython.qt are both qtconsole now. This conflicts with the qtconsole.py found in this project.
  3. IDA 6.9 is using a custom version of PyQt5. This version does not have QtSvg.pyd. This causes the imports to fail.

While (1) and (2) are easy to solve, I am not sure how to handle (3).

Error in IDA 6.8 with python2.7.12 for Win8(64 bit)

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
[+] Using already installed pip (version 8.1.1)
Collecting ipyida
Using cached https://files.pythonhosted.org/packages/91/8d/67ae354e7780fe9004bfac6dddc3cb530588506f41d5face04a420cf84ec/ipyida-1.3-py2-none-any.whl
Collecting qtconsole>=4.3 (from ipyida)
Using cached https://files.pythonhosted.org/packages/c7/45/1a50288305797fbca7c2039f9baefff1a9df603322874743fbb8408d8ec2/qtconsole-4.4.4-py2.py3-none-any.whl
Collecting ipykernel>=4.6 (from ipyida)
Using cached https://files.pythonhosted.org/packages/11/0b/95330660f8cc5d63428b9886c800ea8d68842fd866389cf579acca4915be/ipykernel-5.1.0.tar.gz
Complete output from command python setup.py egg_info:
ERROR: ipykernel requires Python version 3.4 or above.

----------------------------------------

[.] ipyida system-wide package installation failed, trying user install
Collecting ipyida
Using cached https://files.pythonhosted.org/packages/91/8d/67ae354e7780fe9004bfac6dddc3cb530588506f41d5face04a420cf84ec/ipyida-1.3-py2-none-any.whl
Collecting qtconsole>=4.3 (from ipyida)
Using cached https://files.pythonhosted.org/packages/c7/45/1a50288305797fbca7c2039f9baefff1a9df603322874743fbb8408d8ec2/qtconsole-4.4.4-py2.py3-none-any.whl
Collecting ipykernel>=4.6 (from ipyida)
Using cached https://files.pythonhosted.org/packages/11/0b/95330660f8cc5d63428b9886c800ea8d68842fd866389cf579acca4915be/ipykernel-5.1.0.tar.gz
Complete output from command python setup.py egg_info:
ERROR: ipykernel requires Python version 3.4 or above.

----------------------------------------

Traceback (most recent call last):
File "", line 1, in
File "", line 91, in
Exception: ipyida package installation failed

Process hijacking in jupyter_client

This problem is not related to the code of this project, but it is critical for this project.
In script localinterface.py of module jupyter_client, there is the code, that start ipconfig on Windows systems:

def _load_ips_ipconfig():
    """load ip addresses from `ipconfig` output (Windows)"""
    out = _get_output('ipconfig')
    
    lines = out.splitlines()
    addrs = []
    for line in lines:
        m = _ipconfig_ipv4_pat.match(line.strip())
        if m:
            addrs.append(m.group(1))
    _populate_from_list(addrs)

Definition of _get_output:

def _get_output(cmd):
    """Get output of a command, raising IOError if it fails"""
    startupinfo = None
    if os.name == 'nt':
        startupinfo = subprocess.STARTUPINFO()
        startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    p = Popen(cmd, stdout=PIPE, stderr=PIPE, startupinfo=startupinfo)
    stdout, stderr = p.communicate()
    if p.returncode:
        raise IOError("Failed to run %s: %s" % (cmd, stderr.decode('utf8', 'replace')))
    return stdout.decode('utf8', 'replace')

In fact this code start ipconfig with relative path.
So if IDA try to analyze file C:\Test\notepad.exe.i64, module jupyter_client will start C:\Test\ipconfig.exe:

hijacking

IDA blocking while python commands are executed

I am aware that this is an issue with regular Python in IDA too, so I am assuming this is an issue with IDA itself,but it might be possible to work around it with the IPython hooking capabilities.

When running any command in the Python shell the IDA GUI is not usable until the command terminates. At least in my case when using angr it happens fairly often that I accidentally run commands which will take basically forever (state exploration without proper limits).

My idea was to find some way to set a timeout on any executed cell in IPython by leveraging the hooking points[0] or code transformations[1] IPython provides.

The ways to implement timeouts in Python[2] seem to be either by using multiprocessing or signal handling, the latter of which is not available on non-UNIX systems. I haven't found a way yet to do this properly via multi processing (or maybe multi threading?) but any input would be appreciated.

[0] https://ipython.readthedocs.io/en/5.x/api/generated/IPython.core.hooks.html
[1] https://ipython.readthedocs.io/en/5.x/config/inputtransforms.html
[2] https://stackoverflow.com/questions/492519/timeout-on-a-function-call

Installation fail with the following error in IDA 6.8 for Windows 8(64bit)

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\Lib\urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\Lib\urllib2.py", line 404, in open
response = self._open(req, data)
File "C:\Python27\Lib\urllib2.py", line 422, in _open
'_open', req)
File "C:\Python27\Lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\Lib\urllib2.py", line 1222, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "C:\Python27\Lib\urllib2.py", line 1184, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 1] _ssl.c:507: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version>

Console Startup

Both when running jupyter console --existing and from the Qt console (via Edit -> Plugins -> IPyIDA) I seem to need to run from idc import * and from idaapi import * the first time I connect to the kernel. This is incredibly annoying and of course there may be other startup things I want to do. However it seems that if I disconnect and reconnect to the kernel, any global names I defined in a previous connection remain, which is nice.

Is there any way to hook a startup file so that I can perform such imports when the kernel starts? The jupyter/ipython documentation leaves much to be desired. I've tried putting my import statements in the following files to no effect, even though I can verify with print statements that they are all run at various times (except $PYTHONSTARTUP, which I can't get to run):

  • ~/.ipython/profile_default/ipython_kernel_config.py
  • ~/.ipython/profile_default/startup/*.py
  • ~/.jupyter/jupyter_console_config.py
  • ~/.idapro/idapythonrc.py
  • $PYTHONSTARTUP

I even tried modifying the IPyIDA distribution files and adding the imports to the top of ida_plugin.py, ida_plugin_stub.py, ida_qtconsole.py, and kernel.py with identical results. Help!!

Support for Jupyther

Jupyther is the future of IPython. IPyIDA should use it instead of the 3.2 branch.

ipyida module not found when using install script

Setup fails when using the install script (one-liner) with "No module named 'ipyida'" during pip install.

IDA v7.4; Python 3.6
Ubuntu 18.04

<pip output>

Traceback (most recent call last):
  File "/home/user/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 359, in get_provider
    module = sys.modules[moduleOrReq]
KeyError: 'ipyida'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 137, in <module>
  File "/home/user/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1144, in resource_filename
    return get_provider(package_or_requirement).get_resource_filename(
  File "/home/user/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 361, in get_provider
    __import__(moduleOrReq)
ModuleNotFoundError: No module named 'ipyida'

RuntimeError: Cannot run the event loop while another loop is running

Running in IDA 7.5.
Not able to start an ipyida window. when trying to open one in IDA, the output window:

Task was destroyed but it is pending!
task: <Task pending name='Task-2' coro=<Kernel.dispatch_queue() done, defined at D:\Python\Python39\lib\site-packages\ipykernel\kernelbase.py:447> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x0000014A16917520>()]> cb=[IOLoop.add_future.<locals>.<lambda>() at D:\Python\Python39\lib\site-packages\tornado\ioloop.py:688]>
ERROR:tornado.general:Uncaught exception in ZMQStream callback
Traceback (most recent call last):
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "D:\Python\Python39\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 618, in run_until_complete
    self._check_running()
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 580, in _check_running
    raise RuntimeError(
RuntimeError: Cannot run the event loop while another loop is running
ERROR:tornado.general:Uncaught exception in zmqstream callback
Traceback (most recent call last):
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 448, in _handle_events
    self._handle_recv()
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 477, in _handle_recv
    self._run_callback(callback, msg)
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "D:\Python\Python39\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 618, in run_until_complete
    self._check_running()
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 580, in _check_running
    raise RuntimeError(
RuntimeError: Cannot run the event loop while another loop is running
Exception in callback BaseAsyncIOLoop._handle_events(2496, 1)
handle: <Handle BaseAsyncIOLoop._handle_events(2496, 1)>
Traceback (most recent call last):
  File "D:\Python\Python39\Lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "D:\Python\Python39\lib\site-packages\tornado\platform\asyncio.py", line 189, in _handle_events
    handler_func(fileobj, events)
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 448, in _handle_events
    self._handle_recv()
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 477, in _handle_recv
    self._run_callback(callback, msg)
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "D:\Python\Python39\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 618, in run_until_complete
    self._check_running()
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 580, in _check_running
    raise RuntimeError(
RuntimeError: Cannot run the event loop while another loop is running
ERROR:tornado.general:Uncaught exception in ZMQStream callback
Traceback (most recent call last):
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "D:\Python\Python39\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 618, in run_until_complete
    self._check_running()
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 580, in _check_running
    raise RuntimeError(
RuntimeError: Cannot run the event loop while another loop is running
ERROR:tornado.general:Uncaught exception in zmqstream callback
Traceback (most recent call last):
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 448, in _handle_events
    self._handle_recv()
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 477, in _handle_recv
    self._run_callback(callback, msg)
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "D:\Python\Python39\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 618, in run_until_complete
    self._check_running()
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 580, in _check_running
    raise RuntimeError(
RuntimeError: Cannot run the event loop while another loop is running
Exception in callback BaseAsyncIOLoop._handle_events(2460, 1)
handle: <Handle BaseAsyncIOLoop._handle_events(2460, 1)>
Traceback (most recent call last):
  File "D:\Python\Python39\Lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "D:\Python\Python39\lib\site-packages\tornado\platform\asyncio.py", line 189, in _handle_events
    handler_func(fileobj, events)
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 448, in _handle_events
    self._handle_recv()
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 477, in _handle_recv
    self._run_callback(callback, msg)
  File "D:\Python\Python39\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "D:\Python\Python39\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 618, in run_until_complete
    self._check_running()
  File "D:\Python\Python39\Lib\asyncio\base_events.py", line 580, in _check_running
    raise RuntimeError(
RuntimeError: Cannot run the event loop while another loop is running

I've tried reinstalling ipyida, ipykernel, pyzmq and so on, but it still doesn't work. 😣

Dark style of syntax and background

It's not really an issue but to all these guys that prefer a dark style :).

add to qtconsole.py

    from IPython.qt.console import styles
    ....
    self.ipython_widget.syntax_style = styles.default_dark_syntax_style
    self.ipython_widget.style_sheet = styles.default_dark_style_sheet

not sure if it's interesting to add a config interface or something, anyway for some reason the background is purely black instead of the grey monokai that ipython qtconsole have.

Not responding to ConnectionFileMixin.connection_file

At some point I had ipyida working within a jupyter notebook using a configuration file hack and remote_ikernel. At some point, an upgrade broke the functionality and I can't seem to get it working again. I can verify that the Jupyter creates the connection file properly, but ipyida doesn't seem to pick up the configuration. Any suggestions would be welcome.

jupyter_notebook_config.py

c.ConnectionFileMixin.connection_file = os.environ.get('IPY_CONNECTION_FILE', "kernel-{}.json".format(os.getppid()))

rik_local_idapro32bit/kernel.json

{
  "argv": [
    "/usr/bin/python", 
    "-m", 
    "remote_ikernel", 
    "--interface", 
    "local", 
    "--kernel_cmd", 
    "IPY_CONNECTION_FILE={connection_file} DISPLAY=:0 /opt/ida-7.1/ida", 
    "{connection_file}"
  ], 
  "display_name": "Local IDA Pro (32-bit)", 
  "remote_ikernel_argv": [
    "/usr/local/bin/remote_ikernel", 
    "manage", 
    "--add", 
    "--kernel_cmd=IPY_CONNECTION_FILE={connection_file} DISPLAY=:0 /opt/ida-7.1/ida", 
    "--name=IDA Pro (32-bit)", 
    "--interface=local"
  ]
}

crash with ida pro7.5 linux, ubuntu 22.04

I'm using ubuntu22.04 (python3.10) and ida pro7.5. When I put the ipyida and corresponding plugin file under plugins and start ida, it just crashed as follows:
image
Could you please give me some guidance or help how to fix this error?

open two IDA instance , ipyida got RuntimeError: Cannot run the event loop while another loop is running

Task was destroyed but it is pending!
task: <Task pending name='Task-3' coro=<Kernel.dispatch_queue() running at C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\ipykernel\kernelbase.py:473> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x000001895F6AA970>()]> cb=[IOLoop.add_future.<locals>.<lambda>() at C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\tornado\ioloop.py:688]>
ERROR:tornado.general:Uncaught exception in ZMQStream callback
Traceback (most recent call last):
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "asyncio\base_events.py", line 592, in run_until_complete
  File "asyncio\base_events.py", line 554, in _check_running
RuntimeError: Cannot run the event loop while another loop is running
ERROR:tornado.general:Uncaught exception in zmqstream callback
Traceback (most recent call last):
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 452, in _handle_events
    self._handle_recv()
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 481, in _handle_recv
    self._run_callback(callback, msg)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "asyncio\base_events.py", line 592, in run_until_complete
  File "asyncio\base_events.py", line 554, in _check_running
RuntimeError: Cannot run the event loop while another loop is running
Exception in callback BaseAsyncIOLoop._handle_events(2024, 1)
handle: <Handle BaseAsyncIOLoop._handle_events(2024, 1)>
Traceback (most recent call last):
  File "asyncio\events.py", line 81, in _run
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\tornado\platform\asyncio.py", line 189, in _handle_events
    handler_func(fileobj, events)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 452, in _handle_events
    self._handle_recv()
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 481, in _handle_recv
    self._run_callback(callback, msg)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "asyncio\base_events.py", line 592, in run_until_complete
  File "asyncio\base_events.py", line 554, in _check_running
RuntimeError: Cannot run the event loop while another loop is running
C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\IPython\core\history.py:369: RuntimeWarning: coroutine 'get_msg' was never awaited
  return reversed(list(cur))
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
ERROR:tornado.general:Uncaught exception in ZMQStream callback
Traceback (most recent call last):
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "asyncio\base_events.py", line 592, in run_until_complete
  File "asyncio\base_events.py", line 554, in _check_running
RuntimeError: Cannot run the event loop while another loop is running
ERROR:tornado.general:Uncaught exception in zmqstream callback
Traceback (most recent call last):
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 452, in _handle_events
    self._handle_recv()
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 481, in _handle_recv
    self._run_callback(callback, msg)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "asyncio\base_events.py", line 592, in run_until_complete
  File "asyncio\base_events.py", line 554, in _check_running
RuntimeError: Cannot run the event loop while another loop is running
Exception in callback BaseAsyncIOLoop._handle_events(1996, 1)
handle: <Handle BaseAsyncIOLoop._handle_events(1996, 1)>
Traceback (most recent call last):
  File "asyncio\events.py", line 81, in _run
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\tornado\platform\asyncio.py", line 189, in _handle_events
    handler_func(fileobj, events)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 452, in _handle_events
    self._handle_recv()
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 481, in _handle_recv
    self._run_callback(callback, msg)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 431, in _run_callback
    callback(*args, **kwargs)
  File "C:\qgb\IDA_Pro_v7.5_Portable\python38\lib\site-packages\jupyter_client\threaded.py", line 121, in _handle_recv
    msg_list = self.ioloop._asyncio_event_loop.run_until_complete(get_msg(future_msg))
  File "asyncio\base_events.py", line 592, in run_until_complete
  File "asyncio\base_events.py", line 554, in _check_running
RuntimeError: Cannot run the event loop while another loop is running

Change font size

How to change font size of console it seems not have any options and not affected by IDA font option.

Cannot Install IPYIDA on Latest IDA7.5 Release

When running the install command given in the instructions, everything apparently installs alright, and I even get the "Installation successful." message, but this is simply not true. An exception is thrown:

C:\Users\user\AppData\Roaming\Hex-Rays\IDA Pro\plugins\ipyida.py: 'NoneType' object has no attribute 'set_completer_frame'
Traceback (most recent call last):
File "C:\IDA75\python\3\ida_idaapi.py", line 604, in IDAPython_ExecScript
exec(code, g)
File "C:/Users/user/AppData/Roaming/Hex-Rays/IDA Pro/plugins/ipyida.py", line 11, in
from ipyida.ida_plugin import PLUGIN_ENTRY, IPyIDAPlugIn
File "C:\python38\lib\site-packages\ipyida\ida_plugin.py", line 45, in
_kernel.start()
File "C:\python38\lib\site-packages\ipyida\kernel.py", line 96, in start
app.shell.set_completer_frame()
AttributeError: 'NoneType' object has no attribute 'set_completer_frame'

that prohibits the install. How can I get around this issue, since I've never experienced it before? Thanks.

Change font size

The default qtconsole font size in IDA Pro is too small. How to enlarge the font size?

How to configure IPython

I just learned about this project. It looks very interesting.
As a heavy vim user, I wonder whether it supports vi mode in the IPython console. If not, how I can add the support. Thanks!

expression results only printed to Jupyter console

IDA: 7.7.220218 Windows x64 (32-bit address size)
IPyIDA: 1.7.2 from pypi.org
Windows: 10 x64.

Once IPyIDA is loaded, results of expressions entered in the Python prompt at the bottom of IDA's Output window are only printed in the Jupyter console and not in the Output window itself (as happens without plugin). One has to use print() or msg() to see the output.

No such file or directory 'C:/Program Files (x86)/IDA 6.8/plugins/ipyida.py'

I'm using IDA Pro 6.8.150423. The python version shipped with IDA does not work because of the outdated SSL version so I use 2.7.9. I'm running ipython 5.8.0 and the most recent pip version. Everytime when running the command to install ipyida i get:

[+] ipyida.py added to user plugins
[Errno 2] No such file or directory: 'C:/Program Files (x86)/IDA 6.8/plugins/ipyida.py'
Traceback (most recent call last):
  File "C:\Program Files (x86)\IDA 6.8\python\idaapi.py", line 601, in IDAPython_ExecScript
    execfile(script, g)
IOError: [Errno 2] No such file or directory: 'C:/Program Files (x86)/IDA 6.8/plugins/ipyida.py'

[+] IPyIDA Installation successful. Use <Shift+.> to open the console.

What am I doing wrong?
Running as admin did not solve it either.
The directory does exist but the file does not. It's all installed in default directories.

Crash after completion

On IDA 6.95/Linux I get next issue

ASSERT: "f == frame" in file /home/aundro/qt-builds/5.6.0/qtbase/src/gui/text/qtextdocument_p.cpp, line 1492
zsh: abort      ./idaq```

This happens when I try to complete something with multiple choises

win10x64 IDA_Pro Version 7.5.201028 exec install_from_ida.py ERROR


Python>import urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read())
[+] Using already installed pip (version 20.3.3)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 95, in <module>
  File "<string>", line 92, in pip_install
  File "contextlib.py", line 120, in __exit__
  File "<string>", line 49, in temp_file_as_stdout
  File "tempfile.py", line 473, in func_wrapper
io.UnsupportedOperation: not readable

Sometimes it just stops working...

Hi, this has been a problem for me ever since I first tried your lovely plugin back in 6.8.

I am now using 7.5 and I still suffer the same issue.

Something will happen, and when I next try to open the IPython Console window, all I get are

...

And if I type something like 1 + 2 into IDA's output console, 3 will appear in the IPython Console window.

However I have just now managed to get a page of error output, after hitting ^D and ^C and ^Z and anything I could think of.

As I suspected:

Traceback (most recent call last):
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\console_widget.py", line 427, in eventFilter
    return self._event_filter_console_keypress(event)
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\frontend_widget.py", line 355, in _event_filter_console_keypress
    self.request_interrupt_kernel()
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\frontend_widget.py", line 338, in request_interrupt_kernel
    self.interrupt_kernel()
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\frontend_widget.py", line 629, in interrupt_kernel
    self.kernel_manager.interrupt_kernel()
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\jupyter_client\manager.py", line 511, in interrupt_kernel
    raise RuntimeError("Cannot interrupt kernel. No kernel is running!")
RuntimeError: Cannot interrupt kernel. No kernel is running!
Traceback (most recent call last):
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\console_widget.py", line 427, in eventFilter
    return self._event_filter_console_keypress(event)
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\frontend_widget.py", line 355, in _event_filter_console_keypress
    self.request_interrupt_kernel()
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\frontend_widget.py", line 338, in request_interrupt_kernel
    self.interrupt_kernel()
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\qtconsole\frontend_widget.py", line 629, in interrupt_kernel
    self.kernel_manager.interrupt_kernel()
  File "C:\Users\sfink\AppData\Local\Programs\Python\Python37\lib\site-packages\jupyter_client\manager.py", line 511, in interrupt_kernel
    raise RuntimeError("Cannot interrupt kernel. No kernel is running!")
RuntimeError: Cannot interrupt kernel. No kernel is running!

How to restart the kernel?

stdout broken after reopen idb

how to reproduce

Open an idb, then close, final reopen.
now "IPython Console" stdout is broken:
Snipaste_2022-07-27_18-15-16

why

when idb open, plugin will load; when idb close, plugin will unload if not have no idaapi.PLUGIN_FIX property.
but IDAPython will not unload, and Python have module cache
I guess the code to hook stdout in ipython will not call again when reopen, because of module cache.

how to fix

The easiest way is set IPyIDAPlugIn.flags = idaapi.PLUGIN_FIX. It will making ipyida would not unload when idb closed.
And it also can help to solve my ida plugin's bug(it's need hook stdout too, and have to set idaapi.PLUGIN_FIX): Cirn09/idavscode#2
PS: I try modify kernel.py:

...

class IPythonKernel(object):
    ...
    def start(self):
        self._ida_stdout = sys.stdout
        self._ida_stderr = sys.stderr
        ...
    
    def stop(self):
        ...
        sys.stdout = self._ida_stdout
        sys.stderr = self._ida_stderr
    ...

it can also fix this bug, I don't know why...

Unfocused widget fix

Focus is lost when the ipyida widget is created or hotkey is pressed with existing widget.
Tested on Linux platform with IDA 7.3/IDA 7.4 (Python 3.7)

There is a dirty solution to focus on text area:

diff --git a/ipyida/ida_plugin.py b/ipyida/ida_plugin.py
index 19ca64e..4bccde7 100644
--- a/ipyida/ida_plugin.py
+++ b/ipyida/ida_plugin.py
@@ -29,6 +29,7 @@ class IPyIDAPlugIn(idaapi.plugin_t):
         if self.widget is None:
             self.widget = ida_qtconsole.IPythonConsole(self.kernel.connection_file)
         self.widget.Show()
+        self.widget.ipython_widget.children()[2].setFocus()
 
     def term(self):
         if self.widget:

Upgrade ipykernel to version 5

Using ipykernel >= 5, the kernel dies after a few commands for some reason and the console displays the following error:

ERROR: execution aborted

Installer fails on Linux

Installer stacktrace

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md5
ERROR:root:code for hash sha1 was not found.
Traceback (most recent call last):
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha1
ERROR:root:code for hash sha224 was not found.
Traceback (most recent call last):
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha224
ERROR:root:code for hash sha256 was not found.
Traceback (most recent call last):
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha256
ERROR:root:code for hash sha384 was not found.
Traceback (most recent call last):
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha384
ERROR:root:code for hash sha512 was not found.
Traceback (most recent call last):
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/home/olivier/opt/ida/python/lib/python27.zip/hashlib.py", line 97, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha512
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/olivier/opt/ida/python/lib/python27.zip/urllib2.py", line 154, in urlopen
  File "/home/olivier/opt/ida/python/lib/python27.zip/urllib2.py", line 431, in open
  File "/home/olivier/opt/ida/python/lib/python27.zip/urllib2.py", line 454, in _open
  File "/home/olivier/opt/ida/python/lib/python27.zip/urllib2.py", line 409, in _call_chain
  File "/home/olivier/opt/ida/python/lib/python27.zip/urllib2.py", line 1265, in unknown_open
urllib2.URLError: <urlopen error unknown url type: https>

urllib2 needs hashlib with md5 (most likely to verify certs) and IDA's python on Linux doesn't seem to provide it.

Anyway IDA's python is very crippled so documentation about using a virtualenv for IDA would be good. I'll see if I can contribute docs to get ananconda's 32-bit python built in a virtualenv for IDA today.

ida-7.1 crashing when loading ipyida plugin

After updating from ida-7.0sp1 to ida-7.1, IPyIDA makes IDA to crash.

IDA segfault both when ipyida.ida_plugin.load() is launched from idapythonrc.py and manually in the python shell. Note that it seems to work when copy-pasting ida_plugin.py in the plugins directory of IDA.

I think it might have something to do with the Qt5 version used but I am not sure.

Does it also occurs for you ?
(I am using Debian testing)

Old connections are not closed, when IPython Console window is closed

The connections from the console window to the kernel are not closed when the IDA window is closed. This can lead to IDA crashing once the console is closed and opened enough times, since there are too many files open.

Relatively easy to fix, just need change OnClose in ida_qtconsole.py to this:

    def OnClose(self, form):
        try:
            self.kernel_client.stop_channels() # this is changed from pass
        except:
            import traceback
            print(traceback.format_exc())

Using IDA 6.9 with Homebrew Python 2.7.11

Upon running the exec script I get the following error:

[+] Installing pip
Traceback (most recent call last):
File "", line 2, in
File "", line 43, in
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 702, in init
errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1136, in _get_handles
c2pwrite = stdout.fileno()
AttributeError: IDAPythonStdOut instance has no attribute 'fileno'

I've turned off App nap as per read me for both idaq and idaq64

exception when run in idat

Exception ignored in: <function BaseEventLoop.__del__ at 0x000002DD8152CE50>
Traceback (most recent call last):
  File "C:\Portable Program\Python310\Lib\asyncio\base_events.py", line 684, in __del__
    if not self.is_closed():
  File "C:\Portable Program\Python310\Lib\asyncio\base_events.py", line 681, in is_closed
    return self._closed
AttributeError: 'QIOCPEventLoop' object has no attribute '_closed'
C:\Users\Cirn09\AppData\Roaming\Hex-Rays\IDA Pro\plugins\ipyida_plugin_stub.py: No QApplication has been instantiated
Traceback (most recent call last):
  File "C:\Portable Program\IDA Pro 7.7\python\3\ida_idaapi.py", line 580, in IDAPython_ExecScript
    exec(code, g)
  File "C:/Users/Cirn09/AppData/Roaming/Hex-Rays/IDA Pro/plugins/ipyida_plugin_stub.py", line 11, in <module>
    from ipyida.ida_plugin import PLUGIN_ENTRY, IPyIDAPlugIn
  File "C:\Portable Program\Python310\lib\site-packages\ipyida\ida_plugin.py", line 59, in <module>
    _setup_asyncio_event_loop()
  File "C:\Portable Program\Python310\lib\site-packages\ipyida\ida_plugin.py", line 55, in _setup_asyncio_event_loop
    loop = qasync.QEventLoop(qapp, already_running=True)
  File "C:\Portable Program\Python310\lib\site-packages\qasync\__init__.py", line 336, in __init__
    assert self.__app is not None, "No QApplication has been instantiated"
AssertionError: No QApplication has been instantiated

idat is running in terminal without GUI.
We should find a way to check is ida or idat!

spyder-kernels support

This is great but it would be even greater if it supported using a spyder-kernels Python kernel too in order to be able to benefit from Spyder's variable explorer while debugging.
Would that be doable? any pointers for me to try to dig into it and see how much of a hassle it would be to get it working?

Not compatible with latest qtconsole

After installation, the plugin could not be loaded:

│[WARN] Could not load IPyIDA plugin. ipyida Python package doesn't seem to be installed.

Commented out the try/catch block I could see the root cause is that qtconsole has removed qtconsole.qt_loaders submodule, which caused the ImportError.

Temporary workaround:
pip install qtconsole==4.3

The idapythonrc.py script fails to import idaapi, idc and idautils

My script idapythonrc.py is located in my C: \ Users \ xxxx \ AppData \ Roaming \ Hex-Rays \ IDA Pro folder.

I tried uncommenting, commenting out the lines, but the files don't import.

I added the dark mode code to the file and the console correctly boots to black (That means the file is located correctly and has loaded fine)

import qtconsole.styles
import ipyida.ida_qtconsole
ipyida.ida_qtconsole.set_widget_options(dict(
style_sheet = qtconsole.styles.default_dark_style_sheet,
syntax_style = qtconsole.styles.default_dark_syntax_style
))

But the part of the script to import idaapi, idc and idautils has no effect and does not import the necessary files.

from idaapi import *
from idc import *
from idautils import *

They can be imported manually only

Add support for IDA 7.4 & Python 3

Loading the plugin in IDA 7.4 Python 3 requires some minor tweaking:

  1. Run 2to3
  2. Add a None check to https://github.com/eset/ipyida/blob/master/ipyida/kernel.py#L29 as sys.__stdout__ is None for some reason.

Once done, the plugin loads and runs. However, it completely fails whenever any exception is thrown:

Jupyter QtConsole 4.5.1
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help.

few
ERROR:root:Internal Python error in the inspect module.
Below is the traceback from this internal error.

Traceback (most recent call last):
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\interactiveshell.py", line 3325, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-1-6e4eba6e7240>", line 1, in <module>
    few
NameError: name 'few' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\interactiveshell.py", line 2039, in showtraceback
    stb = value._render_traceback_()
AttributeError: 'NameError' object has no attribute '_render_traceback_'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\ultratb.py", line 1101, in get_records
    return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\ultratb.py", line 319, in wrapped
    return f(*args, **kwargs)
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\ultratb.py", line 353, in _fixed_getinnerframes
    records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\Lib\inspect.py", line 1502, in getinnerframes
    frameinfo = (tb.tb_frame,) + getframeinfo(tb, context)
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\Lib\inspect.py", line 1460, in getframeinfo
    filename = getsourcefile(frame) or getfile(frame)
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\Lib\inspect.py", line 696, in getsourcefile
    if getattr(getmodule(object, filename), '__loader__', None) is not None:
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\Lib\inspect.py", line 739, in getmodule
    f = getabsfile(module)
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\Lib\inspect.py", line 708, in getabsfile
    _filename = getsourcefile(object) or getfile(object)
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\Lib\inspect.py", line 684, in getsourcefile
    filename = getfile(object)
  File "C:\Users\tamir.bahar\AppData\Local\Programs\Python\Python37\Lib\inspect.py", line 647, in getfile
    raise TypeError('{!r} is a built-in module'.format(object))
TypeError: <module '__plugins__plugin_loader' from ''> is a built-in module
---------------------------------------------------------------------------

Note that __plugins__plugin_loader is the name of my plugin loader (plugin_loader). If this is used without the plugin loader - the result is the same, but a different module name appears.

I believe this should probably be fixed in IPython, but thought it important to report here as well.

Installation fail in MacOS IDA 7.2

Installation fail with the following error in IDA 7.2 for MacOS 10.14:

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 431, in open
    response = self._open(req, data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 449, in _open
    '_open', req)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1240, in https_open
    context=self._context)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1197, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno -536870212] Unknown error: -536870212>
Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 431, in open
    response = self._open(req, data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 449, in _open
    '_open', req)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1240, in https_open
    context=self._context)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1197, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno -536870212] Unknown error: -536870212>

It fails in IDA64. Therefore, I recommend mentioning to run the installation script in ida32. While running it in ida32 solve the urllib issue, apparently pip installation fail:

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
[+] Installing pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl (1.3MB)
Collecting wheel
  Downloading https://files.pythonhosted.org/packages/ff/47/1dfa4795e24fd6f93d5d58602dd716c3f101cfd5a77cd9acbe519b44a0a9/wheel-0.32.3-py2.py3-none-any.whl
Installing collected packages: pip, wheel
[-] Could not install pip.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 72, in <module>
ImportError: No module named pip

This issue caused because there is no pip already installed my mac, after installing pip this issue also got solved, however I got third error after installing pip in mac:

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
[+] Using already installed pip (version 18.1)
Collecting ipyida
  Using cached https://files.pythonhosted.org/packages/91/8d/67ae354e7780fe9004bfac6dddc3cb530588506f41d5face04a420cf84ec/ipyida-1.3-py2-none-any.whl
Collecting qtconsole>=4.3 (from ipyida)
  Downloading https://files.pythonhosted.org/packages/e0/7a/8aefbc0ed078dec7951ac9a06dcd1869243ecd7bcbce26fa47bf5e469a8f/qtconsole-4.4.3-py2.py3-none-any.whl (113kB)
Collecting ipykernel>=4.6 (from ipyida)
  Downloading https://files.pythonhosted.org/packages/00/47/764e4fa1b1b89598426b8d79b1c4fbe8042432621b0f8e1991aeb3c24806/ipykernel-4.10.0-py2-none-any.whl (110kB)
Collecting pygments (from qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/13/e5/6d710c9cf96c31ac82657bcfb441df328b22df8564d58d0c4cd62612674c/Pygments-2.3.1-py2.py3-none-any.whl (849kB)
Collecting ipython-genutils (from qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/fa/bc/9bd3b5c2b4774d5f33b2d544f1460be9df7df2fe42f352135381c347c69a/ipython_genutils-0.2.0-py2.py3-none-any.whl
Collecting jupyter-client>=4.1 (from qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/3b/c3/3043fe9ffd140d03c9d091a056794ccdc427c56ec19b8eea74f9ea0a498f/jupyter_client-5.2.4-py2.py3-none-any.whl (89kB)
Collecting jupyter-core (from qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/1d/44/065d2d7bae7bebc06f1dd70d23c36da8c50c0f08b4236716743d706762a8/jupyter_core-4.4.0-py2.py3-none-any.whl (126kB)
Collecting traitlets (from qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/93/d6/abcb22de61d78e2fc3959c964628a5771e47e7cc60d53e9342e21ed6cc9a/traitlets-4.3.2-py2.py3-none-any.whl (74kB)
Collecting ipython>=4.0.0 (from ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/b0/88/d996ab8be22cea1eaa18baee3678a11265e18cf09974728d683c51102148/ipython-5.8.0-py2-none-any.whl (760kB)
Collecting tornado>=4.0 (from ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/e6/78/6e7b5af12c12bdf38ca9bfe863fcaf53dc10430a312d0324e76c1e5ca426/tornado-5.1.1.tar.gz (516kB)
Collecting pyzmq>=13 (from jupyter-client>=4.1->qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/e5/28/63a6d14e8ccd224f1faa9df2144fde5bb130dda086eaabb288b2919dcd10/pyzmq-17.1.2-cp27-cp27m-macosx_10_6_intel.whl (1.3MB)
Collecting python-dateutil>=2.1 (from jupyter-client>=4.1->qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/74/68/d87d9b36af36f44254a8d512cbfc48369103a3b9e474be9bdfe536abfc45/python_dateutil-2.7.5-py2.py3-none-any.whl (225kB)
Requirement already satisfied, skipping upgrade: six in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from traitlets->qtconsole>=4.3->ipyida) (1.4.1)
Collecting enum34; python_version == "2.7" (from traitlets->qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/c5/db/e56e6b4bbac7c4a06de1c50de6fe1ef3810018ae11732a50f15f62c7d050/enum34-1.1.6-py2-none-any.whl
Collecting decorator (from traitlets->qtconsole>=4.3->ipyida)
  Downloading https://files.pythonhosted.org/packages/bc/bb/a24838832ba35baf52f32ab1a49b906b5f82fb7c76b2f6a7e35e140bac30/decorator-4.3.0-py2.py3-none-any.whl
Collecting simplegeneric>0.8 (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip
Collecting backports.shutil-get-terminal-size; python_version == "2.7" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/7d/cd/1750d6c35fe86d35f8562091737907f234b78fdffab42b29c72b1dd861f4/backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl
Collecting pexpect; sys_platform != "win32" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/89/e6/b5a1de8b0cc4e07ca1b305a4fcc3f9806025c1b651ea302646341222f88b/pexpect-4.6.0-py2.py3-none-any.whl (57kB)
Collecting prompt-toolkit<2.0.0,>=1.0.4 (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/d1/b0/1a6c262da35c779dd79550137aa7c298a424987240a28792ec5ccf48f848/prompt_toolkit-1.0.15-py2-none-any.whl (247kB)
Requirement already satisfied, skipping upgrade: setuptools>=18.5 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (18.5)
Collecting pickleshare (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl
Collecting appnope; sys_platform == "darwin" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/87/a9/7985e6a53402f294c8f0e8eff3151a83f1fb901fa92909bb3ff29b4d22af/appnope-0.1.0-py2.py3-none-any.whl
Collecting pathlib2; python_version == "2.7" or python_version == "3.3" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/2a/46/c696dcf1c7aad917b39b875acdc5451975e3a9b4890dca8329983201c97a/pathlib2-2.3.3-py2.py3-none-any.whl
Collecting futures (from tornado>=4.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/2d/99/b2c4e9d5a30f6471e410a146232b4118e697fa3ffc06d6a65efde84debd0/futures-3.2.0-py2-none-any.whl
Collecting singledispatch (from tornado>=4.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/c5/10/369f50bcd4621b263927b0a1519987a04383d4a98fb10438042ad410cf88/singledispatch-3.4.0.3-py2.py3-none-any.whl
Collecting backports_abc>=0.4 (from tornado>=4.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/7d/56/6f3ac1b816d0cd8994e83d0c4e55bc64567532f7dc543378bd87f81cebc7/backports_abc-0.5-py2.py3-none-any.whl
Collecting ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/d1/29/605c2cc68a9992d18dada28206eeada56ea4bd07a239669da41674648b6f/ptyprocess-0.6.0-py2.py3-none-any.whl
Collecting wcwidth (from prompt-toolkit<2.0.0,>=1.0.4->ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/7e/9f/526a6947247599b084ee5232e4f9190a38f398d7300d866af3ab571a5bfe/wcwidth-0.1.7-py2.py3-none-any.whl
Collecting scandir; python_version < "3.5" (from pathlib2; python_version == "2.7" or python_version == "3.3"->ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Downloading https://files.pythonhosted.org/packages/16/2a/557af1181e6b4e30254d5a6163b18f5053791ca66e251e77ab08887e8fe3/scandir-1.9.0.tar.gz
Installing collected packages: pygments, ipython-genutils, enum34, decorator, traitlets, pyzmq, python-dateutil, futures, singledispatch, backports-abc, tornado, jupyter-core, jupyter-client, simplegeneric, backports.shutil-get-terminal-size, ptyprocess, pexpect, wcwidth, prompt-toolkit, scandir, pathlib2, pickleshare, appnope, ipython, ipykernel, qtconsole, ipyida
[.] ipyida system-wide package installation failed, trying user install
Collecting ipyida
  Using cached https://files.pythonhosted.org/packages/91/8d/67ae354e7780fe9004bfac6dddc3cb530588506f41d5face04a420cf84ec/ipyida-1.3-py2-none-any.whl
Collecting qtconsole>=4.3 (from ipyida)
  Using cached https://files.pythonhosted.org/packages/e0/7a/8aefbc0ed078dec7951ac9a06dcd1869243ecd7bcbce26fa47bf5e469a8f/qtconsole-4.4.3-py2.py3-none-any.whl
Collecting ipykernel>=4.6 (from ipyida)
  Using cached https://files.pythonhosted.org/packages/00/47/764e4fa1b1b89598426b8d79b1c4fbe8042432621b0f8e1991aeb3c24806/ipykernel-4.10.0-py2-none-any.whl
Collecting pygments (from qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/13/e5/6d710c9cf96c31ac82657bcfb441df328b22df8564d58d0c4cd62612674c/Pygments-2.3.1-py2.py3-none-any.whl
Collecting ipython-genutils (from qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/fa/bc/9bd3b5c2b4774d5f33b2d544f1460be9df7df2fe42f352135381c347c69a/ipython_genutils-0.2.0-py2.py3-none-any.whl
Collecting jupyter-client>=4.1 (from qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/3b/c3/3043fe9ffd140d03c9d091a056794ccdc427c56ec19b8eea74f9ea0a498f/jupyter_client-5.2.4-py2.py3-none-any.whl
Collecting jupyter-core (from qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/1d/44/065d2d7bae7bebc06f1dd70d23c36da8c50c0f08b4236716743d706762a8/jupyter_core-4.4.0-py2.py3-none-any.whl
Collecting traitlets (from qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/93/d6/abcb22de61d78e2fc3959c964628a5771e47e7cc60d53e9342e21ed6cc9a/traitlets-4.3.2-py2.py3-none-any.whl
Collecting ipython>=4.0.0 (from ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/b0/88/d996ab8be22cea1eaa18baee3678a11265e18cf09974728d683c51102148/ipython-5.8.0-py2-none-any.whl
Collecting tornado>=4.0 (from ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/e6/78/6e7b5af12c12bdf38ca9bfe863fcaf53dc10430a312d0324e76c1e5ca426/tornado-5.1.1.tar.gz
Collecting pyzmq>=13 (from jupyter-client>=4.1->qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/e5/28/63a6d14e8ccd224f1faa9df2144fde5bb130dda086eaabb288b2919dcd10/pyzmq-17.1.2-cp27-cp27m-macosx_10_6_intel.whl
Collecting python-dateutil>=2.1 (from jupyter-client>=4.1->qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/74/68/d87d9b36af36f44254a8d512cbfc48369103a3b9e474be9bdfe536abfc45/python_dateutil-2.7.5-py2.py3-none-any.whl
Requirement already satisfied, skipping upgrade: six in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from traitlets->qtconsole>=4.3->ipyida) (1.4.1)
Collecting enum34; python_version == "2.7" (from traitlets->qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/c5/db/e56e6b4bbac7c4a06de1c50de6fe1ef3810018ae11732a50f15f62c7d050/enum34-1.1.6-py2-none-any.whl
Collecting decorator (from traitlets->qtconsole>=4.3->ipyida)
  Using cached https://files.pythonhosted.org/packages/bc/bb/a24838832ba35baf52f32ab1a49b906b5f82fb7c76b2f6a7e35e140bac30/decorator-4.3.0-py2.py3-none-any.whl
Collecting simplegeneric>0.8 (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip
Collecting backports.shutil-get-terminal-size; python_version == "2.7" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/7d/cd/1750d6c35fe86d35f8562091737907f234b78fdffab42b29c72b1dd861f4/backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl
Collecting pexpect; sys_platform != "win32" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/89/e6/b5a1de8b0cc4e07ca1b305a4fcc3f9806025c1b651ea302646341222f88b/pexpect-4.6.0-py2.py3-none-any.whl
Collecting prompt-toolkit<2.0.0,>=1.0.4 (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/d1/b0/1a6c262da35c779dd79550137aa7c298a424987240a28792ec5ccf48f848/prompt_toolkit-1.0.15-py2-none-any.whl
Requirement already satisfied, skipping upgrade: setuptools>=18.5 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (18.5)
Collecting pickleshare (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl
Collecting appnope; sys_platform == "darwin" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/87/a9/7985e6a53402f294c8f0e8eff3151a83f1fb901fa92909bb3ff29b4d22af/appnope-0.1.0-py2.py3-none-any.whl
Collecting pathlib2; python_version == "2.7" or python_version == "3.3" (from ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/2a/46/c696dcf1c7aad917b39b875acdc5451975e3a9b4890dca8329983201c97a/pathlib2-2.3.3-py2.py3-none-any.whl
Collecting futures (from tornado>=4.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/2d/99/b2c4e9d5a30f6471e410a146232b4118e697fa3ffc06d6a65efde84debd0/futures-3.2.0-py2-none-any.whl
Collecting singledispatch (from tornado>=4.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/c5/10/369f50bcd4621b263927b0a1519987a04383d4a98fb10438042ad410cf88/singledispatch-3.4.0.3-py2.py3-none-any.whl
Collecting backports_abc>=0.4 (from tornado>=4.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/7d/56/6f3ac1b816d0cd8994e83d0c4e55bc64567532f7dc543378bd87f81cebc7/backports_abc-0.5-py2.py3-none-any.whl
Collecting ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/d1/29/605c2cc68a9992d18dada28206eeada56ea4bd07a239669da41674648b6f/ptyprocess-0.6.0-py2.py3-none-any.whl
Collecting wcwidth (from prompt-toolkit<2.0.0,>=1.0.4->ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/7e/9f/526a6947247599b084ee5232e4f9190a38f398d7300d866af3ab571a5bfe/wcwidth-0.1.7-py2.py3-none-any.whl
Collecting scandir; python_version < "3.5" (from pathlib2; python_version == "2.7" or python_version == "3.3"->ipython>=4.0.0->ipykernel>=4.6->ipyida)
  Using cached https://files.pythonhosted.org/packages/16/2a/557af1181e6b4e30254d5a6163b18f5053791ca66e251e77ab08887e8fe3/scandir-1.9.0.tar.gz
Installing collected packages: pygments, ipython-genutils, enum34, decorator, traitlets, pyzmq, python-dateutil, futures, singledispatch, backports-abc, tornado, jupyter-core, jupyter-client, simplegeneric, backports.shutil-get-terminal-size, ptyprocess, pexpect, wcwidth, prompt-toolkit, scandir, pathlib2, pickleshare, appnope, ipython, ipykernel, qtconsole, ipyida
  Running setup.py install for tornado: started
    Running setup.py install for tornado: finished with status 'done'
  Running setup.py install for simplegeneric: started
    Running setup.py install for simplegeneric: finished with status 'done'
  Running setup.py install for scandir: started
    Running setup.py install for scandir: finished with status 'done'
Successfully installed appnope-0.1.0 backports-abc-0.5 backports.shutil-get-terminal-size-1.0.0 decorator-4.3.0 enum34-1.1.6 futures-3.2.0 ipyida-1.3 ipykernel-4.10.0 ipython-5.8.0 ipython-genutils-0.2.0 jupyter-client-5.2.4 jupyter-core-4.4.0 pathlib2-2.3.3 pexpect-4.6.0 pickleshare-0.7.5 prompt-toolkit-1.0.15 ptyprocess-0.6.0 pygments-2.3.1 python-dateutil-2.7.5 pyzmq-17.1.2 qtconsole-4.4.3 scandir-1.9.0 simplegeneric-0.8.1 singledispatch-3.4.0.3 tornado-5.1.1 traitlets-4.3.2 wcwidth-0.1.7
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 119, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 1167, in resource_filename
    return get_provider(package_or_requirement).get_resource_filename(
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 442, in get_provider
    __import__(moduleOrReq)
ImportError: No module named ipyida

However, after a restart of IDA and rerunning the command the ipyida installs successfully:

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
[+] Using already installed pip (version 18.1)
Requirement already up-to-date: ipyida in /Users/unknown/Library/Python/2.7/lib/python/site-packages (1.3)
Requirement already satisfied, skipping upgrade: qtconsole>=4.3 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipyida) (4.4.3)
Requirement already satisfied, skipping upgrade: ipykernel>=4.6 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipyida) (4.10.0)
Requirement already satisfied, skipping upgrade: pygments in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from qtconsole>=4.3->ipyida) (2.3.1)
Requirement already satisfied, skipping upgrade: ipython-genutils in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from qtconsole>=4.3->ipyida) (0.2.0)
Requirement already satisfied, skipping upgrade: jupyter-client>=4.1 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from qtconsole>=4.3->ipyida) (5.2.4)
Requirement already satisfied, skipping upgrade: jupyter-core in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from qtconsole>=4.3->ipyida) (4.4.0)
Requirement already satisfied, skipping upgrade: traitlets in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from qtconsole>=4.3->ipyida) (4.3.2)
Requirement already satisfied, skipping upgrade: ipython>=4.0.0 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipykernel>=4.6->ipyida) (5.8.0)
Requirement already satisfied, skipping upgrade: tornado>=4.0 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipykernel>=4.6->ipyida) (5.1.1)
Requirement already satisfied, skipping upgrade: pyzmq>=13 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from jupyter-client>=4.1->qtconsole>=4.3->ipyida) (17.1.2)
Requirement already satisfied, skipping upgrade: python-dateutil>=2.1 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from jupyter-client>=4.1->qtconsole>=4.3->ipyida) (2.7.5)
Requirement already satisfied, skipping upgrade: six in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from traitlets->qtconsole>=4.3->ipyida) (1.4.1)
Requirement already satisfied, skipping upgrade: enum34; python_version == "2.7" in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from traitlets->qtconsole>=4.3->ipyida) (1.1.6)
Requirement already satisfied, skipping upgrade: decorator in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from traitlets->qtconsole>=4.3->ipyida) (4.3.0)
Requirement already satisfied, skipping upgrade: simplegeneric>0.8 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (0.8.1)
Requirement already satisfied, skipping upgrade: backports.shutil-get-terminal-size; python_version == "2.7" in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (1.0.0)
Requirement already satisfied, skipping upgrade: pexpect; sys_platform != "win32" in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (4.6.0)
Requirement already satisfied, skipping upgrade: prompt-toolkit<2.0.0,>=1.0.4 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (1.0.15)
Requirement already satisfied, skipping upgrade: setuptools>=18.5 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (18.5)
Requirement already satisfied, skipping upgrade: pickleshare in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (0.7.5)
Requirement already satisfied, skipping upgrade: appnope; sys_platform == "darwin" in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (0.1.0)
Requirement already satisfied, skipping upgrade: pathlib2; python_version == "2.7" or python_version == "3.3" in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from ipython>=4.0.0->ipykernel>=4.6->ipyida) (2.3.3)
Requirement already satisfied, skipping upgrade: futures in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from tornado>=4.0->ipykernel>=4.6->ipyida) (3.2.0)
Requirement already satisfied, skipping upgrade: singledispatch in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from tornado>=4.0->ipykernel>=4.6->ipyida) (3.4.0.3)
Requirement already satisfied, skipping upgrade: backports_abc>=0.4 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from tornado>=4.0->ipykernel>=4.6->ipyida) (0.5)
Requirement already satisfied, skipping upgrade: ptyprocess>=0.5 in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from pexpect; sys_platform != "win32"->ipython>=4.0.0->ipykernel>=4.6->ipyida) (0.6.0)
Requirement already satisfied, skipping upgrade: wcwidth in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython>=4.0.0->ipykernel>=4.6->ipyida) (0.1.7)
Requirement already satisfied, skipping upgrade: scandir; python_version < "3.5" in /Users/unknown/Library/Python/2.7/lib/python/site-packages (from pathlib2; python_version == "2.7" or python_version == "3.3"->ipython>=4.0.0->ipykernel>=4.6->ipyida) (1.9.0)
[+] ipyida.py added to user plugins
[WARN] Could not load IPyIDA plugin. ipyida Python package doesn't seem to be installed.
/Users/unknown/.idapro/plugins/ipyida.py: undefined function __plugins__ipyida.PLUGIN_ENTRY
[🍺] IPyIDA Installation successful. Use <Shift+.> to open the console.

another restart of the ida and upon entry I get following error:

[WARN] Could not load IPyIDA plugin. ipyida Python package doesn't seem to be installed.
/Users/unknown/.idapro/plugins/ipyida.py: undefined function __plugins__ipyida.PLUGIN_ENTRY

IDA 6.8 Win7x64 Installer Error

Python>import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()
[+] Using already installed pip (version 7.0.1)
Traceback (most recent call last):
File "", line 1, in
File "", line 52, in
File "C:\Python27\lib\site-packages\pip__init__.py", line 217, in main
return command.main(cmd_args)
File "C:\Python27\lib\site-packages\pip\basecommand.py", line 185, in main
for name in ["pip._vendor", "distlib", "requests", "urllib3"]
File "C:\Python27\Lib\logging\config.py", line 803, in dictConfig
dictConfigClass(config).configure()
File "C:\Python27\Lib\logging\config.py", line 585, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'console': IDAPythonStdOut instance has no attribute 'closed'

IDAPythonStdOut Error on Mac

Hello, sorry for disturbing.

I met a problem which seems a little like #3 which should be fixed before. Could you please to have a look about my issue? Thanks.

Below is my environment info and the callstack.

CPU: Intel
OS: Mac OS 11.5
IDA Pro Version: 7.5
Python: Python 3.8.11 installed via pyenv install
Callstack:

/Applications/IDA Pro 7.5/ida64.app/Contents/MacOS/plugins/ipyida_plugin_stub.py: 'IDAPythonStdOut' object has no attribute 'fileno'
Traceback (most recent call last):
  File "/Applications/IDA Pro 7.5/ida64.app/Contents/MacOS/python/3/ida_idaapi.py", line 604, in IDAPython_ExecScript
    exec(code, g)
  File "/Applications/IDA Pro 7.5/ida64.app/Contents/MacOS/plugins/ipyida_plugin_stub.py", line 10, in <module>
    from ipyida.ida_plugin import PLUGIN_ENTRY, IPyIDAPlugIn
  File "/Users/xxx/.pyenv/versions/3.8.11/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipyida/ida_plugin.py", line 61, in <module>
    _kernel.start()
  File "/Users/xxx/.pyenv/versions/3.8.11/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipyida/kernel.py", line 87, in start
    app.initialize()
  File "/Users/xxx/.pyenv/versions/3.8.11/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/traitlets/config/application.py", line 87, in inner
    return method(app, *args, **kwargs)
  File "/Users/xxx/.pyenv/versions/3.8.11/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipykernel/kernelapp.py", line 629, in initialize
    self.init_io()
  File "/Users/xxx/.pyenv/versions/3.8.11/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipykernel/kernelapp.py", line 416, in init_io
    sys.stdout = outstream_factory(self.session, self.iopub_thread,
  File "/Users/xxx/.pyenv/versions/3.8.11/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipykernel/iostream.py", line 379, in __init__
    self._setup_stream_redirects(name)
  File "/Users/xxx/.pyenv/versions/3.8.11/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipykernel/iostream.py", line 397, in _setup_stream_redirects
    fno = getattr(sys, name).fileno()
AttributeError: 'IDAPythonStdOut' object has no attribute 'fileno'

Installation fails with Python 3.9.7 on Windows

Installation fails with Python 3.9.7 in IDA Pro 7.6 on Windows:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 95, in <module>
  File "<string>", line 92, in pip_install
  File "C:\Users\luca\AppData\Local\Programs\Python\Python39\Lib\contextlib.py", line 126, in __exit__
    next(self.gen)
  File "<string>", line 49, in temp_file_as_stdout
  File "C:\Users\luca\AppData\Local\Programs\Python\Python39\lib\site-packages\ipyida\kernel.py", line 73, in write
    super(self.__class__, self).write(string)
  File "C:\Users\luca\AppData\Local\Programs\Python\Python39\lib\site-packages\ipykernel\iostream.py", line 511, in write
    raise TypeError(
TypeError: write() argument must be str, not <class 'bytes'>
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<string>", line 95, in <module>
  File "<string>", line 92, in pip_install
  File "C:\Users\luca\AppData\Local\Programs\Python\Python39\Lib\contextlib.py", line 126, in __exit__
    next(self.gen)
  File "<string>", line 49, in temp_file_as_stdout
  File "C:\Users\luca\AppData\Local\Programs\Python\Python39\lib\site-packages\ipyida\kernel.py", line 73, in write
    super(self.__class__, self).write(string)
  File "C:\Users\luca\AppData\Local\Programs\Python\Python39\lib\site-packages\ipykernel\iostream.py", line 511, in write
    raise TypeError(
TypeError: write() argument must be str, not <class 'bytes'>
Python>print(sys.version_info)
sys.version_info(major=3, minor=9, micro=7, releaselevel='final', serial=0)

Installing it manually yields this error:

ipyida_plugin_stub.py: PLUGIN_ENTRY was not defined or the class name 'IPyIDAPlugIn' was already used in 'ipyida.py'

NotImplementedError on win32

C:\Portable Program\IDA Pro 7.5\plugins\ipyida_plugin_stub.py: 
Traceback (most recent call last):
  File "C:\Portable Program\IDA Pro 7.5\python\3\ida_idaapi.py", line 616, in IDAPython_ExecScript
    exec(code, g)
  File "C:/Portable Program/IDA Pro 7.5/plugins/ipyida_plugin_stub.py", line 11, in <module>
    from ipyida.ida_plugin import PLUGIN_ENTRY, IPyIDAPlugIn
  File "C:\Portable Program\Python38\lib\site-packages\ipyida\ida_plugin.py", line 62, in <module>
    _kernel.start()
  File "C:\Portable Program\Python38\lib\site-packages\ipyida\kernel.py", line 113, in start
    app.initialize()
  File "C:\Portable Program\Python38\lib\site-packages\traitlets\config\application.py", line 86, in inner
    return method(app, *args, **kwargs)
  File "C:\Portable Program\Python38\lib\site-packages\ipykernel\kernelapp.py", line 469, in initialize
    self.init_sockets()
  File "C:\Portable Program\Python38\lib\site-packages\ipykernel\kernelapp.py", line 260, in init_sockets
    self.init_iopub(context)
  File "C:\Portable Program\Python38\lib\site-packages\ipykernel\kernelapp.py", line 268, in init_iopub
    self.iopub_thread = IOPubThread(self.iopub_socket, pipe=True)
  File "C:\Portable Program\Python38\lib\site-packages\ipykernel\iostream.py", line 68, in __init__
    self._setup_pipe_in()
  File "C:\Portable Program\Python38\lib\site-packages\ipykernel\iostream.py", line 141, in _setup_pipe_in
    self._pipe_in = ZMQStream(pipe_in, self.io_loop)
  File "C:\Portable Program\Python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 127, in __init__
    self._init_io_state()
  File "C:\Portable Program\Python38\lib\site-packages\zmq\eventloop\zmqstream.py", line 552, in _init_io_state
    self.io_loop.add_handler(self.socket, self._handle_events, self.io_loop.READ)
  File "C:\Portable Program\Python38\lib\site-packages\tornado\platform\asyncio.py", line 100, in add_handler
    self.asyncio_loop.add_reader(fd, self._handle_events, fd, IOLoop.READ)
  File "C:\Portable Program\Python38\Lib\asyncio\events.py", line 501, in add_reader
    raise NotImplementedError
NotImplementedError

easy to fix, just add little code to ipyida_plugin_stub.py:

import sys
import asyncio
if sys.platform == 'win32':
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

IDA freezes when trying "open_notebook"

When trying to open a notebook with open_notebook, IDA freezes for some reason. I installed ipyida via import urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()) and everything seemed to work fine. I tried with different Python versions via idapyswitch but no success.

OS: macOS Venture 13.1
Python: /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/Python3
IDA: IDA Pro Version 8.2.221216 macOS arm64

Any idea how to debug or what the problem could be?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.