achillean / shodan-python

The official Python library for Shodan
https://developer.shodan.io
Other
2.47k stars 552 forks source link

Shodan radar exception on windows machines with curses missing. #206

Open L1-0 opened 9 months ago

L1-0 commented 9 months ago

Hi!

I'm getting the following error when trying to execute shodan radar on a windows machine after installing the latest shodan package via pip:

PS C:\Windows\system32> shodan radar
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Scripts\shodan.exe\__main__.py", line 7, in <module>
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\shodan\__main__.py", line 932, in radar
    from shodan.cli.worldmap import launch_map
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\shodan\cli\worldmap.py", line 15, in <module>
    import curses
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\curses\__init__.py", line 13, in <module>
    from _curses import *
ModuleNotFoundError: No module named '_curses' 

After executing pip install windows-curses, the error goes away. Thus i would propose a check for windows systems for this module as a solution or handle the exception and show this as a solution.

PS C:\Windows\system32> shodan version
1.30.1

Greetings

rmhowe425 commented 7 months ago

@achillean Per the official Python documentation:

"The Windows version of Python doesn’t include the curses module. A ported version called UniCurses is available."

Do we want to file a PR to update requirements.txt to import curses for windows based on platform? - i.e: https://stackoverflow.com/questions/29222269/is-there-a-way-to-have-a-conditional-requirements-txt-file-for-my-python-applica