trustedsec / social-engineer-toolkit

The Social-Engineer Toolkit (SET) repository from TrustedSec - All new versions of SET will be deployed here.
10.46k stars 2.69k forks source link

pycrypto no longer supported (especially in aarch64-linux-gnu-gcc) #1048

Open TheKaliHacks opened 6 months ago

TheKaliHacks commented 6 months ago

Expected Behaviour Requirement already satisfied

Actual Behaviour $ pip3 install -r requirements.txt Defaulting to user installation because normal site-packages is not writeable DEPRECATION: Loading egg at /usr/local/lib/python3.11/dist-packages/mitm6-0.3.0-py3.11.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at https://github.com/pypa/pip/issues/12330
Requirement already satisfied: pexpect in /usr/lib/python3/dist-packages (from -r requirements.txt (line 1)) (4.8.0)
Collecting pycrypto (from -r requirements.txt (line 2)) Using cached pycrypto-2.6.1.tar.gz (446 kB) ... Building wheels for collected packages: pycrypto Building wheel for pycrypto (setup.py) ... error error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully. │ exit code: 1 .... In file included from /usr/include/python3.11/Python.h:86, from src/_fastmath.c:31: /usr/include/python3.11/cpython/pytime.h:208:60: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration 208 | PyAPI_FUNC(int) _PyTime_FromTimespec(_PyTime_t tp, struct timespec ts); | ^~~~ /usr/include/python3.11/cpython/pytime.h:213:56: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration 213 | PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec ts); | ^~~~ /usr/include/python3.11/cpython/pytime.h:217:63: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration 217 | PyAPI_FUNC(void) _PyTime_AsTimespec_clamp(_PyTime_t t, struct timespec ts); | ^~~~ src/_fastmath.c:33:10: fatal error: longintrepr.h: No such file or directory 33 | #include / for conversions / | ^~~~~~~ compilation terminated. error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1 [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for pycrypto Running setup.py clean for pycrypto
Failed to build pycrypto ERROR: Could not build wheels for pycrypto, which is required to install pyproject.toml-based projects

Version pycrypto-2.6.1

Set in Kali Description: Kali GNU/Linux Rolling Release: 2023.4 Codename: kali-rolling

13ghost212 commented 6 months ago

Is there any solution to this

PythonCoderUnicorn commented 6 months ago

this is the closest open issue to the one i have run into while installing , i copied the commands for Linux and most of the setup is fine except for pycrypto build

Building wheels for collected packages: pycrypto
  Building wheel for pycrypto (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [71 lines of output]
      checking for gcc... gcc
      checking whether the C compiler works... yes
      checking for C compiler default output file name... a.out
      checking for suffix of executables...
      checking whether we are cross compiling... no
      checking for suffix of object files... o
      checking whether we are using the GNU C compiler... yes
      checking whether gcc accepts -g... yes
      checking for gcc option to accept ISO C89... none needed
      checking for __gmpz_init in -lgmp... yes
      checking for __gmpz_init in -lmpir... no
      checking whether mpz_powm is declared... yes
      checking whether mpz_powm_sec is declared... yes
      checking how to run the C preprocessor... gcc -E
      checking for grep that handles long lines and -e... /usr/bin/grep
      checking for egrep... /usr/bin/grep -E
      checking for ANSI C header files... yes
      checking for sys/types.h... yes
      checking for sys/stat.h... yes
      checking for stdlib.h... yes
      checking for string.h... yes
      checking for memory.h... yes
      checking for strings.h... yes
      checking for inttypes.h... yes
      checking for stdint.h... yes
      checking for unistd.h... yes
      checking for inttypes.h... (cached) yes
      checking limits.h usability... yes
      checking limits.h presence... yes
      checking for limits.h... yes
      checking stddef.h usability... yes
      checking stddef.h presence... yes
      checking for stddef.h... yes
      checking for stdint.h... (cached) yes
      checking for stdlib.h... (cached) yes
      checking for string.h... (cached) yes
      checking wchar.h usability... yes
      checking wchar.h presence... yes
      checking for wchar.h... yes
      checking for inline... inline
      checking for int16_t... yes
      checking for int32_t... yes
      checking for int64_t... yes
      checking for int8_t... yes
      checking for size_t... yes
      checking for uint16_t... yes
      checking for uint32_t... yes
      checking for uint64_t... yes
      checking for uint8_t... yes
      checking for stdlib.h... (cached) yes
      checking for GNU libc compatible malloc... yes
      checking for memmove... yes
      checking for memset... yes
      configure: creating ./config.status
      config.status: creating src/config.h
      In file included from /usr/include/python3.11/Python.h:86,
                       from src/_fastmath.c:31:
      /usr/include/python3.11/cpython/pytime.h:208:60: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        208 | PyAPI_FUNC(int) _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts);
            |                                                            ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:213:56: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        213 | PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts);
            |                                                        ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:217:63: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        217 | PyAPI_FUNC(void) _PyTime_AsTimespec_clamp(_PyTime_t t, struct timespec *ts);
            |                                                               ^~~~~~~~
      src/_fastmath.c:33:10: fatal error: longintrepr.h: No such file or directory
         33 | #include <longintrepr.h>                                /* for conversions */
            |          ^~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pycrypto
  Running setup.py clean for pycrypto                                                                  
