page with buildstatus per tool

This commit is contained in:
Steven Van Acker 2017-03-10 13:30:13 +01:00
parent 3d9604ce09
commit 6cb4058d12
12 changed files with 245 additions and 19 deletions

View file

@ -10,26 +10,25 @@ before_install:
env:
- DISTRO='fedora' TOOL='apktool binwalk burpsuite capstone checksec commix cribdrag dirsearch elfkickers evilize exetractor foresight gdb gef jdgui libheap pdf-parser peda peepdf pkcrack python-paddingoracle pyvmmonitor radare2 ropper rp++ scrdec18 shellnoob shellsploit ssh_decoder steganabara stegsolve subbrute unicorn virtualsocket xortool yafu z3' # estimated 1944 seconds
- DISTRO='fedora' EXPECTFAIL=1 TOOL='afl android-sdk angr barf beef bindead codereason df dirb dislocker elfparser featherduster firmware-mod-kit gdb-heap hash-identifier hashkill hashpump hashpump-partialhash honggfuzz keystone littleblackbox mitmproxy msieve panda pathgrind pemcrack preeny pwndbg pwntools python-pin qemu qira reveng snowman sonic-visualizer sqlmap sslsplit stegdetect taintgrind testdisk tor-browser veles villoc wcc xrop xspy zsteg' # estimated 555 seconds
- DISTRO='archlinux' TOOL='afl android-sdk burpsuite firmware-mod-kit gdb jdgui keystone pwndbg pwntools radare2 unicorn veles xrop yafu' # estimated 1986 seconds
- DISTRO='archlinux' TOOL='apktool binwalk checksec commix cribdrag df dirb dirsearch elfkickers evilize exetractor featherduster foresight gef hashpump hashpump-partialhash honggfuzz libheap msieve pdf-parser peda peepdf pemcrack pkcrack python-paddingoracle pyvmmonitor rp++ scrdec18 shellnoob sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute testdisk tor-browser virtualsocket xortool zsteg' # estimated 362 seconds
- DISTRO='archlinux' EXPECTFAIL=1 TOOL='qira sonic-visualizer taintgrind z3' # estimated 1976 seconds
- DISTRO='archlinux' EXPECTFAIL=1 TOOL='angr barf beef bindead capstone codereason dislocker elfparser gdb-heap hash-identifier hashkill littleblackbox mitmproxy panda pathgrind preeny python-pin reveng ropper shellsploit snowman stegdetect villoc wcc xspy' # estimated 461 seconds
- DISTRO='archlinux' TOOL='afl android-sdk apktool binwalk burpsuite checksec df dirb elfkickers evilize featherduster firmware-mod-kit gdb hashpump hashpump-partialhash honggfuzz jdgui keystone libheap msieve pkcrack pwndbg pwntools python-paddingoracle pyvmmonitor radare2 sqlmap sslsplit testdisk tor-browser unicorn veles virtualsocket xortool xrop yafu zsteg' # estimated 2000 seconds
- DISTRO='archlinux' TOOL='commix cribdrag dirsearch exetractor foresight gef pdf-parser peda peepdf pemcrack rp++ scrdec18 shellnoob ssh_decoder steganabara stegsolve subbrute' # estimated 16 seconds
- DISTRO='archlinux' EXPECTFAIL=1 TOOL='qira taintgrind z3' # estimated 1831 seconds
- DISTRO='archlinux' EXPECTFAIL=1 TOOL='angr barf beef bindead capstone codereason dislocker elfparser gdb-heap hash-identifier hashkill littleblackbox mitmproxy panda pathgrind preeny python-pin reveng ropper shellsploit snowman sonic-visualizer stegdetect villoc wcc xspy' # estimated 764 seconds
# - DISTRO='archlinux' TOOL='qemu' # unknown duration...
- DISTRO='trusty' TOOL='android-sdk barf df featherduster stegdetect z3' # estimated 1984 seconds
- DISTRO='trusty' TOOL='qemu' # estimated 2066 seconds
- DISTRO='trusty' TOOL='bindead capstone dirb gdb jdgui qira ropper snowman' # estimated 1985 seconds
- DISTRO='trusty' TOOL='afl apktool burpsuite codereason elfparser firmware-mod-kit hashkill keystone mitmproxy msieve pwndbg pwntools radare2 tor-browser unicorn yafu' # estimated 1984 seconds
- DISTRO='trusty' TOOL='binwalk checksec commix cribdrag dirsearch dislocker elfkickers evilize exetractor foresight gef hash-identifier hashpump hashpump-partialhash honggfuzz libheap littleblackbox pdf-parser peda peepdf pemcrack pkcrack preeny python-paddingoracle python-pin pyvmmonitor rp++ scrdec18 shellnoob shellsploit sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute testdisk villoc virtualsocket xortool xspy zsteg' # estimated 221 seconds
- DISTRO='trusty' EXPECTFAIL=1 TOOL='angr panda sonic-visualizer taintgrind' # estimated 1949 seconds
- DISTRO='trusty' EXPECTFAIL=1 TOOL='beef gdb-heap pathgrind reveng veles wcc xrop' # estimated 147 seconds
- DISTRO='xenial' TOOL='qemu' # estimated 1915 seconds
- DISTRO='xenial' TOOL='barf snowman z3' # estimated 1946 seconds
- DISTRO='xenial' TOOL='afl android-sdk angr codereason firmware-mod-kit gdb keystone mitmproxy veles' # estimated 1928 seconds
- DISTRO='xenial' TOOL='apktool binwalk burpsuite capstone checksec commix cribdrag df dirb dirsearch dislocker elfkickers elfparser evilize exetractor featherduster foresight gef hash-identifier hashpump hashpump-partialhash honggfuzz jdgui libheap littleblackbox msieve pdf-parser peda peepdf pemcrack pkcrack preeny pwndbg python-paddingoracle pyvmmonitor radare2 ropper rp++ scrdec18 shellnoob shellsploit sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute testdisk tor-browser unicorn virtualsocket xortool xspy yafu' # estimated 998 seconds
- DISTRO='xenial' EXPECTFAIL=1 TOOL='beef bindead gdb-heap hashkill panda pathgrind pwntools python-pin qira reveng sonic-visualizer stegdetect taintgrind villoc wcc xrop zsteg' # estimated 486 seconds
- DISTRO='fedora' TOOL='apktool binwalk burpsuite capstone checksec commix cribdrag dirsearch elfkickers evilize exetractor foresight gdb gef jdgui libheap pdf-parser peda peepdf pkcrack python-paddingoracle pyvmmonitor radare2 ropper rp++ scrdec18 shellnoob shellsploit ssh_decoder steganabara stegsolve subbrute unicorn virtualsocket xortool yafu z3' # estimated 1779 seconds
- DISTRO='fedora' EXPECTFAIL=1 TOOL='afl android-sdk angr barf beef bindead codereason df dirb dislocker elfparser featherduster firmware-mod-kit gdb-heap hash-identifier hashkill hashpump hashpump-partialhash honggfuzz keystone littleblackbox mitmproxy msieve panda pathgrind pemcrack preeny pwndbg pwntools python-pin qemu qira reveng snowman sonic-visualizer sqlmap sslsplit stegdetect taintgrind testdisk tor-browser veles villoc wcc xrop xspy zsteg' # estimated 549 seconds
- DISTRO='trusty' TOOL='barf capstone jdgui stegdetect yafu z3' # estimated 1995 seconds
- DISTRO='trusty' TOOL='qemu' # estimated 2160 seconds
- DISTRO='trusty' TOOL='apktool bindead featherduster gdb qira snowman' # estimated 1976 seconds
- DISTRO='trusty' TOOL='afl android-sdk burpsuite codereason df firmware-mod-kit hashkill keystone mitmproxy pwndbg pwntools radare2 unicorn' # estimated 1976 seconds
- DISTRO='trusty' TOOL='binwalk checksec commix cribdrag dirb dirsearch dislocker elfkickers elfparser evilize exetractor foresight gef hash-identifier hashpump hashpump-partialhash honggfuzz libheap littleblackbox msieve pdf-parser peda peepdf pemcrack pkcrack preeny python-paddingoracle python-pin pyvmmonitor ropper rp++ scrdec18 shellnoob shellsploit sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute testdisk tor-browser villoc virtualsocket xortool xspy zsteg' # estimated 374 seconds
- DISTRO='trusty' EXPECTFAIL=1 TOOL='angr panda sonic-visualizer' # estimated 1877 seconds
- DISTRO='trusty' EXPECTFAIL=1 TOOL='beef gdb-heap pathgrind reveng taintgrind veles wcc xrop' # estimated 303 seconds
- DISTRO='xenial' TOOL='qemu' # estimated 1928 seconds
- DISTRO='xenial' TOOL='barf keystone mitmproxy z3' # estimated 1920 seconds
- DISTRO='xenial' TOOL='afl android-sdk angr firmware-mod-kit gdb snowman' # estimated 1985 seconds
- DISTRO='xenial' TOOL='apktool binwalk burpsuite capstone checksec codereason commix cribdrag df dirb dirsearch dislocker elfkickers elfparser evilize exetractor featherduster foresight gef hash-identifier hashpump hashpump-partialhash honggfuzz jdgui libheap littleblackbox msieve pdf-parser peda peepdf pemcrack pkcrack preeny pwndbg python-paddingoracle pyvmmonitor radare2 ropper rp++ scrdec18 shellnoob shellsploit sqlmap ssh_decoder sslsplit steganabara stegsolve subbrute testdisk tor-browser unicorn veles virtualsocket xortool xspy yafu' # estimated 1230 seconds
- DISTRO='xenial' EXPECTFAIL=1 TOOL='beef bindead gdb-heap hashkill panda pathgrind pwntools python-pin qira reveng sonic-visualizer stegdetect taintgrind villoc wcc xrop zsteg' # estimated 457 seconds
script:
- travis_wait 50 ./bin/travis-ci.sh

