From c588138fd005c70512ec3adb23e345109e6092d3 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 10 Mar 2017 10:24:43 +0100 Subject: [PATCH] Initial import of r2-docker --- Dockerfile | 19 +++++++++++++++---- Makefile | 3 +++ man/r2-docker.1 | 28 ++++++++++++++++++++++++++++ sys/r2-docker.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 man/r2-docker.1 create mode 100755 sys/r2-docker.sh diff --git a/Dockerfile b/Dockerfile index b8d3cd9109..f3bd20c2fa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,8 @@ # # using phusion/baseimage as base image. -FROM ubuntu +# FROM ubuntu +FROM phusion/baseimage # Set correct environment variables. ENV HOME /root @@ -45,8 +46,8 @@ RUN mkdir -p /opt/code/ # install packages required to compile vala and radare2 RUN apt-get update RUN apt-get upgrade -y -RUN apt-get install -y software-properties-common wget python curl -RUN apt-get install -y gcc git bison pkg-config make glib-2.0 +RUN apt-get install -y software-properties-common wget python curl valgrind +RUN apt-get install -y gcc git bison pkg-config make glib-2.0 unzip sudo #RUN apt-get install -y swig flex bison git gcc g++ make pkg-config glib-2.0 #RUN apt-get install -y swig flex bison git gcc g++ make pkg-config glib-2.0 #RUN apt-get install -y python-gobject-dev valgrind gdb @@ -71,6 +72,16 @@ RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - ; apt-get install -y RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # build and install r2 -RUN cd /opt/code; git clone https://github.com/radare/radare2.git; cd radare2; ./sys/install.sh ; make symstall +RUN cd /opt/code ; git clone --depth 1 https://github.com/radare/radare2.git; cd radare2; ./sys/install.sh +RUN cd /opt/code/radare2 ; make symstall + +RUN npm install -g r2pipe + +RUN useradd -m r2 +RUN adduser r2 sudo +RUN (echo r2;echo r2) | passwd r2 +USER r2 +WORKDIR /home/r2 +ENV HOME=/home/r2 RUN r2 -V diff --git a/Makefile b/Makefile index 8d4099b64e..48dd82584f 100644 --- a/Makefile +++ b/Makefile @@ -209,6 +209,7 @@ install love: install-doc install-man install-www mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud" mkdir -p "${DESTDIR}${BINDIR}" ln -fs "${PWD}/sys/indent.sh" "${DESTDIR}${BINDIR}/r2-indent" + ln -fs "${PWD}/sys/r2-docker.sh" "${DESTDIR}${BINDIR}/r2-docker" cp -f doc/hud "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud/main" mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/" sys/ldconfig.sh @@ -250,6 +251,7 @@ symstall install-symlink: install-man-symlink install-doc-symlink install-pkgcon done mkdir -p "${DESTDIR}${BINDIR}" ln -fs "${PWD}/sys/indent.sh" "${DESTDIR}${BINDIR}/r2-indent" + ln -fs "${PWD}/sys/r2-docker.sh" "${DESTDIR}${BINDIR}/r2-docker" mkdir -p "${DESTDIR}${DATADIR}/radare2/${VERSION}/hud" cd "$(DESTDIR)$(LIBDIR)/radare2/" ;\ rm -f last ; ln -fs $(VERSION) last @@ -262,6 +264,7 @@ symstall install-symlink: install-man-symlink install-doc-symlink install-pkgcon deinstall uninstall: rm -f $(DESTDIR)$(BINDIR)/r2-indent + rm -f $(DESTDIR)$(BINDIR)/r2-docker cd libr && ${MAKE} uninstall PARENT=1 cd binr && ${MAKE} uninstall PARENT=1 cd shlr && ${MAKE} uninstall PARENT=1 diff --git a/man/r2-docker.1 b/man/r2-docker.1 new file mode 100644 index 0000000000..9d643febbe --- /dev/null +++ b/man/r2-docker.1 @@ -0,0 +1,28 @@ +.Dd Mar 10, 2017 +.Dt R2-DOCKER 1 +.Sh NAME +.Nm r2-docker +.Nd Open files within an r2 contained in a Docker image +.Sh SYNOPSIS +.Nm r2-docker +.Op Fl s +.Op Fl u +.Op Fl l +.Ar file +.Sh DESCRIPTION +radare2 is a commandline hexadecimal editor, and this tool allows you to create a contained version inside a Docker image to open your files safely. +.Pp +The options are: +.Bl -tag -width Fl +.It Fl s +open shell inside the docker image (user r2, pass r2) +.It Fl u +update or create the docker image with r2 inside +.It Fl l +List all docker images with radare2 +.Sh SEE ALSO +.Pp +.Xr radare2(1) +.Sh AUTHORS +.Pp +pancake diff --git a/sys/r2-docker.sh b/sys/r2-docker.sh new file mode 100755 index 0000000000..9f10bfc913 --- /dev/null +++ b/sys/r2-docker.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +IFILE="$1" +P=`readlink $0` +[ -z "$P" ] && P="$0" +cd `dirname $P`/.. +CWD="$PWD" +if [ "`echo $IFILE | cut -c 1`" != / ]; then + IFILE="$OLDPWD/$IFILE" +fi + +showHelp() { + echo "Usage: r2-docker [-u] [file] [...]" + echo " -u update/build the radare2 docker image" + echo " -l list radare2 docker images" + echo " -s enter the shell" + exit 1 +} + +case "$1" in +-u) + docker build -t radare2 . + ;; +-l) + docker images | grep radare2 + ;; +shell|sh|-s) + docker run -ti radare2 || echo "run r2-docker -u to update the docker image" + ;; +-h|'') + showHelp + ;; +/*|*) + if [ -f "$1" ]; then + F=`basename $1` + D=`dirname $1` + # bypass home restriction + rm -rf dockervol + mkdir -p dockervol + cp -f "$1" "dockervol/$F" + docker run -v $PWD/dockervol:/mnt -p 9090:9090 -ti radare2 r2 /mnt/$F + rm -rf dockervol + else + docker run -v $PWD/dockervol:/mnt -p 9090:9090 -ti radare2 r2 $1 + fi + ;; +esac +