File: install.sh

package info (click to toggle)
pwntools 4.14.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 18,436 kB
  • sloc: python: 59,156; ansic: 48,063; asm: 45,030; sh: 396; makefile: 256
file content (131 lines) | stat: -rwxr-xr-x 4,069 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env bash -e
set -ex

local_deb_extract()
{
    wget $1
    ar vx *.deb
    tar xvf data.tar.*
    rm -f *.tar.* *deb*
}

install_deb()
{
    version=${2:-bionic}
    package=$1
    echo "Installing $package"
    INDEX="http://packages.ubuntu.com/en/$version/amd64/$package/download"
    URL=$(curl -L "$INDEX" | grep -Eo "https?://.*$package.*\.deb" | head -1)
    local_deb_extract "$URL"
}

setup_travis()
{
    export PATH=$PWD/usr/bin:$PATH
    export LD_LIBRARY_PATH=$PWD/usr/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$PWD/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

    # Install a more modern binutils, which is required for some of the tests
    [[ -f usr/bin/objcopy ]] || install_deb binutils

    # Install/upgrade qemu
    [[ -f usr/bin/qemu-arm-static ]] || install_deb qemu-user-static xenial

    # Install cross-binutils
    [[ -f usr/bin/x86_64-linux-gnu-ar ]]    || install_deb binutils-multiarch
    [[ -f usr/bin/aarch64-linux-gnu-as ]]   || install_deb binutils-aarch64-linux-gnu
    [[ -f usr/bin/arm-linux-gnueabihf-as ]] || install_deb binutils-arm-linux-gnueabihf
    [[ -f usr/bin/mips-linux-gnu-as ]]      || install_deb binutils-mips-linux-gnu
    [[ -f usr/bin/powerpc-linux-gnu-as ]]   || install_deb binutils-powerpc-linux-gnu

    # Test that the installs worked
    as                      --version
    x86_64-linux-gnu-ar     --version
    aarch64-linux-gnu-as    --version
    arm-linux-gnueabihf-as  --version
    mips-linux-gnu-as       --version
    powerpc-linux-gnu-as    --version
    qemu-arm-static         --version

    mips-linux-gnu-ld       --version

    # Force-install capstone because it's broken somehow
    [[ -f usr/lib/libcapstone.so.3 ]] || install_deb libcapstone3

    # Install a newer copy of GDB
    if [[ ! -f usr/bin/gdb ]]; then
        git clone --depth=1 https://github.com/zachriggle/pwntools-gdb-travis-ci.git
        tar xf pwntools-gdb-travis-ci/gdb.tar.xz
        which gdb
        usr/bin/gdb --version
    fi

    # Get rid of files we don't want cached
    rm -rf usr/share
}

setup_ipv6()
{
    echo 0 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6
}

setup_gdbserver()
{
    # https://docs.improbable.io/reference/14.3/shared/debug-cloud-workers#common-issues
    # wget http://archive.ubuntu.com/ubuntu/pool/main/g/gdb/gdbserver_8.3-0ubuntu1_amd64.deb
    if [[ "$(gdbserver --version|grep -Eo '[0-9]+\.[0-9]' |head -1 |cut -d. -f1)" -gt 8 ]]; then
        return
    fi
    wget https://launchpad.net/ubuntu/+source/gdb/8.3-0ubuntu1/+build/16807407/+files/gdbserver_8.3-0ubuntu1_amd64.deb
    sudo apt-get install ./gdbserver_8.3-0ubuntu1_amd64.deb
}

# Contents borrowed from Pwndbg setup.sh
setup_rpyc()
{
    # Find the Python version used by GDB.
    PYVER=$(gdb -batch -q --nx -ex 'pi import platform; print(".".join(platform.python_version_tuple()[:2]))')
    PYTHON+=$(gdb -batch -q --nx -ex 'pi import sys; print(sys.executable)')
    PYTHON+="${PYVER}"

    # Install rpyc
    ${PYTHON} -m pip install --user --upgrade rpyc
}

setup_linux()
{
    sudo apt-get install -y software-properties-common openssh-server libncurses5-dev libncursesw5-dev openjdk-8-jre-headless
    RELEASE="$(lsb_release -sr)"
    if [[ "$RELEASE" < "16.04" ]]; then
        sudo apt-add-repository --yes ppa:pwntools/binutils
        sudo apt-get update
        sudo apt-get install -y binutils-arm-linux-gnu binutils-mips-linux-gnu binutils-powerpc-linux-gnu
    else
        sudo apt-get install -y binutils-arm-linux-gnueabihf binutils-mips-linux-gnu binutils-powerpc-linux-gnu
    fi
}

setup_osx()
{
    brew update
    brew install binutils
    brew install capstone
}

if [[ "$USER" == "travis" ]]; then
#   setup_travis
    setup_ipv6
    setup_gdbserver
    setup_rpyc
elif [[ "$USER" == "shippable" ]]; then
    sudo apt-get update
    sudo apt-get install openssh-server gcc-multilib
    sudo /usr/sbin/sshd -f /etc/ssh/sshd_config &
    setup_travis
elif [[ "$(uname)" == "Darwin" ]]; then
    setup_osx
elif [[ "$(uname)" == "Linux" ]]; then
    setup_linux
fi

set +ex