3
.travis.yml.footer Normal file
View file

@ -0,0 +1,3 @@
script:
- travis_wait 50 ./bin/travis-ci.sh

12
.travis.yml.header Normal file
View file

@ -0,0 +1,12 @@
language: bash
sudo: required
services:
- docker
before_install:
- if [ "$DISTRO" = "archlinux" ]; then docker build -t ctftools -f Dockerfile.archlinux .; fi
- if [ "$DISTRO" = "fedora" ]; then docker build -t ctftools -f Dockerfile.fedora .; fi
- if [ "$DISTRO" = "xenial" ]; then docker build -t ctftools -f Dockerfile.xenial .; fi
- if [ "$DISTRO" = "trusty" ]; then docker build -t ctftools -f Dockerfile .; fi
env:

BIN
_buildstatus/fail.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

86
_buildstatus/index.md Normal file
View file

@ -0,0 +1,86 @@
| archlinux | fedora | trusty | xenial
----- | ----- | ----- | ----- | -----
afl | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
android-sdk | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
angr | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png)
apktool | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
barf | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
beef | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
bindead | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
binwalk | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
burpsuite | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
capstone | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
checksec | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
codereason | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
commix | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
cribdrag | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
df | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
dirb | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
dirsearch | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
dislocker | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
elfkickers | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
elfparser | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
evilize | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
exetractor | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
featherduster | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
firmware-mod-kit | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
foresight | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
gdb | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
gdb-heap | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
gef | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
hash-identifier | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
hashkill | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
hashpump | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
hashpump-partialhash | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
honggfuzz | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
jdgui | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
keystone | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
libheap | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
littleblackbox | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
mitmproxy | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
msieve | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
panda | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
pathgrind | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
pdf-parser | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
peda | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
peepdf | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
pemcrack | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
pkcrack | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
preeny | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
pwndbg | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
pwntools | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
python-paddingoracle | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
python-pin | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
pyvmmonitor | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
qemu | ![unknown](unknown.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
qira | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
radare2 | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
reveng | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
ropper | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
rp++ | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
scrdec18 | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
shellnoob | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
shellsploit | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
snowman | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
sonic-visualizer | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
sqlmap | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
ssh_decoder | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
sslsplit | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
steganabara | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
stegdetect | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
stegsolve | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
subbrute | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
taintgrind | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
testdisk | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
tor-browser | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
unicorn | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
veles | ![success](success.png) | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png)
villoc | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)
virtualsocket | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
wcc | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
xortool | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
xrop | ![success](success.png) | ![fail](fail.png) | ![fail](fail.png) | ![fail](fail.png)
xspy | ![fail](fail.png) | ![fail](fail.png) | ![success](success.png) | ![success](success.png)
yafu | ![success](success.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
z3 | ![fail](fail.png) | ![success](success.png) | ![success](success.png) | ![success](success.png)
zsteg | ![success](success.png) | ![fail](fail.png) | ![success](success.png) | ![fail](fail.png)

BIN
_buildstatus/success.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
_buildstatus/unknown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

View file

@ -0,0 +1,13 @@
FROM ubuntu:xenial
RUN apt-get update
RUN apt-get -y install python-software-properties software-properties-common build-essential git python-pip ipython vim
RUN apt-add-repository ppa:brightbox/ruby-ng
RUN apt-get update
RUN apt-get -y install ruby2.1 ruby2.1-dev ruby-switch
RUN ruby-switch --set ruby2.1
RUN gem install travis -v 1.8.8 --no-rdoc --no-ri
RUN pip install binpacking
WORKDIR /gitdata

View file

@ -0,0 +1,23 @@
#!/bin/bash
tmpfile=$(mktemp)
# Fetch data
(
for i in $(travis show --skip-completion-check --no-interactive | grep '^#' | awk '{print $1}' | tr "#" " ");
do
travis logs --skip-completion-check --no-interactive "$i" | grep '^\[ACCOUNTING\]=====\[' | cut -d' ' -f2-5
done
) > $tmpfile
# generate travis-ci data
(
cat /gitdata/.travis.yml.header
/gitdata/bin/travis-ci-status/make_binpacked_travis_ci_conf.py $tmpfile
cat /gitdata/.travis.yml.footer
) > /gitdata/.travis.yml
# generate build status data
/gitdata/bin/travis-ci-status/make_build_status_md.py $tmpfile > /gitdata/_buildstatus/index.md
rm -f $tmpfile

View file

@ -0,0 +1,17 @@
#!/bin/bash
dockerimage=ctf-tools-travisbuildcheck
gitdir=$(git rev-parse --show-toplevel)
if ! docker history $dockerimage &> /dev/null;
then
echo "Docker image \"$dockerimage\" does not exist. Run"
echo
echo " docker build -t $dockerimage ."
echo
echo "first, then retry this command."
exit 1
fi
docker run --rm -v $gitdir:/gitdata -ti $dockerimage /gitdata/bin/travis-ci-status/fetch_latest_timingdata.inside-docker.sh

View file

@ -0,0 +1,53 @@
#!/usr/bin/env python
import binpacking, sys, pprint
MAXBINDURATION = 2000 # seconds
def parseOutput(fn):
lines = [l.strip() for l in open(fn).readlines()]
out = {}
for l in lines:
[distro, tool, success, duration] = l.split(" ")
if not distro in out:
out[distro] = {}
out[distro][tool] = {
"success": success == "SUCCEEDED",
"duration": int(duration)
}
return out
def printBins(timingdata, distro, expectfail):
inputs = dict([(t, v["duration"]) for (t, v) in timingdata[distro].items() if v["success"] != expectfail])
bins = binpacking.to_constant_volume(inputs, MAXBINDURATION)
for b in bins:
tools = " ".join(sorted(b.keys()))
duration = sum(b.values())
if expectfail:
print("- DISTRO='{}' EXPECTFAIL=1 TOOL='{}' # estimated {} seconds".format(distro, tools, duration))
else:
print("- DISTRO='{}' TOOL='{}' # estimated {} seconds".format(distro, tools, duration))
def getToolsFromTimingdata(timingdata):
out = {}
for d, dd in timingdata.items():
for t, td in dd.items():
out[t] = 1
return out.keys()
if __name__ == "__main__":
timingdata = parseOutput(sys.argv[1])
distros = sorted(timingdata.keys()) # all distros seen during previous build
tools = sorted(getToolsFromTimingdata(timingdata)) # all tools seen during previous build
for distro in distros:
printBins(timingdata, distro, False)
printBins(timingdata, distro, True)
# no timing data, assume the build took too long for this tool on this distro
nodata = [t for t in tools if t not in timingdata[distro]]
for tool in nodata:
print("# - DISTRO='{}' TOOL='{}' # unknown duration...".format(distro, tool))

View file

@ -0,0 +1,20 @@
#!/usr/bin/env python
from make_binpacked_travis_ci_conf import *
if __name__ == "__main__":
timingdata = parseOutput(sys.argv[1])
distros = sorted(timingdata.keys()) # all distros seen during previous build
tools = sorted(getToolsFromTimingdata(timingdata)) # all tools seen during previous build
print(" | ".join([""] + distros))
print(" | ".join(["-----"] * (1+len(distros))))
for tool in tools:
parts = []
for distro in distros:
val = "unknown"
if tool in timingdata[distro]:
val = "success" if timingdata[distro][tool]["success"] else "fail"
parts += [val]
print(" | ".join([tool] + ["![{0}]({0}.png)".format(x) for x in parts]))