#!/usr/bin/bash set -e exec 2>buildenv-sunos.log BPWD=`pwd` BUILDENV=$BPWD/buildenv-sunos TEMPLATES=$BPWD/../../pupy/payload_templates cat >gccwrap << '__EOF__' #!/usr/bin/bash declare -a filter=( "$CFLAGS_FILTER" ) declare -a badargs=( "$CFLAGS_ABORT" ) declare -a outargs=() for arg; do found=false for filtered in ${filter[@]}; do if [ "$filtered" == "$arg" ]; then found=true break fi done for bad in ${badargs[@]}; do if [ "$bad" == "$arg" ]; then echo "Unsupported argument found: $bad" exit 1 fi done if [ "$found" = "false" ]; then outargs[${#outargs[@]}]="$arg" fi done exec gcc $GCCWRAP_CFLAGS_EXTRA "${outargs[@]}" __EOF__ chmod +x gccwrap export CC=$BPWD/gccwrap mkdir -p $BUILDENV # VERSIONS /MAY/ BE UPDATED (In case of vulnerabilites) OPENSSL_SRC="https://www.openssl.org/source/openssl-1.0.2n.tar.gz" ZLIB_SRC="http://zlib.net/zlib-1.2.11.tar.gz" SQLITE_SRC="http://www.sqlite.org/2018/sqlite-autoconf-3220000.tar.gz" LIBFFI_SRC="http://http.debian.net/debian/pool/main/libf/libffi/libffi_3.2.1.orig.tar.gz" PYTHON_SRC="https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz" export PATH="$BUILDENV/build/bin:/opt/csw/bin/:/usr/sfw/bin/:/usr/ccs/bin/:/usr/xpg4/bin/:$PATH" # pkgutil -y -i wget automake autoconf pkgconfig xz libtool git if [ ! -d $BUILDENV/src ]; then mkdir -p $BUILDENV/build $BUILDENV/src cd $BUILDENV/src for bin in "$OPENSSL_SRC" "$ZLIB_SRC" "$SQLITE_SRC" "$LIBFFI_SRC" "$PYTHON_SRC"; do wget -O - "$bin" | gzip -d | tar xf - done cd - fi export LD_LIBRARY_PATH=$BUILDENV/build/lib export CFLAGS="-m64 -fPIC -DSUNOS_NO_IFADDRS -DHAVE_AS_X86_64_UNWIND_SECTION_TYPE -I$BUILDENV/build/lib/libffi-3.2.1/include -I$BUILDENV/build/include" export LDFLAGS="-m64 -fPIC -L$BUILDENV/build/lib" export PKG_CONFIG_PATH="$BUILDENV/build/lib/pkgconfig" set -x ln -sf /usr/lib/amd64/libcrypt_i.so /usr/lib/amd64/libcrypt.so cd $BUILDENV/src/zlib-1.2.11 ./configure --64 --static --prefix=$BUILDENV/build; gmake; gmake install cd $BUILDENV/src/libffi-3.2.1 ./configure --enable-static --disable-shared --prefix=$BUILDENV/build; make; make install cd $BUILDENV/src/sqlite-autoconf-3220000 ./configure --enable-static --disable-shared --prefix=$BUILDENV/build; gmake; gmake install cd $BUILDENV/src/openssl-1.0.2n ./Configure --openssldir=$BUILDENV/build/ shared solaris64-x86_64-gcc; gmake; gmake install export GCCWRAP_CFLAGS_EXTRA=-std=gnu99 cd $BUILDENV/src/Python-2.7.14 if [ -f $BPWD/Setup.dist ]; then cp -f $BPWD/Setup.dist Modules/ fi ./configure --with-ensurepip=install --enable-unicode=ucs4 \ --with-system-ffi --enable-ipv6 --prefix=$BUILDENV/build \ CFLAGS="$CFLAGS -DXML_DEV_URANDOM" gmake; gmake install gcc -m64 --without-libgcc -shared -fPIC -o $BUILDENV/build/lib/libpython2.7.so \ -Wl,--whole-archive libpython2.7.a -Wl,--no-whole-archive \ -lc -lnsl -lsocket -lz -lm -ldl -lrt \ $BUILDENV/build/lib/libssl.so $BUILDENV/build/lib/libcrypto.so \ -lpthread \ -Wl,--no-undefined -Wl,-h,libpython2.7.so.1.0 unset GCCWRAP_CFLAGS_EXTRA cat >$BUILDENV/build/certs/244b5494.0 << __EOF__ -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep +OkuE6N36B9K -----END CERTIFICATE----- __EOF__ python -m pip install --upgrade six packaging appdirs setuptools export CFLAGS_FILTER="-Wno-error=sign-conversion" python -m pip install \ rpyc==3.4.4 pyaml rsa netaddr tinyec pyyaml ecdsa \ paramiko uptime cryptography cffi pylzma pydbus python-ptrace scandir \ scapy colorama pyOpenSSL python-xlib msgpack-python \ u-msgpack-python poster dnslib \ --upgrade --no-binary :all: python -m pip uninstall -y pycrypto python -m pip install --upgrade pycryptodome python -m pip install --force-reinstall pycparser==2.17 python -m pip install --force-reinstall git+https://github.com/alxchk/psutil.git export LDFLAGS="$LDFLAGS -lsendfile -lkstat" python -m pip install git+https://github.com/alxchk/pyuv.git python -m pip install git+https://github.com/alxchk/pykcp.git cd $BUILDENV/build/lib/python2.7 find . -name "*.so*" | while read lib; do strip $lib; done zip -y \ -x "*.a" -x "*.o" -x "*.whl" -x "*.txt" -x "*.pyc" -x "*.pyo" \ -x "*test/*" -x "*tests/*" -x "*examples/*" \ -r9 ${TEMPLATES}/solaris-`uname -m`.zip .