Tue May 7 23:57:47 UTC 2024 I: starting to build wapiti/trixie/armhf on jenkins on '2024-05-07 23:57' Tue May 7 23:57:47 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/armhf_25/6369/console.log Tue May 7 23:57:47 UTC 2024 I: Downloading source for trixie/wapiti=3.0.4+dfsg-2 --2024-05-07 23:57:47-- http://deb.debian.org/debian/pool/main/w/wapiti/wapiti_3.0.4%2bdfsg-2.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2242 (2.2K) [text/prs.lines.tag] Saving to: ‘wapiti_3.0.4+dfsg-2.dsc’ 0K .. 100% 283M=0s 2024-05-07 23:57:47 (283 MB/s) - ‘wapiti_3.0.4+dfsg-2.dsc’ saved [2242/2242] Tue May 7 23:57:47 UTC 2024 I: wapiti_3.0.4+dfsg-2.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: wapiti Binary: wapiti Architecture: all Version: 3.0.4+dfsg-2 Maintainer: Debian Security Tools Uploaders: Gianfranco Costamagna Homepage: https://wapiti.sourceforge.net/ Standards-Version: 4.6.1 Vcs-Browser: https://salsa.debian.org/pkg-security-team/wapiti Vcs-Git: https://salsa.debian.org/pkg-security-team/wapiti.git Build-Depends: debhelper-compat (= 13), dh-python, gettext, libjs-jquery, python3, python3-bs4, python3-importlib-metadata, python3-markupsafe, python3-mako, python3-six, python3-socks, python3-pytest-runner, python3-pytest, python3-responses, python3-setuptools, python3-tld, python3-yaswfp, yui-compressor Package-List: wapiti deb web optional arch=all Checksums-Sha1: 2f5af3c78e804063546cf9ece66f3e32c1e9d391 385528 wapiti_3.0.4+dfsg.orig.tar.xz ed27feecb80a5234de2629cd4ef1e644542303dc 24612 wapiti_3.0.4+dfsg-2.debian.tar.xz Checksums-Sha256: c062276991f53112926d6ec7763360e7fa4c40dac8aa3fa4daafccd677a89439 385528 wapiti_3.0.4+dfsg.orig.tar.xz 301745a1e9bdcc12a83ca184c614067031a0892046f1f04441729543ac1738d4 24612 wapiti_3.0.4+dfsg-2.debian.tar.xz Files: 21ffd4e8179b11a8ad9b9636bec3d4d3 385528 wapiti_3.0.4+dfsg.orig.tar.xz 933600bfff95d9d2ca757bdf37937212 24612 wapiti_3.0.4+dfsg-2.debian.tar.xz -----BEGIN PGP SIGNATURE----- Comment: Signed by Sophie Brun iQIzBAEBCgAdFiEEOyG45orlwW+H9TItV5J4OyBv7jAFAmQCB4EACgkQV5J4OyBv 7jDi2BAAwvPDm9i1Iv5AujihFVCYLKTsbH0EpfaNUl0VOL211DXVShRYUjgxWKjj isYBtSYfG9aIAQdQqXQF82SfpnWISLX5soU6Zpo2rQUOeW1ws5d/kTMG7CEB0Z9T GTP7jQBX1JegEaahJ5xd9TJna7i46LwlW4dReQJHSGtBYboOkObckrpWVY8wdII4 HulhxtgM4O4sWZ2xzv6CFYw7MyYlqxuT9SR16WrzhtFo0h7jpV8VM11PiPgiAGDb tBj1T46EYuCUsylzLcIT0zjoYG7cT/ZZW3YCDE3/9aCY+eJDjRT6N5pQthCMYKJa ZqIBDH2IZfzuxCf+MbuCCliU1Twnn5bDeCJe2W1pmFs2mVyGzmOFq+eR9eTHQU+t 06U55AUa5rBSSIurHJdfZSFofGFoUM992Un31xNL5HEd3BOe3n0TTNoM7gfDPNn+ ftqqrZfJ/z40V1WwQf+TVqtuWWAV6Lop38tydSX2Rl2hHCIzygPMrvVo+WFX0GAs j6yyL4gx1kpFMSnzDie1m25kEmQAKRz9wEF295hSh2H07zBYVPh6Sz2evaSvT4OG RYh6MkywCLfz0st2Iw9LzKrEYHzT+bBu/nHo4jjF9q4sHwy/xqR0raNjTWm7e5cp CTVLpXyAgiY3JSMmtHzeGgx4X2wGfQxrkFMaiYV4eeu8hndBn9M= =Ox0+ -----END PGP SIGNATURE----- Tue May 7 23:57:47 UTC 2024 I: Checking whether the package is not for us Tue May 7 23:57:47 UTC 2024 I: Starting 1st build on remote node virt32c-armhf-rb.debian.net. Tue May 7 23:57:47 UTC 2024 I: Preparing to do remote build '1' on virt32c-armhf-rb.debian.net. Wed May 8 00:00:11 UTC 2024 I: Deleting $TMPDIR on virt32c-armhf-rb.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Tue May 7 11:57:54 -12 2024 I: pbuilder-time-stamp: 1715126274 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [wapiti_3.0.4+dfsg-2.dsc] I: copying [./wapiti_3.0.4+dfsg.orig.tar.xz] I: copying [./wapiti_3.0.4+dfsg-2.debian.tar.xz] I: Extracting source gpgv: Signature made Fri Mar 3 14:43:13 2023 gpgv: using RSA key 3B21B8E68AE5C16F87F5322D5792783B206FEE30 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./wapiti_3.0.4+dfsg-2.dsc: no acceptable signature found dpkg-source: info: extracting wapiti in wapiti-3.0.4+dfsg dpkg-source: info: unpacking wapiti_3.0.4+dfsg.orig.tar.xz dpkg-source: info: unpacking wapiti_3.0.4+dfsg-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying disable-nikto-download.patch dpkg-source: info: applying allow-local-nikto-db.patch dpkg-source: info: applying install-only-pertinent-docs.patch dpkg-source: info: applying remove-jquery.patch dpkg-source: info: applying fix-typos.patch dpkg-source: info: applying remove-js-mentions.patch dpkg-source: info: applying ignore-js-dir-in-html-report-generation.patch dpkg-source: info: applying Remove-codeset-parameter-codeset-of-getext.translation.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1745/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='armhf' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' DISTRIBUTION='trixie' HOME='/root' HOST_ARCH='armhf' IFS=' ' INVOCATION_ID='e110345684dd4ed5a6187ba49a1a2ccd' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='1745' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.88IV5cxZ/pbuilderrc_RPaV --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.88IV5cxZ/b1 --logfile b1/build.log wapiti_3.0.4+dfsg-2.dsc' SUDO_GID='113' SUDO_UID='107' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://10.0.0.15:3142/' I: uname -a Linux virt32c 6.1.0-21-armmp-lpae #1 SMP Debian 6.1.90-1 (2024-05-03) armv7l GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 May 6 11:24 /bin -> usr/bin I: user script /srv/workspace/pbuilder/1745/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: armhf Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-python, gettext, libjs-jquery, python3, python3-bs4, python3-importlib-metadata, python3-markupsafe, python3-mako, python3-six, python3-socks, python3-pytest-runner, python3-pytest, python3-responses, python3-setuptools, python3-tld, python3-yaswfp, yui-compressor dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19444 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-python; however: Package dh-python is not installed. pbuilder-satisfydepends-dummy depends on gettext; however: Package gettext is not installed. pbuilder-satisfydepends-dummy depends on libjs-jquery; however: Package libjs-jquery is not installed. pbuilder-satisfydepends-dummy depends on python3; however: Package python3 is not installed. pbuilder-satisfydepends-dummy depends on python3-bs4; however: Package python3-bs4 is not installed. pbuilder-satisfydepends-dummy depends on python3-importlib-metadata; however: Package python3-importlib-metadata is not installed. pbuilder-satisfydepends-dummy depends on python3-markupsafe; however: Package python3-markupsafe is not installed. pbuilder-satisfydepends-dummy depends on python3-mako; however: Package python3-mako is not installed. pbuilder-satisfydepends-dummy depends on python3-six; however: Package python3-six is not installed. pbuilder-satisfydepends-dummy depends on python3-socks; however: Package python3-socks is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-runner; however: Package python3-pytest-runner is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-responses; however: Package python3-responses is not installed. pbuilder-satisfydepends-dummy depends on python3-setuptools; however: Package python3-setuptools is not installed. pbuilder-satisfydepends-dummy depends on python3-tld; however: Package python3-tld is not installed. pbuilder-satisfydepends-dummy depends on python3-yaswfp; however: Package python3-yaswfp is not installed. pbuilder-satisfydepends-dummy depends on yui-compressor; however: Package yui-compressor is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} ca-certificates-java{a} debhelper{a} default-jre-headless{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} java-common{a} java-wrappers{a} libarchive-zip-perl{a} libdebhelper-perl{a} libelf1t64{a} libexpat1{a} libfile-stripnondeterminism-perl{a} libicu72{a} libjargs-java{a} libjpeg62-turbo{a} libjs-jquery{a} liblcms2-2{a} libmagic-mgc{a} libmagic1t64{a} libnspr4{a} libnss3{a} libpcsclite1{a} libpipeline1{a} libpython3-stdlib{a} libpython3.11-minimal{a} libpython3.11-stdlib{a} libreadline8t64{a} libsub-override-perl{a} libtool{a} libuchardet0{a} libxml2{a} libyaml-0-2{a} m4{a} man-db{a} media-types{a} netbase{a} openjdk-17-jre-headless{a} openssl{a} po-debconf{a} publicsuffix{a} python3{a} python3-bs4{a} python3-certifi{a} python3-chardet{a} python3-charset-normalizer{a} python3-distutils{a} python3-idna{a} python3-importlib-metadata{a} python3-iniconfig{a} python3-lib2to3{a} python3-mako{a} python3-markupsafe{a} python3-minimal{a} python3-more-itertools{a} python3-packaging{a} python3-pkg-resources{a} python3-pluggy{a} python3-pytest{a} python3-pytest-runner{a} python3-requests{a} python3-responses{a} python3-setuptools{a} python3-six{a} python3-socks{a} python3-soupsieve{a} python3-tld{a} python3-urllib3{a} python3-yaml{a} python3-yaswfp{a} python3-zipp{a} python3.11{a} python3.11-minimal{a} readline-common{a} sensible-utils{a} tzdata{a} unzip{a} yui-compressor{a} The following packages are RECOMMENDED but will NOT be installed: curl javascript-common libarchive-cpio-perl libasound2t64 libcups2t64 libfontconfig1 libfreetype6 libharfbuzz0b libltdl-dev libmail-sendmail-perl lynx python3-lxml python3-pygments wget 0 packages upgraded, 90 newly installed, 0 to remove and 0 not upgraded. Need to get 68.9 MB of archives. After unpacking 271 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian trixie/main armhf libpython3.11-minimal armhf 3.11.9-1 [805 kB] Get: 2 http://deb.debian.org/debian trixie/main armhf libexpat1 armhf 2.6.2-1 [83.5 kB] Get: 3 http://deb.debian.org/debian trixie/main armhf python3.11-minimal armhf 3.11.9-1 [1600 kB] Get: 4 http://deb.debian.org/debian trixie/main armhf python3-minimal armhf 3.11.8-1 [26.3 kB] Get: 5 http://deb.debian.org/debian trixie/main armhf media-types all 10.1.0 [26.9 kB] Get: 6 http://deb.debian.org/debian trixie/main armhf netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian trixie/main armhf tzdata all 2024a-3 [255 kB] Get: 8 http://deb.debian.org/debian trixie/main armhf readline-common all 8.2-4 [69.3 kB] Get: 9 http://deb.debian.org/debian trixie/main armhf libreadline8t64 armhf 8.2-4 [145 kB] Get: 10 http://deb.debian.org/debian trixie/main armhf libpython3.11-stdlib armhf 3.11.9-1 [1704 kB] Get: 11 http://deb.debian.org/debian trixie/main armhf python3.11 armhf 3.11.9-1 [602 kB] Get: 12 http://deb.debian.org/debian trixie/main armhf libpython3-stdlib armhf 3.11.8-1 [9332 B] Get: 13 http://deb.debian.org/debian trixie/main armhf python3 armhf 3.11.8-1 [27.4 kB] Get: 14 http://deb.debian.org/debian trixie/main armhf sensible-utils all 0.0.22 [22.4 kB] Get: 15 http://deb.debian.org/debian trixie/main armhf openssl armhf 3.2.1-3 [1326 kB] Get: 16 http://deb.debian.org/debian trixie/main armhf ca-certificates all 20240203 [158 kB] Get: 17 http://deb.debian.org/debian trixie/main armhf libmagic-mgc armhf 1:5.45-3 [314 kB] Get: 18 http://deb.debian.org/debian trixie/main armhf libmagic1t64 armhf 1:5.45-3 [98.1 kB] Get: 19 http://deb.debian.org/debian trixie/main armhf file armhf 1:5.45-3 [42.0 kB] Get: 20 http://deb.debian.org/debian trixie/main armhf gettext-base armhf 0.21-14+b1 [157 kB] Get: 21 http://deb.debian.org/debian trixie/main armhf libuchardet0 armhf 0.0.8-1+b1 [65.7 kB] Get: 22 http://deb.debian.org/debian trixie/main armhf groff-base armhf 1.23.0-4 [1090 kB] Get: 23 http://deb.debian.org/debian trixie/main armhf bsdextrautils armhf 2.40-8 [85.6 kB] Get: 24 http://deb.debian.org/debian trixie/main armhf libpipeline1 armhf 1.5.7-2 [33.3 kB] Get: 25 http://deb.debian.org/debian trixie/main armhf man-db armhf 2.12.1-1 [1375 kB] Get: 26 http://deb.debian.org/debian trixie/main armhf m4 armhf 1.4.19-4 [264 kB] Get: 27 http://deb.debian.org/debian trixie/main armhf autoconf all 2.71-3 [332 kB] Get: 28 http://deb.debian.org/debian trixie/main armhf autotools-dev all 20220109.1 [51.6 kB] Get: 29 http://deb.debian.org/debian trixie/main armhf automake all 1:1.16.5-1.3 [823 kB] Get: 30 http://deb.debian.org/debian trixie/main armhf autopoint all 0.21-14 [496 kB] Get: 31 http://deb.debian.org/debian trixie/main armhf ca-certificates-java all 20240118 [11.6 kB] Get: 32 http://deb.debian.org/debian trixie/main armhf libdebhelper-perl all 13.15.3 [88.0 kB] Get: 33 http://deb.debian.org/debian trixie/main armhf libtool all 2.4.7-7 [517 kB] Get: 34 http://deb.debian.org/debian trixie/main armhf dh-autoreconf all 20 [17.1 kB] Get: 35 http://deb.debian.org/debian trixie/main armhf libarchive-zip-perl all 1.68-1 [104 kB] Get: 36 http://deb.debian.org/debian trixie/main armhf libsub-override-perl all 0.10-1 [10.6 kB] Get: 37 http://deb.debian.org/debian trixie/main armhf libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get: 38 http://deb.debian.org/debian trixie/main armhf dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get: 39 http://deb.debian.org/debian trixie/main armhf libelf1t64 armhf 0.191-1+b1 [183 kB] Get: 40 http://deb.debian.org/debian trixie/main armhf dwz armhf 0.15-1+b2 [106 kB] Get: 41 http://deb.debian.org/debian trixie/main armhf libicu72 armhf 72.1-4+b1 [9070 kB] Get: 42 http://deb.debian.org/debian trixie/main armhf libxml2 armhf 2.9.14+dfsg-1.3+b3 [598 kB] Get: 43 http://deb.debian.org/debian trixie/main armhf gettext armhf 0.21-14+b1 [1230 kB] Get: 44 http://deb.debian.org/debian trixie/main armhf intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 45 http://deb.debian.org/debian trixie/main armhf po-debconf all 1.0.21+nmu1 [248 kB] Get: 46 http://deb.debian.org/debian trixie/main armhf debhelper all 13.15.3 [901 kB] Get: 47 http://deb.debian.org/debian trixie/main armhf java-common all 0.75 [6640 B] Get: 48 http://deb.debian.org/debian trixie/main armhf liblcms2-2 armhf 2.14-2+b1 [126 kB] Get: 49 http://deb.debian.org/debian trixie/main armhf libjpeg62-turbo armhf 1:2.1.5-3 [143 kB] Get: 50 http://deb.debian.org/debian trixie/main armhf libnspr4 armhf 2:4.35-1.1+b1 [87.2 kB] Get: 51 http://deb.debian.org/debian trixie/main armhf libnss3 armhf 2:3.99-1 [1220 kB] Get: 52 http://deb.debian.org/debian trixie/main armhf libpcsclite1 armhf 2.0.3-1 [47.7 kB] Get: 53 http://deb.debian.org/debian trixie/main armhf openjdk-17-jre-headless armhf 17.0.11+9-1 [38.2 MB] Get: 54 http://deb.debian.org/debian trixie/main armhf default-jre-headless armhf 2:1.17-75 [3068 B] Get: 55 http://deb.debian.org/debian trixie/main armhf python3-pkg-resources all 68.1.2-2 [241 kB] Get: 56 http://deb.debian.org/debian trixie/main armhf python3-lib2to3 all 3.12.3-1 [77.6 kB] Get: 57 http://deb.debian.org/debian trixie/main armhf python3-distutils all 3.12.3-1 [131 kB] Get: 58 http://deb.debian.org/debian trixie/main armhf python3-setuptools all 68.1.2-2 [468 kB] Get: 59 http://deb.debian.org/debian trixie/main armhf dh-python all 6.20240422 [107 kB] Get: 60 http://deb.debian.org/debian trixie/main armhf unzip armhf 6.0-28 [152 kB] Get: 61 http://deb.debian.org/debian trixie/main armhf java-wrappers all 0.4 [8916 B] Get: 62 http://deb.debian.org/debian trixie/main armhf libjargs-java all 1.0.0-5 [14.9 kB] Get: 63 http://deb.debian.org/debian trixie/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 64 http://deb.debian.org/debian trixie/main armhf libyaml-0-2 armhf 0.2.5-1+b1 [45.5 kB] Get: 65 http://deb.debian.org/debian trixie/main armhf publicsuffix all 20231001.0357-0.1 [125 kB] Get: 66 http://deb.debian.org/debian trixie/main armhf python3-soupsieve all 2.5-1 [38.1 kB] Get: 67 http://deb.debian.org/debian trixie/main armhf python3-bs4 all 4.12.3-1 [133 kB] Get: 68 http://deb.debian.org/debian trixie/main armhf python3-certifi all 2023.11.17-1 [155 kB] Get: 69 http://deb.debian.org/debian trixie/main armhf python3-chardet all 5.2.0+dfsg-1 [107 kB] Get: 70 http://deb.debian.org/debian trixie/main armhf python3-charset-normalizer all 3.3.2-1 [51.6 kB] Get: 71 http://deb.debian.org/debian trixie/main armhf python3-idna all 3.6-2 [37.0 kB] Get: 72 http://deb.debian.org/debian trixie/main armhf python3-more-itertools all 10.2.0-1 [59.9 kB] Get: 73 http://deb.debian.org/debian trixie/main armhf python3-zipp all 1.0.0-6 [6696 B] Get: 74 http://deb.debian.org/debian trixie/main armhf python3-importlib-metadata all 4.12.0-1 [24.9 kB] Get: 75 http://deb.debian.org/debian trixie/main armhf python3-iniconfig all 1.1.1-2 [6396 B] Get: 76 http://deb.debian.org/debian trixie/main armhf python3-markupsafe armhf 2.1.5-1 [13.9 kB] Get: 77 http://deb.debian.org/debian trixie/main armhf python3-mako all 1.3.2-1 [82.4 kB] Get: 78 http://deb.debian.org/debian trixie/main armhf python3-packaging all 24.0-1 [45.5 kB] Get: 79 http://deb.debian.org/debian trixie/main armhf python3-pluggy all 1.5.0-1 [26.9 kB] Get: 80 http://deb.debian.org/debian trixie/main armhf python3-pytest all 7.4.4-3 [239 kB] Get: 81 http://deb.debian.org/debian trixie/main armhf python3-pytest-runner all 2.11.1-4 [8432 B] Get: 82 http://deb.debian.org/debian trixie/main armhf python3-six all 1.16.0-6 [16.3 kB] Get: 83 http://deb.debian.org/debian trixie/main armhf python3-urllib3 all 1.26.18-2 [116 kB] Get: 84 http://deb.debian.org/debian trixie/main armhf python3-requests all 2.31.0+dfsg-1 [68.6 kB] Get: 85 http://deb.debian.org/debian trixie/main armhf python3-yaml armhf 6.0.1-2 [162 kB] Get: 86 http://deb.debian.org/debian trixie/main armhf python3-responses all 0.24.1-2 [59.0 kB] Get: 87 http://deb.debian.org/debian trixie/main armhf python3-socks all 1.7.1+dfsg-1 [23.3 kB] Get: 88 http://deb.debian.org/debian trixie/main armhf python3-tld all 0.11.11-4 [19.5 kB] Get: 89 http://deb.debian.org/debian trixie/main armhf python3-yaswfp all 0.9.3-2 [16.0 kB] Get: 90 http://deb.debian.org/debian trixie/main armhf yui-compressor all 2.4.8-3 [604 kB] Fetched 68.9 MB in 1s (48.1 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:armhf. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19444 files and directories currently installed.) Preparing to unpack .../libpython3.11-minimal_3.11.9-1_armhf.deb ... Unpacking libpython3.11-minimal:armhf (3.11.9-1) ... Selecting previously unselected package libexpat1:armhf. Preparing to unpack .../libexpat1_2.6.2-1_armhf.deb ... Unpacking libexpat1:armhf (2.6.2-1) ... Selecting previously unselected package python3.11-minimal. Preparing to unpack .../python3.11-minimal_3.11.9-1_armhf.deb ... Unpacking python3.11-minimal (3.11.9-1) ... Setting up libpython3.11-minimal:armhf (3.11.9-1) ... Setting up libexpat1:armhf (2.6.2-1) ... Setting up python3.11-minimal (3.11.9-1) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19760 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.11.8-1_armhf.deb ... Unpacking python3-minimal (3.11.8-1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2024a-3_all.deb ... Unpacking tzdata (2024a-3) ... Selecting previously unselected package readline-common. Preparing to unpack .../4-readline-common_8.2-4_all.deb ... Unpacking readline-common (8.2-4) ... Selecting previously unselected package libreadline8t64:armhf. Preparing to unpack .../5-libreadline8t64_8.2-4_armhf.deb ... Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8 to /lib/arm-linux-gnueabihf/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8.2 to /lib/arm-linux-gnueabihf/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8 to /lib/arm-linux-gnueabihf/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8.2 to /lib/arm-linux-gnueabihf/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:armhf (8.2-4) ... Selecting previously unselected package libpython3.11-stdlib:armhf. Preparing to unpack .../6-libpython3.11-stdlib_3.11.9-1_armhf.deb ... Unpacking libpython3.11-stdlib:armhf (3.11.9-1) ... Selecting previously unselected package python3.11. Preparing to unpack .../7-python3.11_3.11.9-1_armhf.deb ... Unpacking python3.11 (3.11.9-1) ... Selecting previously unselected package libpython3-stdlib:armhf. Preparing to unpack .../8-libpython3-stdlib_3.11.8-1_armhf.deb ... Unpacking libpython3-stdlib:armhf (3.11.8-1) ... Setting up python3-minimal (3.11.8-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20752 files and directories currently installed.) Preparing to unpack .../00-python3_3.11.8-1_armhf.deb ... Unpacking python3 (3.11.8-1) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.22_all.deb ... Unpacking sensible-utils (0.0.22) ... Selecting previously unselected package openssl. Preparing to unpack .../02-openssl_3.2.1-3_armhf.deb ... Unpacking openssl (3.2.1-3) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../03-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../04-libmagic-mgc_1%3a5.45-3_armhf.deb ... Unpacking libmagic-mgc (1:5.45-3) ... Selecting previously unselected package libmagic1t64:armhf. Preparing to unpack .../05-libmagic1t64_1%3a5.45-3_armhf.deb ... Unpacking libmagic1t64:armhf (1:5.45-3) ... Selecting previously unselected package file. Preparing to unpack .../06-file_1%3a5.45-3_armhf.deb ... Unpacking file (1:5.45-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../07-gettext-base_0.21-14+b1_armhf.deb ... Unpacking gettext-base (0.21-14+b1) ... Selecting previously unselected package libuchardet0:armhf. Preparing to unpack .../08-libuchardet0_0.0.8-1+b1_armhf.deb ... Unpacking libuchardet0:armhf (0.0.8-1+b1) ... Selecting previously unselected package groff-base. Preparing to unpack .../09-groff-base_1.23.0-4_armhf.deb ... Unpacking groff-base (1.23.0-4) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../10-bsdextrautils_2.40-8_armhf.deb ... Unpacking bsdextrautils (2.40-8) ... Selecting previously unselected package libpipeline1:armhf. Preparing to unpack .../11-libpipeline1_1.5.7-2_armhf.deb ... Unpacking libpipeline1:armhf (1.5.7-2) ... Selecting previously unselected package man-db. Preparing to unpack .../12-man-db_2.12.1-1_armhf.deb ... Unpacking man-db (2.12.1-1) ... Selecting previously unselected package m4. Preparing to unpack .../13-m4_1.4.19-4_armhf.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../14-autoconf_2.71-3_all.deb ... Unpacking autoconf (2.71-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../15-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../16-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../17-autopoint_0.21-14_all.deb ... Unpacking autopoint (0.21-14) ... Selecting previously unselected package ca-certificates-java. Preparing to unpack .../18-ca-certificates-java_20240118_all.deb ... Unpacking ca-certificates-java (20240118) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../19-libdebhelper-perl_13.15.3_all.deb ... Unpacking libdebhelper-perl (13.15.3) ... Selecting previously unselected package libtool. Preparing to unpack .../20-libtool_2.4.7-7_all.deb ... Unpacking libtool (2.4.7-7) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../21-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../22-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../23-libsub-override-perl_0.10-1_all.deb ... Unpacking libsub-override-perl (0.10-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../24-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../25-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1t64:armhf. Preparing to unpack .../26-libelf1t64_0.191-1+b1_armhf.deb ... Unpacking libelf1t64:armhf (0.191-1+b1) ... Selecting previously unselected package dwz. Preparing to unpack .../27-dwz_0.15-1+b2_armhf.deb ... Unpacking dwz (0.15-1+b2) ... Selecting previously unselected package libicu72:armhf. Preparing to unpack .../28-libicu72_72.1-4+b1_armhf.deb ... Unpacking libicu72:armhf (72.1-4+b1) ... Selecting previously unselected package libxml2:armhf. Preparing to unpack .../29-libxml2_2.9.14+dfsg-1.3+b3_armhf.deb ... Unpacking libxml2:armhf (2.9.14+dfsg-1.3+b3) ... Selecting previously unselected package gettext. Preparing to unpack .../30-gettext_0.21-14+b1_armhf.deb ... Unpacking gettext (0.21-14+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../31-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../32-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../33-debhelper_13.15.3_all.deb ... Unpacking debhelper (13.15.3) ... Selecting previously unselected package java-common. Preparing to unpack .../34-java-common_0.75_all.deb ... Unpacking java-common (0.75) ... Selecting previously unselected package liblcms2-2:armhf. Preparing to unpack .../35-liblcms2-2_2.14-2+b1_armhf.deb ... Unpacking liblcms2-2:armhf (2.14-2+b1) ... Selecting previously unselected package libjpeg62-turbo:armhf. Preparing to unpack .../36-libjpeg62-turbo_1%3a2.1.5-3_armhf.deb ... Unpacking libjpeg62-turbo:armhf (1:2.1.5-3) ... Selecting previously unselected package libnspr4:armhf. Preparing to unpack .../37-libnspr4_2%3a4.35-1.1+b1_armhf.deb ... Unpacking libnspr4:armhf (2:4.35-1.1+b1) ... Selecting previously unselected package libnss3:armhf. Preparing to unpack .../38-libnss3_2%3a3.99-1_armhf.deb ... Unpacking libnss3:armhf (2:3.99-1) ... Selecting previously unselected package libpcsclite1:armhf. Preparing to unpack .../39-libpcsclite1_2.0.3-1_armhf.deb ... Unpacking libpcsclite1:armhf (2.0.3-1) ... Selecting previously unselected package openjdk-17-jre-headless:armhf. Preparing to unpack .../40-openjdk-17-jre-headless_17.0.11+9-1_armhf.deb ... Unpacking openjdk-17-jre-headless:armhf (17.0.11+9-1) ... Selecting previously unselected package default-jre-headless. Preparing to unpack .../41-default-jre-headless_2%3a1.17-75_armhf.deb ... Unpacking default-jre-headless (2:1.17-75) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../42-python3-pkg-resources_68.1.2-2_all.deb ... Unpacking python3-pkg-resources (68.1.2-2) ... Selecting previously unselected package python3-lib2to3. Preparing to unpack .../43-python3-lib2to3_3.12.3-1_all.deb ... Unpacking python3-lib2to3 (3.12.3-1) ... Selecting previously unselected package python3-distutils. Preparing to unpack .../44-python3-distutils_3.12.3-1_all.deb ... Unpacking python3-distutils (3.12.3-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../45-python3-setuptools_68.1.2-2_all.deb ... Unpacking python3-setuptools (68.1.2-2) ... Selecting previously unselected package dh-python. Preparing to unpack .../46-dh-python_6.20240422_all.deb ... Unpacking dh-python (6.20240422) ... Selecting previously unselected package unzip. Preparing to unpack .../47-unzip_6.0-28_armhf.deb ... Unpacking unzip (6.0-28) ... Selecting previously unselected package java-wrappers. Preparing to unpack .../48-java-wrappers_0.4_all.deb ... Unpacking java-wrappers (0.4) ... Selecting previously unselected package libjargs-java. Preparing to unpack .../49-libjargs-java_1.0.0-5_all.deb ... Unpacking libjargs-java (1.0.0-5) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../50-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package libyaml-0-2:armhf. Preparing to unpack .../51-libyaml-0-2_0.2.5-1+b1_armhf.deb ... Unpacking libyaml-0-2:armhf (0.2.5-1+b1) ... Selecting previously unselected package publicsuffix. Preparing to unpack .../52-publicsuffix_20231001.0357-0.1_all.deb ... Unpacking publicsuffix (20231001.0357-0.1) ... Selecting previously unselected package python3-soupsieve. Preparing to unpack .../53-python3-soupsieve_2.5-1_all.deb ... Unpacking python3-soupsieve (2.5-1) ... Selecting previously unselected package python3-bs4. Preparing to unpack .../54-python3-bs4_4.12.3-1_all.deb ... Unpacking python3-bs4 (4.12.3-1) ... Selecting previously unselected package python3-certifi. Preparing to unpack .../55-python3-certifi_2023.11.17-1_all.deb ... Unpacking python3-certifi (2023.11.17-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../56-python3-chardet_5.2.0+dfsg-1_all.deb ... Unpacking python3-chardet (5.2.0+dfsg-1) ... Selecting previously unselected package python3-charset-normalizer. Preparing to unpack .../57-python3-charset-normalizer_3.3.2-1_all.deb ... Unpacking python3-charset-normalizer (3.3.2-1) ... Selecting previously unselected package python3-idna. Preparing to unpack .../58-python3-idna_3.6-2_all.deb ... Unpacking python3-idna (3.6-2) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../59-python3-more-itertools_10.2.0-1_all.deb ... Unpacking python3-more-itertools (10.2.0-1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../60-python3-zipp_1.0.0-6_all.deb ... Unpacking python3-zipp (1.0.0-6) ... Selecting previously unselected package python3-importlib-metadata. Preparing to unpack .../61-python3-importlib-metadata_4.12.0-1_all.deb ... Unpacking python3-importlib-metadata (4.12.0-1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../62-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-markupsafe. Preparing to unpack .../63-python3-markupsafe_2.1.5-1_armhf.deb ... Unpacking python3-markupsafe (2.1.5-1) ... Selecting previously unselected package python3-mako. Preparing to unpack .../64-python3-mako_1.3.2-1_all.deb ... Unpacking python3-mako (1.3.2-1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../65-python3-packaging_24.0-1_all.deb ... Unpacking python3-packaging (24.0-1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../66-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../67-python3-pytest_7.4.4-3_all.deb ... Unpacking python3-pytest (7.4.4-3) ... Selecting previously unselected package python3-pytest-runner. Preparing to unpack .../68-python3-pytest-runner_2.11.1-4_all.deb ... Unpacking python3-pytest-runner (2.11.1-4) ... Selecting previously unselected package python3-six. Preparing to unpack .../69-python3-six_1.16.0-6_all.deb ... Unpacking python3-six (1.16.0-6) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../70-python3-urllib3_1.26.18-2_all.deb ... Unpacking python3-urllib3 (1.26.18-2) ... Selecting previously unselected package python3-requests. Preparing to unpack .../71-python3-requests_2.31.0+dfsg-1_all.deb ... Unpacking python3-requests (2.31.0+dfsg-1) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../72-python3-yaml_6.0.1-2_armhf.deb ... Unpacking python3-yaml (6.0.1-2) ... Selecting previously unselected package python3-responses. Preparing to unpack .../73-python3-responses_0.24.1-2_all.deb ... Unpacking python3-responses (0.24.1-2) ... Selecting previously unselected package python3-socks. Preparing to unpack .../74-python3-socks_1.7.1+dfsg-1_all.deb ... Unpacking python3-socks (1.7.1+dfsg-1) ... Selecting previously unselected package python3-tld. Preparing to unpack .../75-python3-tld_0.11.11-4_all.deb ... Unpacking python3-tld (0.11.11-4) ... Selecting previously unselected package python3-yaswfp. Preparing to unpack .../76-python3-yaswfp_0.9.3-2_all.deb ... Unpacking python3-yaswfp (0.9.3-2) ... Selecting previously unselected package yui-compressor. Preparing to unpack .../77-yui-compressor_2.4.8-3_all.deb ... Unpacking yui-compressor (2.4.8-3) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:armhf (1.5.7-2) ... Setting up liblcms2-2:armhf (2.14-2+b1) ... Setting up libicu72:armhf (72.1-4+b1) ... Setting up bsdextrautils (2.40-8) ... Setting up java-common (0.75) ... Setting up libmagic-mgc (1:5.45-3) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:armhf (0.2.5-1+b1) ... Setting up unzip (6.0-28) ... Setting up libdebhelper-perl (13.15.3) ... Setting up libmagic1t64:armhf (1:5.45-3) ... Setting up gettext-base (0.21-14+b1) ... Setting up m4 (1.4.19-4) ... Setting up file (1:5.45-3) ... Setting up libelf1t64:armhf (0.191-1+b1) ... Setting up tzdata (2024a-3) ... Current default time zone: 'Etc/UTC' Local time is now: Tue May 7 23:58:45 UTC 2024. Universal Time is now: Tue May 7 23:58:45 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... Setting up libjpeg62-turbo:armhf (1:2.1.5-3) ... Setting up libnspr4:armhf (2:4.35-1.1+b1) ... Setting up autopoint (0.21-14) ... Setting up libpcsclite1:armhf (2.0.3-1) ... Setting up autoconf (2.71-3) ... Setting up dwz (0.15-1+b2) ... Setting up sensible-utils (0.0.22) ... Setting up libuchardet0:armhf (0.0.8-1+b1) ... Setting up libjargs-java (1.0.0-5) ... Setting up libsub-override-perl (0.10-1) ... Setting up netbase (6.4) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up openssl (3.2.1-3) ... Setting up readline-common (8.2-4) ... Setting up publicsuffix (20231001.0357-0.1) ... Setting up libxml2:armhf (2.9.14+dfsg-1.3+b3) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.13.1-1) ... Setting up gettext (0.21-14+b1) ... Setting up java-wrappers (0.4) ... Setting up libtool (2.4.7-7) ... Setting up libnss3:armhf (2:3.99-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up libreadline8t64:armhf (8.2-4) ... Setting up dh-strip-nondeterminism (1.13.1-1) ... Setting up groff-base (1.23.0-4) ... Setting up ca-certificates-java (20240118) ... No JRE found. Skipping Java certificates setup. Setting up po-debconf (1.0.21+nmu1) ... Setting up libpython3.11-stdlib:armhf (3.11.9-1) ... Setting up man-db (2.12.1-1) ... Not building database; man-db/auto-update is not 'true'. Setting up openjdk-17-jre-headless:armhf (17.0.11+9-1) ... update-alternatives: using /usr/lib/jvm/java-17-openjdk-armhf/bin/java to provide /usr/bin/java (java) in auto mode update-alternatives: using /usr/lib/jvm/java-17-openjdk-armhf/bin/jpackage to provide /usr/bin/jpackage (jpackage) in auto mode update-alternatives: using /usr/lib/jvm/java-17-openjdk-armhf/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode update-alternatives: using /usr/lib/jvm/java-17-openjdk-armhf/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode update-alternatives: using /usr/lib/jvm/java-17-openjdk-armhf/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode Setting up libpython3-stdlib:armhf (3.11.8-1) ... Setting up python3.11 (3.11.9-1) ... Setting up debhelper (13.15.3) ... Setting up python3 (3.11.8-1) ... Setting up python3-tld (0.11.11-4) ... Setting up python3-markupsafe (2.1.5-1) ... Setting up python3-six (1.16.0-6) ... Setting up python3-packaging (24.0-1) ... Setting up python3-yaswfp (0.9.3-2) ... Setting up python3-certifi (2023.11.17-1) ... Setting up python3-idna (3.6-2) ... Setting up python3-urllib3 (1.26.18-2) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-lib2to3 (3.12.3-1) ... Setting up python3-soupsieve (2.5-1) ... Setting up python3-pkg-resources (68.1.2-2) ... Setting up python3-distutils (3.12.3-1) ... Setting up python3-more-itertools (10.2.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-setuptools (68.1.2-2) ... Setting up python3-socks (1.7.1+dfsg-1) ... Setting up python3-charset-normalizer (3.3.2-1) ... Setting up python3-pytest (7.4.4-3) ... Setting up python3-yaml (6.0.1-2) ... Setting up python3-zipp (1.0.0-6) ... Setting up python3-bs4 (4.12.3-1) ... Setting up python3-chardet (5.2.0+dfsg-1) ... Setting up python3-requests (2.31.0+dfsg-1) ... Setting up python3-pytest-runner (2.11.1-4) ... Setting up python3-mako (1.3.2-1) ... Setting up dh-python (6.20240422) ... Setting up python3-importlib-metadata (4.12.0-1) ... Setting up python3-responses (0.24.1-2) ... Processing triggers for libc-bin (2.38-7) ... Processing triggers for ca-certificates-java (20240118) ... Adding debian:ACCVRAIZ1.pem Adding debian:AC_RAIZ_FNMT-RCM.pem Adding debian:AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.pem Adding debian:ANF_Secure_Server_Root_CA.pem Adding debian:Actalis_Authentication_Root_CA.pem Adding debian:AffirmTrust_Commercial.pem Adding debian:AffirmTrust_Networking.pem Adding debian:AffirmTrust_Premium.pem Adding debian:AffirmTrust_Premium_ECC.pem Adding debian:Amazon_Root_CA_1.pem Adding debian:Amazon_Root_CA_2.pem Adding debian:Amazon_Root_CA_3.pem Adding debian:Amazon_Root_CA_4.pem Adding debian:Atos_TrustedRoot_2011.pem Adding debian:Atos_TrustedRoot_Root_CA_ECC_TLS_2021.pem Adding debian:Atos_TrustedRoot_Root_CA_RSA_TLS_2021.pem Adding debian:Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem Adding debian:BJCA_Global_Root_CA1.pem Adding debian:BJCA_Global_Root_CA2.pem Adding debian:Baltimore_CyberTrust_Root.pem Adding debian:Buypass_Class_2_Root_CA.pem Adding debian:Buypass_Class_3_Root_CA.pem Adding debian:CA_Disig_Root_R2.pem Adding debian:CFCA_EV_ROOT.pem Adding debian:COMODO_Certification_Authority.pem Adding debian:COMODO_ECC_Certification_Authority.pem Adding debian:COMODO_RSA_Certification_Authority.pem Adding debian:Certainly_Root_E1.pem Adding debian:Certainly_Root_R1.pem Adding debian:Certigna.pem Adding debian:Certigna_Root_CA.pem Adding debian:Certum_EC-384_CA.pem Adding debian:Certum_Trusted_Network_CA.pem Adding debian:Certum_Trusted_Network_CA_2.pem Adding debian:Certum_Trusted_Root_CA.pem Adding debian:CommScope_Public_Trust_ECC_Root-01.pem Adding debian:CommScope_Public_Trust_ECC_Root-02.pem Adding debian:CommScope_Public_Trust_RSA_Root-01.pem Adding debian:CommScope_Public_Trust_RSA_Root-02.pem Adding debian:Comodo_AAA_Services_root.pem Adding debian:D-TRUST_BR_Root_CA_1_2020.pem Adding debian:D-TRUST_EV_Root_CA_1_2020.pem Adding debian:D-TRUST_Root_Class_3_CA_2_2009.pem Adding debian:D-TRUST_Root_Class_3_CA_2_EV_2009.pem Adding debian:DigiCert_Assured_ID_Root_CA.pem Adding debian:DigiCert_Assured_ID_Root_G2.pem Adding debian:DigiCert_Assured_ID_Root_G3.pem Adding debian:DigiCert_Global_Root_CA.pem Adding debian:DigiCert_Global_Root_G2.pem Adding debian:DigiCert_Global_Root_G3.pem Adding debian:DigiCert_High_Assurance_EV_Root_CA.pem Adding debian:DigiCert_TLS_ECC_P384_Root_G5.pem Adding debian:DigiCert_TLS_RSA4096_Root_G5.pem Adding debian:DigiCert_Trusted_Root_G4.pem Adding debian:Entrust.net_Premium_2048_Secure_Server_CA.pem Adding debian:Entrust_Root_Certification_Authority.pem Adding debian:Entrust_Root_Certification_Authority_-_EC1.pem Adding debian:Entrust_Root_Certification_Authority_-_G2.pem Adding debian:Entrust_Root_Certification_Authority_-_G4.pem Adding debian:GDCA_TrustAUTH_R5_ROOT.pem Adding debian:GLOBALTRUST_2020.pem Adding debian:GTS_Root_R1.pem Adding debian:GTS_Root_R2.pem Adding debian:GTS_Root_R3.pem Adding debian:GTS_Root_R4.pem Adding debian:GlobalSign_ECC_Root_CA_-_R4.pem Adding debian:GlobalSign_ECC_Root_CA_-_R5.pem Adding debian:GlobalSign_Root_CA.pem Adding debian:GlobalSign_Root_CA_-_R3.pem Adding debian:GlobalSign_Root_CA_-_R6.pem Adding debian:GlobalSign_Root_E46.pem Adding debian:GlobalSign_Root_R46.pem Adding debian:Go_Daddy_Class_2_CA.pem Adding debian:Go_Daddy_Root_Certificate_Authority_-_G2.pem Adding debian:HARICA_TLS_ECC_Root_CA_2021.pem Adding debian:HARICA_TLS_RSA_Root_CA_2021.pem Adding debian:Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem Adding debian:Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem Adding debian:HiPKI_Root_CA_-_G1.pem Adding debian:Hongkong_Post_Root_CA_3.pem Adding debian:ISRG_Root_X1.pem Adding debian:ISRG_Root_X2.pem Adding debian:IdenTrust_Commercial_Root_CA_1.pem Adding debian:IdenTrust_Public_Sector_Root_CA_1.pem Adding debian:Izenpe.com.pem Adding debian:Microsec_e-Szigno_Root_CA_2009.pem Adding debian:Microsoft_ECC_Root_Certificate_Authority_2017.pem Adding debian:Microsoft_RSA_Root_Certificate_Authority_2017.pem Adding debian:NAVER_Global_Root_Certification_Authority.pem Adding debian:NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem Adding debian:OISTE_WISeKey_Global_Root_GB_CA.pem Adding debian:OISTE_WISeKey_Global_Root_GC_CA.pem Adding debian:QuoVadis_Root_CA_1_G3.pem Adding debian:QuoVadis_Root_CA_2.pem Adding debian:QuoVadis_Root_CA_2_G3.pem Adding debian:QuoVadis_Root_CA_3.pem Adding debian:QuoVadis_Root_CA_3_G3.pem Adding debian:SSL.com_EV_Root_Certification_Authority_ECC.pem Adding debian:SSL.com_EV_Root_Certification_Authority_RSA_R2.pem Adding debian:SSL.com_Root_Certification_Authority_ECC.pem Adding debian:SSL.com_Root_Certification_Authority_RSA.pem Adding debian:SSL.com_TLS_ECC_Root_CA_2022.pem Adding debian:SSL.com_TLS_RSA_Root_CA_2022.pem Adding debian:SZAFIR_ROOT_CA2.pem Adding debian:Sectigo_Public_Server_Authentication_Root_E46.pem Adding debian:Sectigo_Public_Server_Authentication_Root_R46.pem Adding debian:SecureSign_RootCA11.pem Adding debian:SecureTrust_CA.pem Adding debian:Secure_Global_CA.pem Adding debian:Security_Communication_ECC_RootCA1.pem Adding debian:Security_Communication_RootCA2.pem Adding debian:Security_Communication_RootCA3.pem Adding debian:Security_Communication_Root_CA.pem Adding debian:Starfield_Class_2_CA.pem Adding debian:Starfield_Root_Certificate_Authority_-_G2.pem Adding debian:Starfield_Services_Root_Certificate_Authority_-_G2.pem Adding debian:SwissSign_Gold_CA_-_G2.pem Adding debian:SwissSign_Silver_CA_-_G2.pem Adding debian:T-TeleSec_GlobalRoot_Class_2.pem Adding debian:T-TeleSec_GlobalRoot_Class_3.pem Adding debian:TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem Adding debian:TWCA_Global_Root_CA.pem Adding debian:TWCA_Root_Certification_Authority.pem Adding debian:TeliaSonera_Root_CA_v1.pem Adding debian:Telia_Root_CA_v2.pem Adding debian:TrustAsia_Global_Root_CA_G3.pem Adding debian:TrustAsia_Global_Root_CA_G4.pem Adding debian:Trustwave_Global_Certification_Authority.pem Adding debian:Trustwave_Global_ECC_P256_Certification_Authority.pem Adding debian:Trustwave_Global_ECC_P384_Certification_Authority.pem Adding debian:TunTrust_Root_CA.pem Adding debian:UCA_Extended_Validation_Root.pem Adding debian:UCA_Global_G2_Root.pem Adding debian:USERTrust_ECC_Certification_Authority.pem Adding debian:USERTrust_RSA_Certification_Authority.pem Adding debian:XRamp_Global_CA_Root.pem Adding debian:certSIGN_ROOT_CA.pem Adding debian:certSIGN_Root_CA_G2.pem Adding debian:e-Szigno_Root_CA_2017.pem Adding debian:ePKI_Root_Certification_Authority.pem Adding debian:emSign_ECC_Root_CA_-_C3.pem Adding debian:emSign_ECC_Root_CA_-_G3.pem Adding debian:emSign_Root_CA_-_C1.pem Adding debian:emSign_Root_CA_-_G1.pem Adding debian:vTrus_ECC_Root_CA.pem Adding debian:vTrus_Root_CA.pem done. Setting up default-jre-headless (2:1.17-75) ... Setting up yui-compressor (2.4.8-3) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Processing triggers for ca-certificates-java (20240118) ... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/wapiti-3.0.4+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../wapiti_3.0.4+dfsg-2_source.changes dpkg-buildpackage: info: source package wapiti dpkg-buildpackage: info: source version 3.0.4+dfsg-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Sophie Brun dpkg-source --before-build . dpkg-buildpackage: info: host architecture armhf debian/rules clean dh clean --with python3 --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild I: pybuild base:311: python3.11 setup.py clean /usr/lib/python3/dist-packages/setuptools/__init__.py:84: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated. !! ******************************************************************************** Requirements should be satisfied by a PEP 517 installer. If you are using pip, you can try `pip install --use-pep517`. ******************************************************************************** !! dist.fetch_build_eggs(dist.setup_requires) WARNING: The wheel package is not available. running clean removing '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build' (and everything under it) 'build/bdist.linux-armv7l' does not exist -- can't clean it 'build/scripts-3.11' does not exist -- can't clean it dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --with python3 --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild I: pybuild base:311: python3.11 setup.py config /usr/lib/python3/dist-packages/setuptools/__init__.py:84: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated. !! ******************************************************************************** Requirements should be satisfied by a PEP 517 installer. If you are using pip, you can try `pip install --use-pep517`. ******************************************************************************** !! dist.fetch_build_eggs(dist.setup_requires) WARNING: The wheel package is not available. running config debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/wapiti-3.0.4+dfsg' # rebuild the *.mo rm -f wapitiCore/config/language/*/LC_MESSAGES/wapiti.mo cd wapitiCore/language_sources; \ for f in *.po; do \ lang=$(echo $f | cut -d '.' -f1); \ if [ $lang != sav_en ]; then \ msgfmt $f -o "../data/language/$lang/LC_MESSAGES/wapiti.mo"; \ fi; \ done dh_auto_build I: pybuild base:311: /usr/bin/python3 setup.py build /usr/lib/python3/dist-packages/setuptools/__init__.py:84: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated. !! ******************************************************************************** Requirements should be satisfied by a PEP 517 installer. If you are using pip, you can try `pip install --use-pep517`. ******************************************************************************** !! dist.fetch_build_eggs(dist.setup_requires) WARNING: The wheel package is not available. running build running build_py creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore copying wapitiCore/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore copying wapitiCore/moon.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests copying tests/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main copying wapitiCore/main/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main copying wapitiCore/main/wapiti.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main copying wapitiCore/main/getcookie.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report copying wapitiCore/report/txtreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report copying wapitiCore/report/xmlreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report copying wapitiCore/report/htmlreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report copying wapitiCore/report/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report copying wapitiCore/report/reportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report copying wapitiCore/report/jsonreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_csrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_exec.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_http_headers.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/attack.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_redirect.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_nikto.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_shellshock.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_brute_login_form.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_crlf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_xss.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_buster.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_csp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_wapp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_ssrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_file.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_cookieflags.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_methods.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_blindsql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_permanentxss.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_backup.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_xxe.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_htaccess.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack copying wapitiCore/attack/mod_sql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/wappalyzer copying wapitiCore/wappalyzer/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/wappalyzer copying wapitiCore/wappalyzer/wappalyzer.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/wappalyzer creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/csrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/ssrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/csp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/file.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/xss.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/resource_consumption.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/xxe.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/dangerous_resource.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/redirect.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/http_headers.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/credentials.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/blindsql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/exec.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/crlf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/backup.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/secure_cookie.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/internal_error.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/sql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/http_only.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/fingerprint.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions copying wapitiCore/definitions/htaccess.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language copying wapitiCore/language/language.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language copying wapitiCore/language/vulnerability.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language copying wapitiCore/language/logger.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language copying wapitiCore/language/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/jsoncookie.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/swf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/page.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/lamejs.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/csp_utils.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/xss_utils.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/web.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/sqlite_persister.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net copying wapitiCore/net/crawler.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser copying wapitiCore/net/jsparser/pull_jsparser3.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser copying wapitiCore/net/jsparser/jsparser3.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser copying wapitiCore/net/jsparser/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/endpoint copying tests/endpoint/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/endpoint copying tests/endpoint/test_endpoint.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/endpoint creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mutator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_csrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_blindsql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_buster.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_htaccess.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_backup.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_shellshock.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_sql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_nikto.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_xss_advanced.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_crlf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_methods.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_exec.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_csp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_xxe.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_file.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_wapp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_ssrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_redirect.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack copying tests/attack/test_mod_xss_basics.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web copying tests/web/test_scope.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web copying tests/web/test_explorer.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web copying tests/web/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web copying tests/web/test_request.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web copying tests/web/test_network_issues.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web copying tests/web/test_persister.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/cli copying tests/cli/test_options.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/cli copying tests/cli/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/cli creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/payload copying tests/payload/test_payload_reader.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/payload copying tests/payload/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/payload creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/test_html_formaction.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/test_http_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/test_json_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/test_html_forms.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/test_html_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/test_xss_utils.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers copying tests/parsers/test_js_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers running egg_info creating wapiti3.egg-info writing wapiti3.egg-info/PKG-INFO writing dependency_links to wapiti3.egg-info/dependency_links.txt writing entry points to wapiti3.egg-info/entry_points.txt writing requirements to wapiti3.egg-info/requires.txt writing top-level names to wapiti3.egg-info/top_level.txt writing manifest file 'wapiti3.egg-info/SOURCES.txt' reading manifest file 'wapiti3.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files found matching 'wapitiCore/language_sources/*.sh' warning: no previously-included files found matching 'wapitiCore/language_sources/file_list.txt' adding license file 'LICENSE' writing manifest file 'wapiti3.egg-info/SOURCES.txt' /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.attacks' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.attacks' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.attacks' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.attacks' to be distributed and are already explicitly excluding 'wapitiCore.data.attacks' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.de.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.de.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.de.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.de.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.de.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.en.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.en.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.en.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.en.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.en.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.es.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.es.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.es.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.es.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.es.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.fr.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.fr.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.fr.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.fr.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.fr.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.ms.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.ms.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.ms.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.ms.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.ms.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.pt.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.pt.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.pt.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.pt.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.pt.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.zh.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.zh.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.zh.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.zh.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.zh.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.language_sources' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.language_sources' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.language_sources' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.language_sources' to be distributed and are already explicitly excluding 'wapitiCore.language_sources' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.report_template' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.report_template' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.report_template' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.report_template' to be distributed and are already explicitly excluding 'wapitiCore.report_template' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.report_template.css' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.report_template.css' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.report_template.css' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.report_template.css' to be distributed and are already explicitly excluding 'wapitiCore.report_template.css' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/backupPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/blindSQLPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/busterPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/execPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/fileHandlingPayloads.ini -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/incorrectMessage.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/passwords.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/successMessage.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/users.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/xssPayloads.ini -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks copying wapitiCore/data/attacks/xxePayloads.ini -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/de creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/de/LC_MESSAGES copying wapitiCore/data/language/de/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/de/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/en creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/en/LC_MESSAGES copying wapitiCore/data/language/en/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/en/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/es creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/es/LC_MESSAGES copying wapitiCore/data/language/es/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/es/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/fr creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/fr/LC_MESSAGES copying wapitiCore/data/language/fr/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/fr/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/ms creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/ms/LC_MESSAGES copying wapitiCore/data/language/ms/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/ms/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/pt creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/pt/LC_MESSAGES copying wapitiCore/data/language/pt/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/pt/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/zh creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/zh/LC_MESSAGES copying wapitiCore/data/language/zh/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/zh/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/de.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/en.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/es.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/fr.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/ms.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/pt.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/template.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources copying wapitiCore/language_sources/zh.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template copying wapitiCore/report_template/logo_clear.png -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template copying wapitiCore/report_template/report.html -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template creating /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template/css copying wapitiCore/report_template/css/kube.min.css -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template/css copying wapitiCore/report_template/css/master.css -> /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template/css running build_scripts creating build creating build/scripts-3.11 copying and adjusting bin/wapiti -> build/scripts-3.11 copying and adjusting bin/wapiti-getcookie -> build/scripts-3.11 changing mode of build/scripts-3.11/wapiti from 644 to 755 changing mode of build/scripts-3.11/wapiti-getcookie from 644 to 755 make[1]: Leaving directory '/build/reproducible-path/wapiti-3.0.4+dfsg' debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/wapiti-3.0.4+dfsg' dh_auto_test || true I: pybuild base:311: cd /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build; python3.11 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.11.9, pytest-7.4.4, pluggy-1.5.0 rootdir: /build/reproducible-path/wapiti-3.0.4+dfsg collected 118 items tests/attack/test_mod_backup.py . [ 0%] tests/attack/test_mod_blindsql.py EEEE [ 4%] tests/attack/test_mod_buster.py . [ 5%] tests/attack/test_mod_crlf.py . [ 5%] tests/attack/test_mod_csp.py ... [ 8%] tests/attack/test_mod_csrf.py E [ 9%] tests/attack/test_mod_exec.py EEE [ 11%] tests/attack/test_mod_file.py EEEEEE [ 16%] tests/attack/test_mod_htaccess.py . [ 17%] tests/attack/test_mod_methods.py . [ 18%] tests/attack/test_mod_nikto.py F [ 19%] tests/attack/test_mod_redirect.py EE [ 21%] tests/attack/test_mod_shellshock.py . [ 22%] tests/attack/test_mod_sql.py ... [ 24%] tests/attack/test_mod_ssrf.py . [ 25%] tests/attack/test_mod_wapp.py .FFFFFFF [ 32%] tests/attack/test_mod_xss_advanced.py EEEEEEEEEEEEEEEEEE [ 47%] tests/attack/test_mod_xss_basics.py . [ 48%] tests/attack/test_mod_xxe.py EEEEEEE [ 54%] tests/attack/test_mutator.py .. [ 55%] tests/cli/test_options.py . [ 56%] tests/endpoint/test_endpoint.py EEE [ 59%] tests/parsers/test_html_formaction.py F [ 60%] tests/parsers/test_html_forms.py F. [ 61%] tests/parsers/test_html_parser.py FFFFFFFFF [ 69%] tests/parsers/test_http_parser.py . [ 70%] tests/parsers/test_js_parser.py F.. [ 72%] tests/parsers/test_json_parser.py . [ 73%] tests/parsers/test_xss_utils.py .................. [ 88%] tests/payload/test_payload_reader.py . [ 89%] tests/web/test_explorer.py EE [ 91%] tests/web/test_network_issues.py EE [ 93%] tests/web/test_persister.py ..F. [ 96%] tests/web/test_request.py F. [ 98%] tests/web/test_scope.py .. [100%] ==================================== ERRORS ==================================== __________________ ERROR at setup of test_blindsql_detection ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65082", "-a", "-t", test_directory]) tests/attack/test_mod_blindsql.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65082', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ________________ ERROR at setup of test_blindsql_false_positive ________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65082", "-a", "-t", test_directory]) tests/attack/test_mod_blindsql.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65082', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _____________ ERROR at setup of test_false_positive_request_count ______________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65082", "-a", "-t", test_directory]) tests/attack/test_mod_blindsql.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65082', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ______________ ERROR at setup of test_true_positive_request_count ______________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65082", "-a", "-t", test_directory]) tests/attack/test_mod_blindsql.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65082', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ______________________ ERROR at setup of test_csrf_cases _______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/csrf/") > proc = Popen(["php", "-S", "127.0.0.1:65086", "-a", "-t", test_directory]) tests/attack/test_mod_csrf.py:43: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65086', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/csrf/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ______________________ ERROR at setup of test_whole_stuff ______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65083", "-a", "-t", test_directory]) tests/attack/test_mod_exec.py:47: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65083', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _______________________ ERROR at setup of test_detection _______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65083", "-a", "-t", test_directory]) tests/attack/test_mod_exec.py:47: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65083', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ____________________ ERROR at setup of test_blind_detection ____________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65083", "-a", "-t", test_directory]) tests/attack/test_mod_exec.py:47: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65083', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_inclusion_detection __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65085", "-a", "-t", test_directory]) tests/attack/test_mod_file.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65085', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ________________ ERROR at setup of test_warning_false_positive _________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65085", "-a", "-t", test_directory]) tests/attack/test_mod_file.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65085', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _______________________ ERROR at setup of test_no_crash ________________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65085", "-a", "-t", test_directory]) tests/attack/test_mod_file.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65085', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ______________ ERROR at setup of test_prefix_and_suffix_detection ______________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65085", "-a", "-t", test_directory]) tests/attack/test_mod_file.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65085', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _______________ ERROR at setup of test_warning_false_postitives ________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65085", "-a", "-t", test_directory]) tests/attack/test_mod_file.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65085', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_warning_postitives ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65085", "-a", "-t", test_directory]) tests/attack/test_mod_file.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65085', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_redirect_detection ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", test_directory]) tests/attack/test_mod_redirect.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ______________________ ERROR at setup of test_whole_stuff ______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", test_directory]) tests/attack/test_mod_redirect.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _________________ ERROR at setup of test_title_false_positive __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ____________________ ERROR at setup of test_title_positive _____________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _________________ ERROR at setup of test_script_filter_bypass __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ___________________ ERROR at setup of test_attr_quote_escape ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _______________ ERROR at setup of test_attr_double_quote_escape ________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ______________________ ERROR at setup of test_attr_escape ______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ____________________ ERROR at setup of test_tag_name_escape ____________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ________________ ERROR at setup of test_partial_tag_name_escape ________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _________________ ERROR at setup of test_xss_inside_tag_input __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_xss_inside_tag_link __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ________________ ERROR at setup of test_xss_uppercase_no_script ________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ___________________ ERROR at setup of test_frame_src_escape ____________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_frame_src_no_escape __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_bad_separator_used ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ___________________ ERROR at setup of test_escape_with_style ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_rare_tag_and_event ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_xss_with_strong_csp __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ___________________ ERROR at setup of test_xss_with_weak_csp ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/xss/") > proc = Popen(["php", "-S", "127.0.0.1:65081", "-a", "-t", test_directory]) tests/attack/test_mod_xss_advanced.py:42: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65081', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/xss/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ______________________ ERROR at setup of test_direct_body ______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65084", "-a", "-t", test_directory]) tests/attack/test_mod_xxe.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65084', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _____________________ ERROR at setup of test_direct_param ______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65084", "-a", "-t", test_directory]) tests/attack/test_mod_xxe.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65084', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_direct_query_string __________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65084", "-a", "-t", test_directory]) tests/attack/test_mod_xxe.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65084', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _____________________ ERROR at setup of test_direct_upload _____________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65084", "-a", "-t", test_directory]) tests/attack/test_mod_xxe.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65084', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ___________________ ERROR at setup of test_out_of_band_body ____________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65084", "-a", "-t", test_directory]) tests/attack/test_mod_xxe.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65084', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ___________________ ERROR at setup of test_out_of_band_param ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65084", "-a", "-t", test_directory]) tests/attack/test_mod_xxe.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65084', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _______________ ERROR at setup of test_out_of_band_query_string ________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65084", "-a", "-t", test_directory]) tests/attack/test_mod_xxe.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65084', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _________________________ ERROR at setup of test_ssrf __________________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) endpoint_directory = os.path.join(base_dir, "..", "endpoint") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", endpoint_directory]) tests/endpoint/test_endpoint.py:23: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../endpoint'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ________________________ ERROR at setup of test_xxe_dtd ________________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) endpoint_directory = os.path.join(base_dir, "..", "endpoint") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", endpoint_directory]) tests/endpoint/test_endpoint.py:23: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../endpoint'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _______________________ ERROR at setup of test_xxe_store _______________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) endpoint_directory = os.path.join(base_dir, "..", "endpoint") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", endpoint_directory]) tests/endpoint/test_endpoint.py:23: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../endpoint'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError _______________________ ERROR at setup of test_qs_limit ________________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/explorer/") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", test_directory]) tests/web/test_explorer.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/explorer/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError __________________ ERROR at setup of test_explorer_filtering ___________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/explorer/") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", test_directory]) tests/web/test_explorer.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/explorer/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ____________________ ERROR at setup of test_chunked_timeout ____________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", test_directory]) tests/web/test_network_issues.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError ________________________ ERROR at setup of test_timeout ________________________ @pytest.fixture(autouse=True) def run_around_tests(): base_dir = os.path.dirname(sys.modules["wapitiCore"].__file__) test_directory = os.path.join(base_dir, "..", "tests/data/") > proc = Popen(["php", "-S", "127.0.0.1:65080", "-a", "-t", test_directory]) tests/web/test_network_issues.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = args = ['php', '-S', '127.0.0.1:65080', '-a', '-t', '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/../tests/data/'] executable = b'php', preexec_fn = None, close_fds = True, pass_fds = () cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1 errwrite = -1, restore_signals = True, gid = None, gids = None, uid = None umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) if err_msg == "noexec:chdir": err_msg = "" # The error must be from chdir(cwd). err_filename = cwd elif err_msg == "noexec": err_msg = "" err_filename = None else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) if err_filename is not None: > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'php' /usr/lib/python3.11/subprocess.py:1955: FileNotFoundError =================================== FAILURES =================================== _______________________________ test_whole_stuff _______________________________ @responses.activate def test_whole_stuff(): # Test attacking all kind of parameter without crashing responses.add_passthru("https://raw.githubusercontent.com/wapiti-scanner/nikto/master/program/databases/db_tests") responses.add( responses.GET, url="http://perdu.com/cgi-bin/a1disp3.cgi?../../../../../../../../../../etc/passwd", body="root:0:0:", ) responses.add( responses.GET, url=re.compile(r"http://perdu.com/*"), body="Not found", status=404 ) persister = FakePersister() request = Request("http://perdu.com/") request.path_id = 1 request.status = 200 request.set_headers({"content-type": "text/html"}) persister.requests.append(request) crawler = Crawler("http://perdu.com/", timeout=1) options = {"timeout": 10, "level": 2} logger = Mock() module = mod_nikto(crawler, persister, logger, options) module.verbose = 2 module.do_get = True for __ in module.attack(): pass > assert len(persister.vulnerabilities) == 1 E assert 0 == 1 E + where 0 = len([]) E + where [] = .vulnerabilities tests/attack/test_mod_nikto.py:79: AssertionError ______________________________ test_url_detection ______________________________ @responses.activate def test_url_detection(): # Test if application is detected using its url regex responses.add( responses.GET, url="http://perdu.com/owa/auth/logon.aspx", body="Vous Etes Perdu ?

