Python fullkezdő kérdés: modul importálás

Windows, python 3.6.7, felraktam a frida modul-t:

pip install frida-tools

Elvileg(!) felment, leellenőrizni mondjuk nem tudom hogy kellene, de látszólag sikeres volt az install.

Utána be akarnám tölteni ezt a modult:

C:\programok\Python\Python36>python.exe
Python 3.6.7 (v3.6.7:6ec5cf24b7, Oct 20 2018, 13:35:33) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import frida
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'frida'
>>>

Na itt áll meg a tudományom, hogy hova merre miért meddig. https://frida.re/docs/quickstart/ se részletezi agyon, mi lehet a gond.

Hozzászólások

Szerkesztve: 2020. 06. 29., h - 19:26

A tippem az, hogy nem ment fel a modul, csak azt gondolod rola.

Ha nyitsz egy terminalt, ott kiadod azt, hogy `pip install <csomag_neve>`, akkor az a csomag a global namespace-be fog telepulni. Ahhoz, hogy oda telepits, nehany rendszeren admin jog kell, Windows-on szerintem konfig kerdese. Ha adminisztrator modban inditod el a `cmd.exe`-t, akkor eselyesebb, hogy sikerulni fog a telepites, de inkabb azt javaslom, hogy a globalis namespace hasznalatot mellozzed, mert egy ido utan, --de legalabbis a kezdeti betanulasi szakaszod soran biztosan-- egy osszekutyult, atlathatatlan rendetlenseg lesz belole.

Ismerkedj meg a virtual environment ( https://docs.python.org/3.6/tutorial/venv.html ) fogalmaval, ami lehetove teszi azt, hogy izolalt kornyezeteket hozz letre, azokban telepits python csomagokat valamit azokon belul elinditsad a Python shell-t, ami csak azokat a modulokat fogja latni, amik abban a virtualenv-ben vannak telepitve.

Ha egy ilyen shell-ben telepitesz es inditasz Python, menni fog:

C:\Users\riverman>python -m venv hup

C:\Users\riverman>hup\Scripts\activate.bat

(hup) C:\Users\riverman>pip install frida-tools
Collecting frida-tools
  Downloading https://files.pythonhosted.org/packages/55/54/2574f8a4a5dd05e0334dc77df876df7335e7e5b31a4d222887efda5b767a/frida-tools-8.0.1.tar.gz (96kB)
     |████████████████████████████████| 102kB 1.3MB/s
Collecting colorama<1.0.0,>=0.2.7 (from frida-tools)
  Downloading https://files.pythonhosted.org/packages/c9/dc/45cdef1b4d119eb96316b3117e6d5708a08029992b2fee2c143c7a0a5cc5/colorama-0.4.3-py2.py3-none-any.whl
Collecting frida<13.0.0,>=12.10.4 (from frida-tools)
  Downloading https://files.pythonhosted.org/packages/91/da/8a0cf544e7d9a0d87be6d7d1600560ba67ad3843225299d06be878b9d752/frida-12.10.4.tar.gz
Collecting prompt-toolkit<4.0.0,>=2.0.0 (from frida-tools)
  Downloading https://files.pythonhosted.org/packages/e4/a7/81b39aa50e9284fe2cb21cc7fb7de7817b224172d42793fd57451d38842b/prompt_toolkit-3.0.5-py3-none-any.whl (351kB)
     |████████████████████████████████| 358kB 3.3MB/s
Collecting pygments<3.0.0,>=2.0.2 (from frida-tools)
  Downloading https://files.pythonhosted.org/packages/2d/68/106af3ae51daf807e9cdcba6a90e518954eb8b70341cee52995540a53ead/Pygments-2.6.1-py3-none-any.whl (914kB)
     |████████████████████████████████| 921kB 6.4MB/s
Collecting wcwidth (from prompt-toolkit<4.0.0,>=2.0.0->frida-tools)
  Downloading https://files.pythonhosted.org/packages/59/7c/e39aca596badaf1b78e8f547c807b04dae603a433d3e7a7e04d67f2ef3e5/wcwidth-0.2.5-py2.py3-none-any.whl
Installing collected packages: colorama, frida, wcwidth, prompt-toolkit, pygments, frida-tools
  Running setup.py install for frida ... done
  Running setup.py install for frida-tools ... done
Successfully installed colorama-0.4.3 frida-12.10.4 frida-tools-8.0.1 prompt-toolkit-3.0.5 pygments-2.6.1 wcwidth-0.2.5
WARNING: You are using pip version 19.2.3, however version 20.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

(hup) C:\Users\riverman>python
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import frida
>>>

Roses are red
Violets are blue
Unexpected '}' on line 32

fent van a kettes python is, es az ala tetted fel :)

“May have been the losing side. Still not convinced it was the wrong one.”

És tényleg! Volt fent egy Python 2.7, az alá pakolta be.

Hálistennek a Frida help nagyvonalúan csak "pip"-et írt, így mivel foglalmam sem volt róla h. ez számít (tényleg nem értek a Python-hoz, nem szégyellem bevallani), valóban rossz helyre rakta be.

A python3 könyvtár \scripts alól futtatva a pip-et (ami valóban ugyanaz mint a pip3 ugyanebben a könyvtárban), már jó helyre telepítette, és az import se dobott hibát.

Most ott állok, hogy beimportálta, de a következő sornál megint elhasal:

>>> devmgr = frida.get_device_manager()
>>> devmgr.add_remote_device('192.168.1.50')
Device(id="socket@192.168.1.50", name="192.168.1.50", type='remote')
>>> rdev = frida.get_device('tcp@192.168.1.50')

--> ennél az utolsónál kapok hibát:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\programok\Python\Python36\lib\site-packages\frida\__init__.py", line 86, in get_device
    return get_device_manager().get_device(id, timeout, **kwargs)
  File "C:\programok\Python\Python36\lib\site-packages\frida\core.py", line 48, in get_device
    return self.get_device_matching(lambda d: d.id == id, timeout, **kwargs)
  File "C:\programok\Python\Python36\lib\site-packages\frida\core.py", line 26, in wrapper
    return f(*args, **kwargs)
  File "C:\programok\Python\Python36\lib\site-packages\frida\core.py", line 58, in get_device_matching
    return Device(self._impl.get_device_matching(lambda d: predicate(Device(d)), raw_timeout))
frida.InvalidArgumentError: device not found
>>>

A telepitett csomagokat tobb modon is ellenorizheted:
 

pip list
python -m pip list

Ha a ketto nem ugyanazt a listat adja, akkor a pip es a python nem ugyanahhoz a telepiteshez tartozik.
Ha a pip install masik, akkor vagy azt atalitod, hogy a megfelelot futtassa, vagy:

python -m pip install frida-tools