pupy/client/sources-linux/buildenv-sunos.sh

163 lines
5.5 KiB
Bash
Executable File

#!/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 .