Perdu sur l'Internet ?

\

Pas de panique, on va vous aider

\
    * <----- vous êtes ici
" ) persister = FakePersister() request = Request("http://perdu.com/owa/auth/logon.aspx") request.path_id = 1 persister.requests.append(request) crawler = Crawler("http://perdu.com/") options = {"timeout": 10, "level": 2} logger = Mock() module = mod_wapp(crawler, persister, logger, options) module.verbose = 2 for __ in module.attack(): pass > assert persister.additionals E assert [] E + where [] = .additionals tests/attack/test_mod_wapp.py:99: AssertionError ----------------------------- Captured stdout call ----------------------------- Problem with local wapp database. Downloading from the web... Error downloading wapp database. [+] GET http://perdu.com/owa/auth/logon.aspx (0) [Errno 2] No such file or directory: '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/.wapiti/config/apps.json' Try using --store-session option, or update apps.json using --update option. _____________________________ test_html_detection ______________________________ @responses.activate def test_html_detection(): # Test if application is detected using its html regex responses.add( responses.GET, url="http://perdu.com/", body="FishEye 2.8.4 \

Perdu sur l'Internet ?

\

Pas de panique, on va vous aider

\ " ) persister = FakePersister() request = Request("http://perdu.com/") request.path_id = 1 persister.requests.append(request) crawler = Crawler("http://perdu.com/") options = {"timeout": 10, "level": 2} logger = Mock() module = mod_wapp(crawler, persister, logger, options) module.verbose = 2 for __ in module.attack(): pass > assert persister.additionals E assert [] E + where [] = .additionals tests/attack/test_mod_wapp.py:131: AssertionError ----------------------------- Captured stdout call ----------------------------- Problem with local wapp database. Downloading from the web... Error downloading wapp database. [+] GET http://perdu.com/ (0) [Errno 2] No such file or directory: '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/.wapiti/config/apps.json' Try using --store-session option, or update apps.json using --update option. ____________________________ test_script_detection _____________________________ @responses.activate def test_script_detection(): # Test if application is detected using its script regex responses.add( responses.GET, url="http://perdu.com/", body="Vous Etes Perdu ?

