microsoft / ics-forensics-tools

Microsoft ICSpector (ICS Forensics Tools framework) is an open-source forensics framework that enables the analysis of Industrial PLC metadata and project files.
MIT License
311 stars 31 forks source link

ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject #10

Open ffreeez opened 2 months ago

ffreeez commented 2 months ago

When I'm following the user guide to install the ics-tools in my python virtual environment under VSCode, I found these errors.

Here is my installation:

git clone https://github.com/microsoft/ics-forensics-tools.git
./.venv/bin/python -m pip install -r requirements.txt
./.venv/bin/python ./src/driver.py

Python Version: Python 3.12.3 (main, Apr 10 2024, 05:33:47) [GCC 13.2.0] on linux

Linux Kernal Info

(.venv) freeez@Lenovo:~/ics-forensics-tools$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04 LTS
Release:        24.04
Codename:       noble
(.venv) freeez@Lenovo:~/ics-forensics-tools$ uname -a
Linux Lenovo 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
(.venv) freeez@Lenovo:~/ics-forensics-tools$
(.venv) freeez@Lenovo:~/ics-forensics-tools$ python ./src/driver.py 
Traceback (most recent call last):
  File "/home/freeez/ics-forensics-tools/./src/driver.py", line 1, in <module>
    from forensic.client.forensic_cli import ForensicCLI
  File "/home/freeez/ics-forensics-tools/src/forensic/__init__.py", line 1, in <module>
    import forensic.plugins
  File "/home/freeez/ics-forensics-tools/src/forensic/plugins/__init__.py", line 1, in <module>
    from forensic.plugins.s7.s7 import S7
  File "/home/freeez/ics-forensics-tools/src/forensic/plugins/s7/s7.py", line 8, in <module>
    from forensic.interfaces.plugin import PluginInterface, PluginConfig, PluginCLI
  File "/home/freeez/ics-forensics-tools/src/forensic/interfaces/plugin.py", line 8, in <module>
    from forensic.scanner.discover import Discover
  File "/home/freeez/ics-forensics-tools/src/forensic/scanner/discover.py", line 2, in <module>
    import pandas as pd
  File "/home/freeez/ics-forensics-tools/.venv/lib/python3.12/site-packages/pandas/__init__.py", line 22, in <module>
    from pandas.compat import is_numpy_dev as _is_numpy_dev  # pyright: ignore # noqa:F401
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/freeez/ics-forensics-tools/.venv/lib/python3.12/site-packages/pandas/compat/__init__.py", line 18, in <module>
    from pandas.compat.numpy import (
  File "/home/freeez/ics-forensics-tools/.venv/lib/python3.12/site-packages/pandas/compat/numpy/__init__.py", line 4, in <module>
    from pandas.util.version import Version
  File "/home/freeez/ics-forensics-tools/.venv/lib/python3.12/site-packages/pandas/util/__init__.py", line 2, in <module>
    from pandas.util._decorators import (  # noqa:F401
  File "/home/freeez/ics-forensics-tools/.venv/lib/python3.12/site-packages/pandas/util/_decorators.py", line 14, in <module>
    from pandas._libs.properties import cache_readonly
  File "/home/freeez/ics-forensics-tools/.venv/lib/python3.12/site-packages/pandas/_libs/__init__.py", line 13, in <module>
    from pandas._libs.interval import Interval
  File "pandas/_libs/interval.pyx", line 1, in init pandas._libs.interval
ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

Here's my python -m pip list result.

(.venv) freeez@Lenovo:~/ics-forensics-tools$ python -m pip list
Package                   Version
------------------------- -----------
altgraph                  0.17.4
attrs                     23.2.0
capstone                  5.0.0.post1
contourpy                 1.2.1
cycler                    0.12.1
fonttools                 4.53.0
hexdump                   3.3
iniconfig                 2.0.0
kiwisolver                1.4.5
matplotlib                3.6.1
netifaces                 0.11.0
networkx                  2.8.7
numpy                     2.0.0
packaging                 24.1
pandas                    1.5.0
pillow                    10.3.0
pip                       24.1.1
pluggy                    1.5.0
pycomm3                   1.2.14
pyinstaller               5.13.1
pyinstaller-hooks-contrib 2024.7
pyparsing                 3.1.2
pytest                    7.2.0
python-dateutil           2.9.0.post0
pytz                      2024.1
setuptools                70.1.1
six                       1.16.0
tenacity                  8.1.0

Can anyone help me with this? I will keep trying as well.

davidatch commented 1 month ago

Seems like numpy 2.0.0 has been installed on your system. I assume this version is not supported, could you please try to downgrade to numpy 1.26.4 or 1.26.0?