Failed to build pycrypto
ERROR: Could not build wheels for pycrypto, which is required to install pyproject.toml-based projects
Command 'python' not found, did you mean:                                                              
  command 'python3' from deb python3
  command 'python' from deb python-is-python3

I have python3 on my VM.

EtudiantInformatique78 commented 1 month ago

I have an issue my pycrypto too.

error: subprocess-exited-with-error

  × Building wheel for pycrypto (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [71 lines of output]
      checking for gcc... gcc
      checking whether the C compiler works... yes
      checking for C compiler default output file name... a.out
      checking for suffix of executables...
      checking whether we are cross compiling... no
      checking for suffix of object files... o
      checking whether we are using the GNU C compiler... yes
      checking whether gcc accepts -g... yes
      checking for gcc option to accept ISO C89... none needed
      checking for __gmpz_init in -lgmp... yes
      checking for __gmpz_init in -lmpir... no
      checking whether mpz_powm is declared... yes
      checking whether mpz_powm_sec is declared... yes
      checking how to run the C preprocessor... gcc -E
      checking for grep that handles long lines and -e... /usr/bin/grep
      checking for egrep... /usr/bin/grep -E
      checking for ANSI C header files... yes
      checking for sys/types.h... yes
      checking for sys/stat.h... yes
      checking for stdlib.h... yes
      checking for string.h... yes
      checking for memory.h... yes
      checking for strings.h... yes
      checking for inttypes.h... yes
      checking for stdint.h... yes
      checking for unistd.h... yes
      checking for inttypes.h... (cached) yes
      checking limits.h usability... yes
      checking limits.h presence... yes
      checking for limits.h... yes
      checking stddef.h usability... yes
      checking stddef.h presence... yes
      checking for stddef.h... yes
      checking for stdint.h... (cached) yes
      checking for stdlib.h... (cached) yes
      checking for string.h... (cached) yes
      checking wchar.h usability... yes
      checking wchar.h presence... yes
      checking for wchar.h... yes
      checking for inline... inline
      checking for int16_t... yes
      checking for int32_t... yes
      checking for int64_t... yes
      checking for int8_t... yes
      checking for size_t... yes
      checking for uint16_t... yes
      checking for uint32_t... yes
      checking for uint64_t... yes
      checking for uint8_t... yes
      checking for stdlib.h... (cached) yes
      checking for GNU libc compatible malloc... yes
      checking for memmove... yes
      checking for memset... yes
      configure: creating ./config.status
      config.status: creating src/config.h
      In file included from /usr/include/python3.11/Python.h:87,
                       from src/_fastmath.c:31:
      /usr/include/python3.11/cpython/pytime.h:208:60: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        208 | PyAPI_FUNC(int) _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts);
            |                                                            ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:213:56: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        213 | PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts);
            |                                                        ^~~~~~~~
      /usr/include/python3.11/cpython/pytime.h:217:63: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
        217 | PyAPI_FUNC(void) _PyTime_AsTimespec_clamp(_PyTime_t t, struct timespec *ts);
            |                                                               ^~~~~~~~
      src/_fastmath.c:33:10: fatal error: longintrepr.h: No such file or directory
         33 | #include <longintrepr.h>                                /* for conversions */
            |          ^~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pycrypto
ERROR: Could not build wheels for pycrypto, which is required to install pyproject.toml-based projects

The line 87 on Python.h file is : #include "cpython/pytime.h"

In the cpython/pytime.h file, I have this warning : warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration

I think the error is related _PyTime_t API.

In this link about the lonintrepr.h issue, webknjaz claims

"Thanks! It usually doesn't make sense for us to be working on the next interpreter support until rc are out because the build deps like Cython can't keep up with the ABI changes anyway."

Is it because the project doesn't compile with python 3.11 ? I will try with older versions of python 3.

PS :

I tried with python3.10 and It works ! I think it's a dependency problem in python >=3.11