Perdu sur l'Internet ?

\

Pas de panique, on va vous aider

\
    * <----- vous êtes ici
\ \ " ) persister = FakePersister() request = Request("http://perdu.com/") request.path_id = 1 persister.requests.append(request) crawler = Crawler("http://perdu.com/") options = {"timeout": 10, "level": 2} logger = Mock() module = mod_wapp(crawler, persister, logger, options) module.verbose = 2 for __ in module.attack(): pass > assert persister.additionals E assert [] E + where [] = .additionals tests/attack/test_mod_wapp.py:164: AssertionError ----------------------------- Captured stdout call ----------------------------- Problem with local wapp database. Downloading from the web... Error downloading wapp database. [+] GET http://perdu.com/ (0) [Errno 2] No such file or directory: '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/.wapiti/config/apps.json' Try using --store-session option, or update apps.json using --update option. ____________________________ test_cookies_detection ____________________________ @responses.activate def test_cookies_detection(): # Test if application is detected using its cookies regex responses.add( responses.GET, url="http://perdu.com/", body="Vous Etes Perdu ?

Perdu sur l'Internet ?

\

Pas de panique, on va vous aider

\
    * <----- vous êtes ici
\ ", headers={"Set-Cookie": "ci_csrf_token=4.1"} ) persister = FakePersister() request = Request("http://perdu.com/") request.path_id = 1 persister.requests.append(request) crawler = Crawler("http://perdu.com/") options = {"timeout": 10, "level": 2} logger = Mock() module = mod_wapp(crawler, persister, logger, options) module.verbose = 2 for __ in module.attack(): pass > assert persister.additionals E assert [] E + where [] = .additionals tests/attack/test_mod_wapp.py:197: AssertionError ----------------------------- Captured stdout call ----------------------------- Problem with local wapp database. Downloading from the web... Error downloading wapp database. [+] GET http://perdu.com/ (0) [Errno 2] No such file or directory: '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/.wapiti/config/apps.json' Try using --store-session option, or update apps.json using --update option. ____________________________ test_headers_detection ____________________________ @responses.activate def test_headers_detection(): # Test if application is detected using its headers regex responses.add( responses.GET, url="http://perdu.com/", body="Vous Etes Perdu ?

