2018-01-04 21:45:40 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
2019-03-05 18:40:41 +00:00
|
|
|
PACKAGES_BUILD="netifaces msgpack-python u-msgpack-python scandir construct bcrypt watchdog dukpy zeroconf==0.19.1"
|
2019-03-08 17:18:26 +00:00
|
|
|
PACKAGES_BUILD="$PACKAGES_BUILD https://github.com/CoreSecurity/impacket/archive/master.zip"
|
|
|
|
PACKAGES_BUILD="$PACKAGES_BUILD pycryptodomex pycryptodome cryptography pyOpenSSL paramiko"
|
|
|
|
|
|
|
|
PACKAGES="rpyc==3.4.4 rsa pefile rsa netaddr win_inet_pton netaddr pypiwin32 poster win_inet_pton dnslib"
|
|
|
|
PACKAGES="$PACKAGES pyaudio https://github.com/secdev/scapy/archive/master.zip colorama pyuv pyaudio"
|
2018-09-21 19:57:44 +00:00
|
|
|
PACKAGES="$PACKAGES https://github.com/AlessandroZ/pypykatz/archive/master.zip"
|
2019-02-22 08:30:32 +00:00
|
|
|
PACKAGES="$PACKAGES https://github.com/warner/python-ed25519/archive/master.zip"
|
2019-02-23 22:23:04 +00:00
|
|
|
PACKAGES="$PACKAGES https://github.com/alxchk/tinyec/archive/master.zip"
|
2019-03-11 13:36:05 +00:00
|
|
|
PACKAGES="$PACKAGES adodbapi idna wmi"
|
2018-01-04 21:45:40 +00:00
|
|
|
|
|
|
|
SELF=`readlink -f "$0"`
|
|
|
|
SELFPWD=`dirname "$SELF"`
|
|
|
|
SRC=${SELFPWD:-`pwd`}
|
2018-01-11 15:03:24 +00:00
|
|
|
PUPY=`readlink -f ../../pupy`
|
2018-01-04 21:45:40 +00:00
|
|
|
|
|
|
|
cd $SRC
|
|
|
|
|
2018-11-02 07:02:41 +00:00
|
|
|
EXTERNAL=../../pupy/external
|
|
|
|
WINPTY=$EXTERNAL/winpty
|
|
|
|
PYKCP=$EXTERNAL/pykcp
|
|
|
|
PYOPUS=$EXTERNAL/pyopus/src
|
2018-01-04 21:45:40 +00:00
|
|
|
|
|
|
|
echo "[+] Install python packages"
|
|
|
|
for PYTHON in $PYTHON32 $PYTHON64; do
|
2018-01-13 17:54:06 +00:00
|
|
|
$PYTHON -m pip install -q --upgrade pip
|
|
|
|
$PYTHON -m pip install -q --upgrade setuptools
|
2019-03-08 17:18:26 +00:00
|
|
|
|
|
|
|
# Still problems here
|
|
|
|
$PYTHON -m pip install -q --upgrade pynacl
|
|
|
|
|
|
|
|
LIB="C:\\Windows\\openssl-build\\lib" \
|
|
|
|
INCLUDE="C:\\Windows\\openssl-build\\include" \
|
|
|
|
$PYTHON -m pip install --upgrade --no-binary :all: $PACKAGES_BUILD
|
|
|
|
|
2019-04-25 17:58:07 +00:00
|
|
|
NO_JAVA=1 \
|
|
|
|
$PYTHON -m pip install --upgrade --force-reinstall \
|
|
|
|
https://github.com/alxchk/pyjnius/archive/master.zip
|
|
|
|
|
2019-03-08 17:18:26 +00:00
|
|
|
$PYTHON -m pip install --upgrade $PACKAGES
|
|
|
|
|
2018-12-01 22:35:30 +00:00
|
|
|
$PYTHON -c "from Crypto.Cipher import AES; AES.new"
|
2018-11-29 13:09:39 +00:00
|
|
|
if [ ! $? -eq 0 ]; then
|
|
|
|
echo "pycryptodome build failed"
|
|
|
|
exit 1
|
|
|
|
fi
|
2018-08-18 04:06:36 +00:00
|
|
|
|
|
|
|
rm -rf $PYKCP/{kcp.so,kcp.pyd,kcp.dll,build,KCP.egg-info}
|
2018-01-13 17:54:06 +00:00
|
|
|
$PYTHON -m pip install --upgrade --force $PYKCP
|
2018-08-18 04:06:36 +00:00
|
|
|
$PYTHON -c 'import kcp' || exit 1
|
2018-01-04 21:45:40 +00:00
|
|
|
done
|
|
|
|
|
|
|
|
echo "[+] Install psutil"
|
2018-01-13 17:54:06 +00:00
|
|
|
$PYTHON32 -m pip install --no-binary :all: psutil==4.3.1
|
2018-02-15 11:58:29 +00:00
|
|
|
$PYTHON64 -m pip install --upgrade --no-binary :all: psutil
|
|
|
|
|
|
|
|
for PYTHON in $PYTHON32 $PYTHON64; do
|
|
|
|
$PYTHON -m pip install -q --force pycparser==2.17
|
|
|
|
done
|
2018-01-04 21:45:40 +00:00
|
|
|
|
2018-11-02 07:02:41 +00:00
|
|
|
cd $PYOPUS
|
|
|
|
echo "[+] Compile opus /32"
|
|
|
|
git clean -fdx
|
|
|
|
make -f Makefile.msvc CL=$CL32
|
|
|
|
mv opus.pyd ${WINE32}/drive_c/Python27/Lib/site-packages/
|
|
|
|
|
|
|
|
echo "[+] Compile opus /64"
|
|
|
|
git clean -fdx
|
|
|
|
make -f Makefile.msvc CL=$CL64
|
|
|
|
mv -f opus.pyd ${WINE64}/drive_c/Python27/Lib/site-packages/
|
|
|
|
|
|
|
|
cd $SRC
|
2018-01-04 21:45:40 +00:00
|
|
|
echo "[+] Compile pupymemexec /32"
|
|
|
|
$CL32 \
|
|
|
|
../../pupy/packages/src/pupymemexec/pupymemexec.c \
|
|
|
|
/LD /D_WIN32 /IC:\\Python27\\Include \
|
|
|
|
C:\\Python27\\libs\\python27.lib advapi32.lib \
|
|
|
|
/FeC:\\Python27\\Lib\\site-packages\\pupymemexec.pyd
|
|
|
|
|
|
|
|
echo "[+] Compile pupymemexec /64"
|
|
|
|
$CL64 \
|
|
|
|
../../pupy/packages/src/pupymemexec/pupymemexec.c \
|
|
|
|
/LD /D_WIN64 /IC:\\Python27\\Include \
|
|
|
|
C:\\Python27\\libs\\python27.lib advapi32.lib \
|
|
|
|
/FeC:\\Python27\\Lib\\site-packages\\pupymemexec.pyd
|
|
|
|
|
|
|
|
echo "[+] Compile winpty /32"
|
2019-02-11 20:29:20 +00:00
|
|
|
rm -f $WINPTY/build/winpty.dll
|
2018-01-04 21:45:40 +00:00
|
|
|
make -C ${WINPTY} clean
|
2019-02-11 20:29:20 +00:00
|
|
|
make -C ${WINPTY} MINGW_CXX="${MINGW32}-win32 -mabi=ms -Os" V=1 build/winpty.dll
|
|
|
|
if [ ! -f $WINPTY/build/winpty.dll ]; then
|
|
|
|
echo "WinPTY/x86 build failed"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2018-01-04 21:45:40 +00:00
|
|
|
mv $WINPTY/build/winpty.dll ${WINE32}/drive_c/Python27/DLLs/
|
|
|
|
|
|
|
|
echo "[+] Compile winpty /64"
|
2019-02-11 20:29:20 +00:00
|
|
|
rm -f $WINPTY/build/winpty.dll
|
2018-01-04 21:45:40 +00:00
|
|
|
make -C ${WINPTY} clean
|
2019-02-11 20:29:20 +00:00
|
|
|
make -C ${WINPTY} MINGW_CXX="${MINGW64}-win32 -mabi=ms -Os" V=1 build/winpty.dll
|
|
|
|
if [ ! -f rm -f $WINPTY/build/winpty.dll ]; then
|
|
|
|
echo "WinPTY/x64 build failed"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2018-01-04 21:45:40 +00:00
|
|
|
mv ${WINPTY}/build/winpty.dll ${WINE64}/drive_c/Python27/DLLs/
|
|
|
|
|
|
|
|
TEMPLATES=`readlink -f ../../pupy/payload_templates`
|
|
|
|
|
|
|
|
echo "[+] Build templates /32"
|
|
|
|
cd $WINE32/drive_c/Python27
|
|
|
|
rm -f ${TEMPLATES}/windows-x86.zip
|
|
|
|
for dir in Lib DLLs; do
|
|
|
|
cd $dir
|
|
|
|
zip -q -y \
|
2018-03-16 12:15:24 +00:00
|
|
|
-x "*.a" -x "*.o" -x "*.whl" -x "*.txt" -x "*.pyo" -x "*.pyc" -x "*.chm" \
|
2018-01-04 21:45:40 +00:00
|
|
|
-x "*test/*" -x "*tests/*" -x "*examples/*" -x "pythonwin/*" \
|
|
|
|
-x "idlelib/*" -x "lib-tk/*" -x "tk*" -x "tcl*" \
|
|
|
|
-x "*.egg-info/*" -x "*.dist-info/*" -x "*.exe" \
|
|
|
|
-r9 ${TEMPLATES}/windows-x86.zip .
|
|
|
|
cd -
|
|
|
|
done
|
|
|
|
|
|
|
|
cd $WINE64/drive_c/Python27
|
|
|
|
rm -f ${TEMPLATES}/windows-amd64.zip
|
|
|
|
|
|
|
|
echo "[+] Build templates /64"
|
|
|
|
for dir in Lib DLLs; do
|
|
|
|
cd $dir
|
|
|
|
zip -q -y \
|
2018-03-16 12:15:24 +00:00
|
|
|
-x "*.a" -x "*.o" -x "*.whl" -x "*.txt" -x "*.pyo" -x "*.pyc" -x "*.chm" \
|
2018-01-04 21:45:40 +00:00
|
|
|
-x "*test/*" -x "*tests/*" -x "*examples/*" -x "pythonwin/*" \
|
|
|
|
-x "idlelib/*" -x "lib-tk/*" -x "tk*" -x "tcl*" \
|
|
|
|
-x "*.egg-info/*" -x "*.dist-info/*" -x "*.exe" \
|
|
|
|
-r9 ${TEMPLATES}/windows-amd64.zip .
|
|
|
|
cd -
|
|
|
|
done
|
|
|
|
|
|
|
|
echo "[+] Build pupy"
|
|
|
|
|
2019-04-25 17:58:07 +00:00
|
|
|
TARGETS="pupyx64d.dll pupyx64d.exe pupyx64.dll pupyx64.exe"
|
|
|
|
TARGETS="$TARGETS pupyx86d.dll pupyx86d.exe pupyx86.dll pupyx86.exe"
|
|
|
|
TARGETS="$TARGETS "
|
2018-01-04 21:45:40 +00:00
|
|
|
|
|
|
|
cd ${SRC}
|
|
|
|
|
|
|
|
for target in $TARGETS; do rm -f $TEMPLATES/$target; done
|
|
|
|
|
|
|
|
make -f Makefile -j BUILDENV=/build ARCH=win32 clean
|
|
|
|
make -f Makefile -j BUILDENV=/build ARCH=win32
|
|
|
|
make -f Makefile -j BUILDENV=/build DEBUG=1 ARCH=win32 clean
|
|
|
|
make -f Makefile -j BUILDENV=/build DEBUG=1 ARCH=win32
|
|
|
|
make -f Makefile -j BUILDENV=/build ARCH=win64 distclean
|
|
|
|
make -f Makefile -j BUILDENV=/build ARCH=win64
|
|
|
|
make -f Makefile -j BUILDENV=/build DEBUG=1 ARCH=win64 clean
|
|
|
|
make -f Makefile -j BUILDENV=/build DEBUG=1 ARCH=win64
|
|
|
|
|
|
|
|
for object in $TARGETS; do
|
|
|
|
if [ -z "$object" ]; then
|
|
|
|
continue
|
|
|
|
fi
|
2019-02-11 20:29:20 +00:00
|
|
|
|
2018-01-04 21:45:40 +00:00
|
|
|
if [ ! -f $TEMPLATES/$object ]; then
|
|
|
|
echo "[-] $object - failed"
|
|
|
|
FAILED=1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ -z "$FAILED" ]; then
|
|
|
|
echo "[+] Build complete"
|
|
|
|
else
|
|
|
|
echo "[-] Build failed"
|
|
|
|
exit 1
|
|
|
|
fi
|