Perdu sur l'Internet ?

\

Pas de panique, on va vous aider

\
    * <----- vous êtes ici
\ ", headers={"Server": "Cherokee/1.3.4"} ) persister = FakePersister() request = Request("http://perdu.com/") request.path_id = 1 persister.requests.append(request) crawler = Crawler("http://perdu.com/") options = {"timeout": 10, "level": 2} logger = Mock() module = mod_wapp(crawler, persister, logger, options) module.verbose = 2 for __ in module.attack(): pass > assert persister.additionals E assert [] E + where [] = .additionals tests/attack/test_mod_wapp.py:230: AssertionError ----------------------------- Captured stdout call ----------------------------- Problem with local wapp database. Downloading from the web... Error downloading wapp database. [+] GET http://perdu.com/ (0) [Errno 2] No such file or directory: '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/.wapiti/config/apps.json' Try using --store-session option, or update apps.json using --update option. _____________________________ test_meta_detection ______________________________ @responses.activate def test_meta_detection(): # Test if application is detected using its meta regex responses.add( responses.GET, url="http://perdu.com/", body="Vous Etes Perdu ? \ \

Perdu sur l'Internet ?

\

Pas de panique, on va vous aider

\
    * <----- vous êtes ici
\ " ) persister = FakePersister() request = Request("http://perdu.com/") request.path_id = 1 persister.requests.append(request) crawler = Crawler("http://perdu.com/") options = {"timeout": 10, "level": 2} logger = Mock() module = mod_wapp(crawler, persister, logger, options) module.verbose = 2 for __ in module.attack(): pass > assert persister.additionals E assert [] E + where [] = .additionals tests/attack/test_mod_wapp.py:264: AssertionError ----------------------------- Captured stdout call ----------------------------- Problem with local wapp database. Downloading from the web... Error downloading wapp database. [+] GET http://perdu.com/ (0) [Errno 2] No such file or directory: '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/.wapiti/config/apps.json' Try using --store-session option, or update apps.json using --update option. ____________________________ test_implies_detection ____________________________ @responses.activate def test_implies_detection(): # Test for implied applications responses.add( responses.GET, url="http://perdu.com/", body="Vous Etes Perdu ?

Perdu sur l'Internet ?

\

Pas de panique, on va vous aider

\
    * <----- vous êtes ici
\ ", headers={"X-Generator": "Backdrop CMS 4.5"} ) persister = FakePersister() request = Request("http://perdu.com") request.path_id = 1 persister.requests.append(request) crawler = Crawler("http://perdu.com") options = {"timeout": 10, "level": 2} logger = Mock() module = mod_wapp(crawler, persister, logger, options) module.verbose = 2 for __ in module.attack(): pass > assert persister.additionals E assert [] E + where [] = .additionals tests/attack/test_mod_wapp.py:297: AssertionError ----------------------------- Captured stdout call ----------------------------- Problem with local wapp database. Downloading from the web... Error downloading wapp database. [+] GET http://perdu.com (0) [Errno 2] No such file or directory: '/build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/.wapiti/config/apps.json' Try using --store-session option, or update apps.json using --update option. _______________________________ test_formactions _______________________________ @responses.activate def test_formactions(): > with open("tests/data/formactions.html") as form_action: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/formactions.html' tests/parsers/test_html_formaction.py:9: FileNotFoundError __________________________________ test_forms __________________________________ @responses.activate def test_forms(): > with open("tests/data/forms.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/forms.html' tests/parsers/test_html_forms.py:9: FileNotFoundError ______________________________ test_absolute_root ______________________________ @responses.activate def test_absolute_root(): > with open("tests/data/absolute_root_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/absolute_root_links.html' tests/parsers/test_html_parser.py:9: FileNotFoundError ______________________________ test_relative_root ______________________________ @responses.activate def test_relative_root(): > with open("tests/data/relative_root_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/relative_root_links.html' tests/parsers/test_html_parser.py:25: FileNotFoundError _____________________________ test_relative_links ______________________________ @responses.activate def test_relative_links(): > with open("tests/data/relative_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/relative_links.html' tests/parsers/test_html_parser.py:42: FileNotFoundError _______________________________ test_other_links _______________________________ @responses.activate def test_other_links(): > with open("tests/data/other_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/other_links.html' tests/parsers/test_html_parser.py:72: FileNotFoundError _______________________________ test_extra_links _______________________________ @responses.activate def test_extra_links(): > with open("tests/data/extra_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/extra_links.html' tests/parsers/test_html_parser.py:106: FileNotFoundError __________________________________ test_meta ___________________________________ @responses.activate def test_meta(): > with open("tests/data/meta.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/meta.html' tests/parsers/test_html_parser.py:144: FileNotFoundError ___________________________ test_base_relative_links ___________________________ @responses.activate def test_base_relative_links(): > with open("tests/data/base_relative_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/base_relative_links.html' tests/parsers/test_html_parser.py:166: FileNotFoundError ____________________________ test_base_extra_links _____________________________ @responses.activate def test_base_extra_links(): > with open("tests/data/base_extra_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/base_extra_links.html' tests/parsers/test_html_parser.py:200: FileNotFoundError ____________________________ test_base_other_links _____________________________ @responses.activate def test_base_other_links(): > with open("tests/data/base_other_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/base_other_links.html' tests/parsers/test_html_parser.py:237: FileNotFoundError ________________________________ test_js_parser ________________________________ @responses.activate def test_js_parser(): > with open("tests/data/js_links.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/js_links.html' tests/parsers/test_js_parser.py:10: FileNotFoundError _____________________________ test_persister_forms _____________________________ @responses.activate def test_persister_forms(): > with open("tests/data/forms.html") as data_body: E FileNotFoundError: [Errno 2] No such file or directory: 'tests/data/forms.html' tests/web/test_persister.py:139: FileNotFoundError _____________________________ test_request_object ______________________________ self = def _new_conn(self): """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ extra_kw = {} if self.source_address: extra_kw["source_address"] = self.source_address if self.socket_options: extra_kw["socket_options"] = self.socket_options try: > conn = connection.create_connection( (self._dns_host, self.port), self.timeout, **extra_kw ) /usr/lib/python3/dist-packages/urllib3/connection.py:174: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/urllib3/util/connection.py:96: in create_connection raise err _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = ('127.0.0.1', 9), timeout = 10.0, source_address = None socket_options = None def create_connection( address, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, source_address=None, socket_options=None, ): """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, port)``) and return the socket object. Passing the optional *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`socket.getdefaulttimeout` is used. If *source_address* is set it must be a tuple of (host, port) for the socket to bind as a source address before making the connection. An host of '' or port 0 tells the OS to use the default. """ host, port = address if host.startswith("["): host = host.strip("[]") err = None # Using the value from allowed_gai_family() in the context of getaddrinfo lets # us select whether to work with IPv4 DNS records, IPv6 records, or both. # The original create_connection function always returns all records. family = allowed_gai_family() try: host.encode("idna") except UnicodeError: return six.raise_from( LocationParseError("'%s', label empty or too long" % host), None ) for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket.socket(af, socktype, proto) # If provided, set socket level options before connecting. _set_socket_options(sock, socket_options) if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT: sock.settimeout(timeout) if source_address: sock.bind(source_address) > sock.connect(sa) E ConnectionRefusedError: [Errno 111] Connection refused /usr/lib/python3/dist-packages/urllib3/util/connection.py:86: ConnectionRefusedError During handling of the above exception, another exception occurred: self = method = 'POST', url = 'http://httpbin.org/post?a=b', body = '{"z": 1, "a": 2}' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0', 'Accept-Encoding': 'gzip, deflate,...8', 'Connection': 'keep-alive', 'Accept-Language': 'en-US', 'Content-Type': 'application/json', 'Content-Length': '16'} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None) redirect = False, assert_same_host = False timeout = Timeout(connect=10.0, read=10.0, total=None), pool_timeout = None release_conn = False, chunked = False, body_pos = None response_kw = {'decode_content': False, 'preload_content': False} parsed_url = Url(scheme='http', auth=None, host='httpbin.org', port=None, path='/post', query='a=b', fragment=None) destination_scheme = 'http', conn = None, release_this_conn = True http_tunnel_required = False, err = None, clean_exit = False def urlopen( self, method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=_Default, pool_timeout=None, release_conn=None, chunked=False, body_pos=None, **response_kw ): """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method provided by :class:`.RequestMethods`, such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``response_kw.get('preload_content', True)``. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. :param \\**response_kw: Additional parameters are passed to :meth:`urllib3.response.HTTPResponse.from_httplib` """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = response_kw.get("preload_content", True) # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = six.ensure_str(_encode_target(url)) else: url = six.ensure_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() headers.update(self.proxy_headers) # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout is_new_proxy_conn = self.proxy is not None and not getattr( conn, "sock", None ) if is_new_proxy_conn and http_tunnel_required: self._prepare_proxy(conn) # Make the request on the httplib connection object. > httplib_response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, ) /usr/lib/python3/dist-packages/urllib3/connectionpool.py:716: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/urllib3/connectionpool.py:417: in _make_request conn.request(method, url, **httplib_request_kw) /usr/lib/python3/dist-packages/urllib3/connection.py:244: in request super(HTTPConnection, self).request(method, url, body=body, headers=headers) /usr/lib/python3.11/http/client.py:1303: in request self._send_request(method, url, body, headers, encode_chunked) /usr/lib/python3.11/http/client.py:1349: in _send_request self.endheaders(body, encode_chunked=encode_chunked) /usr/lib/python3.11/http/client.py:1298: in endheaders self._send_output(message_body, encode_chunked=encode_chunked) /usr/lib/python3.11/http/client.py:1058: in _send_output self.send(msg) /usr/lib/python3.11/http/client.py:996: in send self.connect() /usr/lib/python3/dist-packages/urllib3/connection.py:205: in connect conn = self._new_conn() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _new_conn(self): """Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ extra_kw = {} if self.source_address: extra_kw["source_address"] = self.source_address if self.socket_options: extra_kw["socket_options"] = self.socket_options try: conn = connection.create_connection( (self._dns_host, self.port), self.timeout, **extra_kw ) except SocketTimeout: raise ConnectTimeoutError( self, "Connection to %s timed out. (connect timeout=%s)" % (self.host, self.timeout), ) except SocketError as e: > raise NewConnectionError( self, "Failed to establish a new connection: %s" % e ) E urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused /usr/lib/python3/dist-packages/urllib3/connection.py:186: NewConnectionError During handling of the above exception, another exception occurred: self = request = , stream = False timeout = Timeout(connect=10.0, read=10.0, total=None), verify = False cert = None proxies = OrderedDict([('no', 'localhost'), ('https', 'https://127.0.0.1:9/'), ('http', 'http://127.0.0.1:9/')]) def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) /usr/lib/python3/dist-packages/requests/adapters.py:486: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/urllib3/connectionpool.py:800: in urlopen retries = retries.increment( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None) method = 'POST', url = 'http://httpbin.org/post?a=b', response = None error = ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) _pool = _stacktrace = def increment( self, method=None, url=None, response=None, error=None, _pool=None, _stacktrace=None, ): """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.HTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise six.reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise six.reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or not self._is_method_retryable(method): raise six.reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" redirect_location = response.get_redirect_location() status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): > raise MaxRetryError(_pool, url, error or ResponseError(cause)) E urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=9): Max retries exceeded with url: http://httpbin.org/post?a=b (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))) /usr/lib/python3/dist-packages/urllib3/util/retry.py:592: MaxRetryError During handling of the above exception, another exception occurred: def test_request_object(): res1 = Request( "http://httpbin.org/post?var1=a&var2=b", post_params=[['post1', 'c'], ['post2', 'd']] ) res2 = Request( "http://httpbin.org/post?var1=a&var2=z", post_params=[['post1', 'c'], ['post2', 'd']] ) res3 = Request( "http://httpbin.org/post?var1=a&var2=b", post_params=[['post1', 'c'], ['post2', 'z']] ) res4 = Request( "http://httpbin.org/post?var1=a&var2=b", post_params=[['post1', 'c'], ['post2', 'd']] ) res5 = Request( "http://httpbin.org/post?var1=z&var2=b", post_params=[['post1', 'c'], ['post2', 'd']] ) res6 = Request( "http://httpbin.org/post?var3=z&var2=b", post_params=[['post1', 'c'], ['post2', 'd']] ) res7 = Request( "http://httpbin.org/post?var1=z&var2=b&var4=e", post_params=[['post1', 'c'], ['post2', 'd']] ) res8 = Request( "http://httpbin.org/post?var2=d&var1=z", post_params=[['post1', 'c'], ['post2', 'd']] ) res10 = Request( "http://httpbin.org/post?qs0", post_params=[['post1', 'c'], ['post2', 'd']] ) res11 = Request( "http://httpbin.org/post?qs1", post_params=[['post1', 'c'], ['post2', 'd']] ) res12 = Request( "http://httpbin.org/post?qs1", post_params=[['post1', 'c'], ['post2', 'd']], file_params=[['file1', ['fname1', 'content']], ['file2', ['fname2', 'content']]] ) res13 = Request("https://www.youtube.com/user/OneMinuteSilenceBand/videos") res14 = Request("https://www.youtube.com/user/OneMinuteSilenceBand/") res15 = Request("https://duckduckgo.com/") res16 = Request("https://duckduckgo.com/", post_params=[['q', 'Kung Fury']]) res17 = Request("http://example.com:8080/dir/?x=3") res18 = Request( "http://httpbin.org/get?a=1", get_params=[['get1', 'c'], ['get2', 'd']] ) assert res1 < res2 assert res2 > res3 assert res1 < res3 assert res1 == res4 assert hash(res1) == hash(res4) res4.link_depth = 5 assert hash(res1) == hash(res4) assert res1 != res2 assert res2 >= res1 assert res1 <= res3 assert res13.file_name == "videos" assert res10.path == "http://httpbin.org/post" assert res10.file_name == "post" # This one is important as it could break attacks on query string assert res10.url == "http://httpbin.org/post?qs0" assert res13.parent_dir == res14.url assert res15.is_root assert res15.parent_dir == res15.url assert res13.dir_name == res14.url assert res14.dir_name == res14.url assert res15.dir_name == res15.url assert res15 != res16 query_list = [res15] assert res16 not in query_list assert res17.dir_name == "http://example.com:8080/dir/" assert res18.url == "http://httpbin.org/get?get1=c&get2=d" assert res17.hostname == "example.com:8080" assert res1.encoded_get_keys == res8.encoded_get_keys assert res17.encoded_get_keys == "x" assert res16.encoded_get_keys == "" assert len(res12) == 5 assert res12.encoded_get_keys == "qs1" assert res5.hash_params == res8.hash_params assert res7.hash_params != res8.hash_params print("Tests were successful, now launching representations") print("=== Basic representation follows ===") print(res1) print("=== cURL representation follows ===") print(res1.curl_repr) print("=== HTTP representation follows ===") print(res1.http_repr()) print("=== POST parameters as an array ===") print(res1.post_params) print("=== POST keys encoded as string ===") print(res1.encoded_post_keys) print("=== Upload HTTP representation ===") print(res12.http_repr()) print("=== Upload basic representation ===") print(res12) print("=== Upload cURL representation ===") print(res12.curl_repr) print("=== HTTP GET keys as a tuple ===") print(res1.get_keys) print("=== HTTP POST keys as a tuple ===") print(res1.post_keys) print("=== HTTP files keys as a tuple ===") print(res12.file_keys) print('') json_req = Request( "http://httpbin.org/post?a=b", post_params=json.dumps({"z": 1, "a": 2}), enctype="application/json" ) crawler = Crawler("http://httpbin.org/") > page = crawler.send(json_req) tests/web/test_request.py:144: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wapitiCore/net/crawler.py:490: in send page = self.post(resource, headers=headers, follow_redirects=follow_redirects) wapitiCore/net/crawler.py:123: in inner_wrapper raise exception wapitiCore/net/crawler.py:117: in inner_wrapper value = function(*args, **kwargs) wapitiCore/net/crawler.py:443: in post raise exception wapitiCore/net/crawler.py:427: in post response = self._session.post( /usr/lib/python3/dist-packages/requests/sessions.py:637: in post return self.request("POST", url, data=data, json=json, **kwargs) /usr/lib/python3/dist-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) /usr/lib/python3/dist-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = request = , stream = False timeout = Timeout(connect=10.0, read=10.0, total=None), verify = False cert = None proxies = OrderedDict([('no', 'localhost'), ('https', 'https://127.0.0.1:9/'), ('http', 'http://127.0.0.1:9/')]) def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): > raise ProxyError(e, request=request) E requests.exceptions.ProxyError: HTTPConnectionPool(host='127.0.0.1', port=9): Max retries exceeded with url: http://httpbin.org/post?a=b (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))) /usr/lib/python3/dist-packages/requests/adapters.py:513: ProxyError ----------------------------- Captured stdout call ----------------------------- Tests were successful, now launching representations === Basic representation follows === POST http://httpbin.org/post?var1=a&var2=b (0) data: post1=c&post2=d === cURL representation follows === curl "http://httpbin.org/post?var1=a&var2=b" -d "post1=c&post2=d" === HTTP representation follows === POST /post?var1=a&var2=b HTTP/1.1 Host: httpbin.org Content-Type: application/x-www-form-urlencoded post1=c&post2=d === POST parameters as an array === [['post1', 'c'], ['post2', 'd']] === POST keys encoded as string === post1&post2 === Upload HTTP representation === POST /post?qs1 HTTP/1.1 Host: httpbin.org Content-Type: multipart/form-data; boundary=------------------------boundarystring ------------------------boundarystring Content-Disposition: form-data; name="post1" c ------------------------boundarystring Content-Disposition: form-data; name="post2" d ------------------------boundarystring Content-Disposition: form-data; name="file1"; filename="fname1" content ------------------------boundarystring Content-Disposition: form-data; name="file2"; filename="fname2" content ------------------------boundarystring-- === Upload basic representation === POST http://httpbin.org/post?qs1 (0) data: post1=c&post2=d files: file1=fname1&file2=fname2 === Upload cURL representation === curl "http://httpbin.org/post?qs1" -F "post1=c" -F "post2=d" -F "file1=@your_local_file;filename=fname1" -F "file2=@your_local_file;filename=fname2" === HTTP GET keys as a tuple === ('var1', 'var2') === HTTP POST keys as a tuple === ('post1', 'post2') === HTTP files keys as a tuple === ('file1', 'file2') =============================== warnings summary =============================== wapitiCore/language/language.py:40 /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/language.py:40: DeprecationWarning: 'locale.getdefaultlocale' is deprecated and slated for removal in Python 3.15. Use setlocale(), getencoding() and getlocale() instead. def_locale = locale.getdefaultlocale() # for example ('fr_FR', 'cp1252') -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/attack/test_mod_nikto.py::test_whole_stuff - assert 0 == 1 FAILED tests/attack/test_mod_wapp.py::test_url_detection - assert [] FAILED tests/attack/test_mod_wapp.py::test_html_detection - assert [] FAILED tests/attack/test_mod_wapp.py::test_script_detection - assert [] FAILED tests/attack/test_mod_wapp.py::test_cookies_detection - assert [] FAILED tests/attack/test_mod_wapp.py::test_headers_detection - assert [] FAILED tests/attack/test_mod_wapp.py::test_meta_detection - assert [] FAILED tests/attack/test_mod_wapp.py::test_implies_detection - assert [] FAILED tests/parsers/test_html_formaction.py::test_formactions - FileNotFound... FAILED tests/parsers/test_html_forms.py::test_forms - FileNotFoundError: [Err... FAILED tests/parsers/test_html_parser.py::test_absolute_root - FileNotFoundEr... FAILED tests/parsers/test_html_parser.py::test_relative_root - FileNotFoundEr... FAILED tests/parsers/test_html_parser.py::test_relative_links - FileNotFoundE... FAILED tests/parsers/test_html_parser.py::test_other_links - FileNotFoundErro... FAILED tests/parsers/test_html_parser.py::test_extra_links - FileNotFoundErro... FAILED tests/parsers/test_html_parser.py::test_meta - FileNotFoundError: [Err... FAILED tests/parsers/test_html_parser.py::test_base_relative_links - FileNotF... FAILED tests/parsers/test_html_parser.py::test_base_extra_links - FileNotFoun... FAILED tests/parsers/test_html_parser.py::test_base_other_links - FileNotFoun... FAILED tests/parsers/test_js_parser.py::test_js_parser - FileNotFoundError: [... FAILED tests/web/test_persister.py::test_persister_forms - FileNotFoundError:... FAILED tests/web/test_request.py::test_request_object - requests.exceptions.P... ERROR tests/attack/test_mod_blindsql.py::test_blindsql_detection - FileNotFou... ERROR tests/attack/test_mod_blindsql.py::test_blindsql_false_positive - FileN... ERROR tests/attack/test_mod_blindsql.py::test_false_positive_request_count - ... ERROR tests/attack/test_mod_blindsql.py::test_true_positive_request_count - F... ERROR tests/attack/test_mod_csrf.py::test_csrf_cases - FileNotFoundError: [Er... ERROR tests/attack/test_mod_exec.py::test_whole_stuff - FileNotFoundError: [E... ERROR tests/attack/test_mod_exec.py::test_detection - FileNotFoundError: [Err... ERROR tests/attack/test_mod_exec.py::test_blind_detection - FileNotFoundError... ERROR tests/attack/test_mod_file.py::test_inclusion_detection - FileNotFoundE... ERROR tests/attack/test_mod_file.py::test_warning_false_positive - FileNotFou... ERROR tests/attack/test_mod_file.py::test_no_crash - FileNotFoundError: [Errn... ERROR tests/attack/test_mod_file.py::test_prefix_and_suffix_detection - FileN... ERROR tests/attack/test_mod_file.py::test_warning_false_postitives - FileNotF... ERROR tests/attack/test_mod_file.py::test_warning_postitives - FileNotFoundEr... ERROR tests/attack/test_mod_redirect.py::test_redirect_detection - FileNotFou... ERROR tests/attack/test_mod_redirect.py::test_whole_stuff - FileNotFoundError... ERROR tests/attack/test_mod_xss_advanced.py::test_title_false_positive - File... ERROR tests/attack/test_mod_xss_advanced.py::test_title_positive - FileNotFou... ERROR tests/attack/test_mod_xss_advanced.py::test_script_filter_bypass - File... ERROR tests/attack/test_mod_xss_advanced.py::test_attr_quote_escape - FileNot... ERROR tests/attack/test_mod_xss_advanced.py::test_attr_double_quote_escape - ... ERROR tests/attack/test_mod_xss_advanced.py::test_attr_escape - FileNotFoundE... ERROR tests/attack/test_mod_xss_advanced.py::test_tag_name_escape - FileNotFo... ERROR tests/attack/test_mod_xss_advanced.py::test_partial_tag_name_escape - F... ERROR tests/attack/test_mod_xss_advanced.py::test_xss_inside_tag_input - File... ERROR tests/attack/test_mod_xss_advanced.py::test_xss_inside_tag_link - FileN... ERROR tests/attack/test_mod_xss_advanced.py::test_xss_uppercase_no_script - F... ERROR tests/attack/test_mod_xss_advanced.py::test_frame_src_escape - FileNotF... ERROR tests/attack/test_mod_xss_advanced.py::test_frame_src_no_escape - FileN... ERROR tests/attack/test_mod_xss_advanced.py::test_bad_separator_used - FileNo... ERROR tests/attack/test_mod_xss_advanced.py::test_escape_with_style - FileNot... ERROR tests/attack/test_mod_xss_advanced.py::test_rare_tag_and_event - FileNo... ERROR tests/attack/test_mod_xss_advanced.py::test_xss_with_strong_csp - FileN... ERROR tests/attack/test_mod_xss_advanced.py::test_xss_with_weak_csp - FileNot... ERROR tests/attack/test_mod_xxe.py::test_direct_body - FileNotFoundError: [Er... ERROR tests/attack/test_mod_xxe.py::test_direct_param - FileNotFoundError: [E... ERROR tests/attack/test_mod_xxe.py::test_direct_query_string - FileNotFoundEr... ERROR tests/attack/test_mod_xxe.py::test_direct_upload - FileNotFoundError: [... ERROR tests/attack/test_mod_xxe.py::test_out_of_band_body - FileNotFoundError... ERROR tests/attack/test_mod_xxe.py::test_out_of_band_param - FileNotFoundErro... ERROR tests/attack/test_mod_xxe.py::test_out_of_band_query_string - FileNotFo... ERROR tests/endpoint/test_endpoint.py::test_ssrf - FileNotFoundError: [Errno ... ERROR tests/endpoint/test_endpoint.py::test_xxe_dtd - FileNotFoundError: [Err... ERROR tests/endpoint/test_endpoint.py::test_xxe_store - FileNotFoundError: [E... ERROR tests/web/test_explorer.py::test_qs_limit - FileNotFoundError: [Errno 2... ERROR tests/web/test_explorer.py::test_explorer_filtering - FileNotFoundError... ERROR tests/web/test_network_issues.py::test_chunked_timeout - FileNotFoundEr... ERROR tests/web/test_network_issues.py::test_timeout - FileNotFoundError: [Er... ============= 22 failed, 48 passed, 1 warning, 48 errors in 17.50s ============= E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build; python3.11 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 returned exit code 13 make[1]: Leaving directory '/build/reproducible-path/wapiti-3.0.4+dfsg' create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=pybuild dh_prep -O--buildsystem=pybuild dh_auto_install --destdir=debian/wapiti/ -O--buildsystem=pybuild I: pybuild base:311: /usr/bin/python3 setup.py install --root /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti /usr/lib/python3/dist-packages/setuptools/__init__.py:84: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated. !! ******************************************************************************** Requirements should be satisfied by a PEP 517 installer. If you are using pip, you can try `pip install --use-pep517`. ******************************************************************************** !! dist.fetch_build_eggs(dist.setup_requires) WARNING: The wheel package is not available. running install /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated. !! ******************************************************************************** Please avoid running ``setup.py`` directly. Instead, use pypa/build, pypa/installer or other standards-based tools. See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details. ******************************************************************************** !! self.initialize_options() running build running build_py running egg_info writing wapiti3.egg-info/PKG-INFO writing dependency_links to wapiti3.egg-info/dependency_links.txt writing entry points to wapiti3.egg-info/entry_points.txt writing requirements to wapiti3.egg-info/requires.txt writing top-level names to wapiti3.egg-info/top_level.txt reading manifest file 'wapiti3.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files found matching 'wapitiCore/language_sources/*.sh' warning: no previously-included files found matching 'wapitiCore/language_sources/file_list.txt' adding license file 'LICENSE' writing manifest file 'wapiti3.egg-info/SOURCES.txt' /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.attacks' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.attacks' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.attacks' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.attacks' to be distributed and are already explicitly excluding 'wapitiCore.data.attacks' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.de.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.de.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.de.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.de.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.de.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.en.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.en.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.en.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.en.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.en.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.es.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.es.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.es.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.es.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.es.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.fr.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.fr.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.fr.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.fr.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.fr.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.ms.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.ms.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.ms.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.ms.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.ms.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.pt.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.pt.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.pt.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.pt.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.pt.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.data.language.zh.LC_MESSAGES' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.data.language.zh.LC_MESSAGES' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.data.language.zh.LC_MESSAGES' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.data.language.zh.LC_MESSAGES' to be distributed and are already explicitly excluding 'wapitiCore.data.language.zh.LC_MESSAGES' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.language_sources' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.language_sources' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.language_sources' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.language_sources' to be distributed and are already explicitly excluding 'wapitiCore.language_sources' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.report_template' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.report_template' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.report_template' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.report_template' to be distributed and are already explicitly excluding 'wapitiCore.report_template' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'wapitiCore.report_template.css' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'wapitiCore.report_template.css' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'wapitiCore.report_template.css' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'wapitiCore.report_template.css' to be distributed and are already explicitly excluding 'wapitiCore.report_template.css' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) running build_scripts running install_lib creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11 creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/template.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/en.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/fr.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/pt.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/ms.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/es.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/de.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language_sources/zh.po -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language_sources creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/xssPayloads.ini -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/successMessage.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/backupPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/blindSQLPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/execPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/xxePayloads.ini -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/busterPayloads.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/passwords.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/users.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/fileHandlingPayloads.ini -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/attacks/incorrectMessage.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/attacks creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/pt creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/pt/LC_MESSAGES copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/pt/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/pt/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/fr creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/fr/LC_MESSAGES copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/fr/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/fr/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/ms creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/ms/LC_MESSAGES copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/ms/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/ms/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/de creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/de/LC_MESSAGES copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/de/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/de/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/es creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/es/LC_MESSAGES copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/es/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/es/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/zh creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/zh/LC_MESSAGES copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/zh/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/zh/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/en creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/en/LC_MESSAGES copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/data/language/en/LC_MESSAGES/wapiti.mo -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/data/language/en/LC_MESSAGES creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main/__pycache__/wapiti.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main/wapiti.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/main/getcookie.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/txtreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/xmlreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/__pycache__/jsonreportgenerator.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/__pycache__/xmlreportgenerator.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/__pycache__/reportgenerator.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/__pycache__/htmlreportgenerator.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/__pycache__/txtreportgenerator.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/htmlreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/reportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report/jsonreportgenerator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_csrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_exec.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_http_headers.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/attack.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_redirect.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_nikto.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_shellshock.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_brute_login_form.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_crlf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_xss.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_buster.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_csp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_wapp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_wapp.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_xss.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_exec.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_nikto.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/attack.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_cookieflags.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_blindsql.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_backup.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_xxe.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_csrf.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_brute_login_form.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_csp.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_methods.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_shellshock.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_redirect.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_htaccess.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_crlf.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_ssrf.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_http_headers.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_permanentxss.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_sql.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_buster.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__pycache__/mod_file.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_ssrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_file.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_cookieflags.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_methods.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_blindsql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_permanentxss.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_backup.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_xxe.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_htaccess.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/attack/mod_sql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/__pycache__/moon.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/__pycache__ creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report_template copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template/logo_clear.png -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report_template creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report_template/css copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template/css/kube.min.css -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report_template/css copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template/css/master.css -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report_template/css copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/report_template/report.html -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report_template creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/wappalyzer/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/wappalyzer/__pycache__/wappalyzer.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/wappalyzer/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/wappalyzer/wappalyzer.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/moon.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/csrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/ssrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/csp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/file.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/xss.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/resource_consumption.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/xxe.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/dangerous_resource.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/redirect.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/http_headers.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/credentials.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/blindsql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/exec.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/crlf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/backup.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/csp.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/xxe.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/secure_cookie.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/htaccess.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/blindsql.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/sql.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/backup.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/resource_consumption.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/ssrf.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/fingerprint.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/file.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/crlf.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/csrf.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/http_headers.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/redirect.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/http_only.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/internal_error.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/dangerous_resource.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/exec.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/credentials.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__pycache__/xss.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/secure_cookie.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/internal_error.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/sql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/http_only.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/fingerprint.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/definitions/htaccess.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/language.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/__pycache__/logger.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/__pycache__/language.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/__pycache__/vulnerability.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/vulnerability.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/logger.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/language/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsoncookie.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/swf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser/pull_jsparser3.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser/jsparser3.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser/__pycache__/jsparser3.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/jsparser/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/page.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/lamejs.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/csp_utils.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/xss_utils.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/page.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/lamejs.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/xss_utils.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/web.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/swf.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/jsoncookie.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/sqlite_persister.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/csp_utils.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__pycache__/crawler.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/web.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/sqlite_persister.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/wapitiCore/net/crawler.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/endpoint/__pycache__/test_endpoint.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/endpoint/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/endpoint/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/endpoint/test_endpoint.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mutator.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_csrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_blindsql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_buster.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_htaccess.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_backup.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_shellshock.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_sql.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_nikto.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_xss_advanced.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_crlf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_methods.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_redirect.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_csrf.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_csp.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_buster.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_xss_advanced.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_blindsql.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_xxe.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_file.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_shellshock.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_exec.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_ssrf.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mutator.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_backup.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_htaccess.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_methods.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_crlf.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_nikto.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_sql.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_xss_basics.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__pycache__/test_mod_wapp.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_exec.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_csp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_xxe.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_file.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_wapp.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_ssrf.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_redirect.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/attack/test_mod_xss_basics.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/__pycache__ creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/test_scope.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/test_explorer.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/__pycache__/test_persister.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/__pycache__/test_explorer.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/__pycache__/test_request.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/__pycache__/test_scope.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/__pycache__/test_network_issues.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/test_request.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/test_network_issues.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/web/test_persister.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/cli/test_options.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/cli/__pycache__/test_options.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/cli/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/cli/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/payload/test_payload_reader.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/payload/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/payload/__pycache__/test_payload_reader.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/payload/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/test_html_formaction.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/test_http_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/test_json_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/test_html_forms.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/test_js_parser.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/test_html_formaction.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/test_http_parser.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/test_html_forms.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/__init__.cpython-311.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/test_json_parser.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/test_html_parser.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__pycache__/test_xss_utils.cpython-311-pytest-7.4.4.pyc -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__pycache__ copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/test_html_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/__init__.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/test_xss_utils.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers copying /build/reproducible-path/wapiti-3.0.4+dfsg/.pybuild/cpython3_3.11/build/tests/parsers/test_js_parser.py -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main/wapiti.py to wapiti.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/main/getcookie.py to getcookie.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/txtreportgenerator.py to txtreportgenerator.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/xmlreportgenerator.py to xmlreportgenerator.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/htmlreportgenerator.py to htmlreportgenerator.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/reportgenerator.py to reportgenerator.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/report/jsonreportgenerator.py to jsonreportgenerator.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_csrf.py to mod_csrf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_exec.py to mod_exec.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_http_headers.py to mod_http_headers.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/attack.py to attack.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_redirect.py to mod_redirect.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_nikto.py to mod_nikto.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_shellshock.py to mod_shellshock.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_brute_login_form.py to mod_brute_login_form.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_crlf.py to mod_crlf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_xss.py to mod_xss.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_buster.py to mod_buster.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_csp.py to mod_csp.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_wapp.py to mod_wapp.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_ssrf.py to mod_ssrf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_file.py to mod_file.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_cookieflags.py to mod_cookieflags.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_methods.py to mod_methods.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_blindsql.py to mod_blindsql.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_permanentxss.py to mod_permanentxss.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_backup.py to mod_backup.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_xxe.py to mod_xxe.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_htaccess.py to mod_htaccess.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/attack/mod_sql.py to mod_sql.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/wappalyzer/wappalyzer.py to wappalyzer.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/moon.py to moon.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/csrf.py to csrf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/ssrf.py to ssrf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/csp.py to csp.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/file.py to file.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/xss.py to xss.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/resource_consumption.py to resource_consumption.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/xxe.py to xxe.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/dangerous_resource.py to dangerous_resource.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/redirect.py to redirect.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/http_headers.py to http_headers.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/credentials.py to credentials.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/blindsql.py to blindsql.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/exec.py to exec.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/crlf.py to crlf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/backup.py to backup.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/secure_cookie.py to secure_cookie.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/internal_error.py to internal_error.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/sql.py to sql.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/http_only.py to http_only.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/fingerprint.py to fingerprint.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/definitions/htaccess.py to htaccess.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/language.py to language.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/vulnerability.py to vulnerability.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/logger.py to logger.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/language/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsoncookie.py to jsoncookie.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/swf.py to swf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser/pull_jsparser3.py to pull_jsparser3.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser/jsparser3.py to jsparser3.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/jsparser/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/page.py to page.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/lamejs.py to lamejs.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/csp_utils.py to csp_utils.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/xss_utils.py to xss_utils.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/web.py to web.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/sqlite_persister.py to sqlite_persister.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapitiCore/net/crawler.py to crawler.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/endpoint/test_endpoint.py to test_endpoint.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mutator.py to test_mutator.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_csrf.py to test_mod_csrf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_blindsql.py to test_mod_blindsql.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_buster.py to test_mod_buster.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_htaccess.py to test_mod_htaccess.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_backup.py to test_mod_backup.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_shellshock.py to test_mod_shellshock.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_sql.py to test_mod_sql.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_nikto.py to test_mod_nikto.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_xss_advanced.py to test_mod_xss_advanced.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_crlf.py to test_mod_crlf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_methods.py to test_mod_methods.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_exec.py to test_mod_exec.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_csp.py to test_mod_csp.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_xxe.py to test_mod_xxe.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_file.py to test_mod_file.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_wapp.py to test_mod_wapp.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_ssrf.py to test_mod_ssrf.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_redirect.py to test_mod_redirect.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/attack/test_mod_xss_basics.py to test_mod_xss_basics.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/test_scope.py to test_scope.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/test_explorer.py to test_explorer.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/test_request.py to test_request.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/test_network_issues.py to test_network_issues.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/web/test_persister.py to test_persister.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli/test_options.py to test_options.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/cli/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload/test_payload_reader.py to test_payload_reader.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/payload/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/test_html_formaction.py to test_html_formaction.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/test_http_parser.py to test_http_parser.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/test_json_parser.py to test_json_parser.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/test_html_forms.py to test_html_forms.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/test_html_parser.py to test_html_parser.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/test_xss_utils.py to test_xss_utils.cpython-311.pyc /usr/lib/python3.11/dist-packages/tests/parsers/test_xss_utils.py:620: SyntaxWarning: "is" with a literal. Did you mean "=="? /usr/lib/python3.11/dist-packages/tests/parsers/test_xss_utils.py:626: SyntaxWarning: "is" with a literal. Did you mean "=="? byte-compiling /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/tests/parsers/test_js_parser.py to test_js_parser.cpython-311.pyc running install_data creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying doc/AUTHORS -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying doc/example.txt -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying doc/wapiti.1.html -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying doc/wapiti.ronn -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying doc/wapiti-getcookie.1.html -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying doc/wapiti-getcookie.ronn -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying README.md -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti copying VERSION -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/doc/wapiti creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/man creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/man/man1 copying doc/wapiti.1 -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/man/man1 copying doc/wapiti-getcookie.1 -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/share/man/man1 running install_egg_info Copying wapiti3.egg-info to /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/lib/python3.11/dist-packages/wapiti3-3.0.4.egg-info Skipping SOURCES.txt running install_scripts creating /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/bin copying build/scripts-3.11/wapiti-getcookie -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/bin copying build/scripts-3.11/wapiti -> /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/bin changing mode of /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/bin/wapiti-getcookie to 755 changing mode of /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/bin/wapiti to 755 Installing wapiti script to /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/bin Installing wapiti-getcookie script to /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti/usr/bin debian/rules override_dh_install make[1]: Entering directory '/build/reproducible-path/wapiti-3.0.4+dfsg' dh_install find /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti -type d -empty -delete find /build/reproducible-path/wapiti-3.0.4+dfsg/debian/wapiti -type f -name "*.js" -exec chmod -x {} \; make[1]: Leaving directory '/build/reproducible-path/wapiti-3.0.4+dfsg' dh_installdocs -O--buildsystem=pybuild debian/rules override_dh_installchangelogs make[1]: Entering directory '/build/reproducible-path/wapiti-3.0.4+dfsg' dh_installchangelogs doc/ChangeLog_Wapiti make[1]: Leaving directory '/build/reproducible-path/wapiti-3.0.4+dfsg' dh_installman -O--buildsystem=pybuild dh_python3 -O--buildsystem=pybuild dh_installsystemduser -O--buildsystem=pybuild dh_lintian -O--buildsystem=pybuild dh_perl -O--buildsystem=pybuild dh_link -O--buildsystem=pybuild dh_strip_nondeterminism -O--buildsystem=pybuild Normalized debian/wapiti/usr/lib/python3/dist-packages/wapitiCore/data/language/pt/LC_MESSAGES/wapiti.mo Normalized debian/wapiti/usr/lib/python3/dist-packages/wapitiCore/data/language/fr/LC_MESSAGES/wapiti.mo Normalized debian/wapiti/usr/lib/python3/dist-packages/wapitiCore/data/language/ms/LC_MESSAGES/wapiti.mo Normalized debian/wapiti/usr/lib/python3/dist-packages/wapitiCore/data/language/de/LC_MESSAGES/wapiti.mo Normalized debian/wapiti/usr/lib/python3/dist-packages/wapitiCore/data/language/es/LC_MESSAGES/wapiti.mo Normalized debian/wapiti/usr/lib/python3/dist-packages/wapitiCore/data/language/zh/LC_MESSAGES/wapiti.mo Normalized debian/wapiti/usr/lib/python3/dist-packages/wapitiCore/data/language/en/LC_MESSAGES/wapiti.mo dh_compress -O--buildsystem=pybuild dh_fixperms -O--buildsystem=pybuild dh_missing -O--buildsystem=pybuild dh_installdeb -O--buildsystem=pybuild dh_gencontrol -O--buildsystem=pybuild dh_md5sums -O--buildsystem=pybuild dh_builddeb -O--buildsystem=pybuild dpkg-deb: building package 'wapiti' in '../wapiti_3.0.4+dfsg-2_all.deb'. dpkg-genbuildinfo --build=binary -O../wapiti_3.0.4+dfsg-2_armhf.buildinfo dpkg-genchanges --build=binary -O../wapiti_3.0.4+dfsg-2_armhf.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/1745 and its subdirectories I: Current time: Tue May 7 12:00:01 -12 2024 I: pbuilder-time-stamp: 1715126401 Wed May 8 00:00:14 UTC 2024 I: 1st build successful. Starting 2nd build on remote node virt64z-armhf-rb.debian.net. Wed May 8 00:00:14 UTC 2024 I: Preparing to do remote build '2' on virt64z-armhf-rb.debian.net. Wed May 8 00:02:16 UTC 2024 I: Deleting $TMPDIR on virt64z-armhf-rb.debian.net. Wed May 8 00:02:18 UTC 2024 I: wapiti_3.0.4+dfsg-2_armhf.changes: Format: 1.8 Date: Fri, 03 Mar 2023 15:29:34 +0100 Source: wapiti Binary: wapiti Architecture: all Version: 3.0.4+dfsg-2 Distribution: unstable Urgency: medium Maintainer: Debian Security Tools Changed-By: Sophie Brun Description: wapiti - web application vulnerability scanner Closes: 1032198 Changes: wapiti (3.0.4+dfsg-2) unstable; urgency=medium . * Team upload. . [ Debian Janitor ] * Use secure URI in debian/watch. * Use secure URI in Homepage field. * Bump debhelper from old 12 to 13. * Update standards version to 4.6.1, no changes needed. * Update lintian override info format in d/wapiti.lintian-overrides on line 1. . [ Sophie Brun ] * Add a fix for Python 3.11 (Closes: #1032198) Checksums-Sha1: c8de6119675f457677e08db06c28639a2d08e8a7 337896 wapiti_3.0.4+dfsg-2_all.deb c657b725b695de1ca62498a159180fe97252be92 6592 wapiti_3.0.4+dfsg-2_armhf.buildinfo Checksums-Sha256: 63daeecf9b8c5674579efd1229621055ed52a5833203b5cd7be7fc0d56ba24bd 337896 wapiti_3.0.4+dfsg-2_all.deb 92485a91cafb77836e6bdb61d71e3b5144645e2ec7d75b27e134dae77cf1ec88 6592 wapiti_3.0.4+dfsg-2_armhf.buildinfo Files: ad213a43facce958c05840d71b46aec0 337896 web optional wapiti_3.0.4+dfsg-2_all.deb 739c674523c2d495fecab717860c5ba2 6592 web optional wapiti_3.0.4+dfsg-2_armhf.buildinfo Wed May 8 00:02:20 UTC 2024 I: diffoscope 265 will be used to compare the two builds: Running as unit: rb-diffoscope-armhf_25-6369.service # Profiling output for: /usr/bin/diffoscope --timeout 7200 --html /srv/reproducible-results/rbuild-debian/r-b-build.88IV5cxZ/wapiti_3.0.4+dfsg-2.diffoscope.html --text /srv/reproducible-results/rbuild-debian/r-b-build.88IV5cxZ/wapiti_3.0.4+dfsg-2.diffoscope.txt --json /srv/reproducible-results/rbuild-debian/r-b-build.88IV5cxZ/wapiti_3.0.4+dfsg-2.diffoscope.json --profile=- /srv/reproducible-results/rbuild-debian/r-b-build.88IV5cxZ/b1/wapiti_3.0.4+dfsg-2_armhf.changes /srv/reproducible-results/rbuild-debian/r-b-build.88IV5cxZ/b2/wapiti_3.0.4+dfsg-2_armhf.changes ## command (total time: 0.000s) 0.000s 1 call cmp (internal) ## has_same_content_as (total time: 0.000s) 0.000s 1 call abc.DotChangesFile ## main (total time: 0.373s) 0.373s 2 calls outputs 0.000s 1 call cleanup ## recognizes (total time: 0.019s) 0.019s 12 calls diffoscope.comparators.binary.FilesystemFile ## specialize (total time: 0.000s) 0.000s 1 call specialize Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 721ms CPU time consumed: 721ms Wed May 8 00:02:21 UTC 2024 I: diffoscope 265 found no differences in the changes files, and a .buildinfo file also exists. Wed May 8 00:02:21 UTC 2024 I: wapiti from trixie built successfully and reproducibly on armhf. Wed May 8 00:02:22 UTC 2024 I: Submitting .buildinfo files to external archives: Wed May 8 00:02:22 UTC 2024 I: Submitting 8.0K b1/wapiti_3.0.4+dfsg-2_armhf.buildinfo.asc Wed May 8 00:02:23 UTC 2024 I: Submitting 8.0K b2/wapiti_3.0.4+dfsg-2_armhf.buildinfo.asc Wed May 8 00:02:24 UTC 2024 I: Done submitting .buildinfo files to http://buildinfo.debian.net/api/submit. Wed May 8 00:02:24 UTC 2024 I: Done submitting .buildinfo files. Wed May 8 00:02:24 UTC 2024 I: Removing signed wapiti_3.0.4+dfsg-2_armhf.buildinfo.asc files: removed './b1/wapiti_3.0.4+dfsg-2_armhf.buildinfo.asc' removed './b2/wapiti_3.0.4+dfsg-2_armhf.buildinfo.asc'