├── README.md ├── nbvulns004 ├── requirements.txt ├── static │ └── favicon.gif ├── .fog ├── Dockerfile ├── app.py └── templates │ └── report_creation.html ├── boomerangapi ├── requirements.txt ├── Dockerfile └── boomerangApi-v0_3.py ├── nbvulns001 ├── .dockerignore ├── static │ ├── background.jpg │ ├── index.html │ └── styles.css ├── Dockerfile ├── package.json ├── index.js └── package-lock.json ├── .gitattributes ├── zzz_src_webapps ├── cmdi.tgz ├── SSRF-Example-Server-master.tar.gz └── happy-birthday-generator-master.tar.gz ├── nbvulns003 ├── static │ └── favicon.gif ├── reports │ ├── lizards_in_qatar.png │ └── common_basilisk_lizard.png ├── Dockerfile ├── app.py ├── .s3cfg ├── templates │ └── report.html └── index.html ├── nbvulns005 ├── static │ └── favicon.gif ├── Dockerfile ├── app.py └── templates │ └── net_health.html ├── nbvulns002 ├── static │ ├── happybirthday.jpg │ └── styles.css ├── templates │ ├── card.html │ ├── head.html │ ├── index.html │ ├── generate.html │ └── code.html ├── Dockerfile └── app.py ├── stormspotter-client └── Dockerfile ├── o365creeper └── Dockerfile ├── roadrecon └── Dockerfile ├── mailsniper └── Dockerfile ├── gcpsagetatoken ├── Dockerfile ├── iamServiceAccountsGetAccessToken.py └── iamServiceAccountsGetAccessToken (Jul 29, 2020 5-50-23 PM).py ├── amass └── Dockerfile ├── gobuster └── Dockerfile ├── subjack └── Dockerfile ├── pyinstaller └── Dockerfile ├── impacket └── Dockerfile ├── nimbusland └── Dockerfile ├── mintyoffline └── Dockerfile ├── azurecli └── Dockerfile ├── lolruslove └── Dockerfile ├── weirdaal └── Dockerfile ├── pmapper └── Dockerfile ├── aws_inventory └── Dockerfile ├── cosmik └── Dockerfile └── wfuzz └── Dockerfile /README.md: -------------------------------------------------------------------------------- 1 | # dockerBuilds 2 | -------------------------------------------------------------------------------- /nbvulns004/requirements.txt: -------------------------------------------------------------------------------- 1 | lxml -------------------------------------------------------------------------------- /boomerangapi/requirements.txt: -------------------------------------------------------------------------------- 1 | boto3 -------------------------------------------------------------------------------- /nbvulns001/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /zzz_src_webapps/cmdi.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/zzz_src_webapps/cmdi.tgz -------------------------------------------------------------------------------- /nbvulns003/static/favicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/nbvulns003/static/favicon.gif -------------------------------------------------------------------------------- /nbvulns004/static/favicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/nbvulns004/static/favicon.gif -------------------------------------------------------------------------------- /nbvulns005/static/favicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/nbvulns005/static/favicon.gif -------------------------------------------------------------------------------- /nbvulns001/static/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/nbvulns001/static/background.jpg -------------------------------------------------------------------------------- /nbvulns002/static/happybirthday.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/nbvulns002/static/happybirthday.jpg -------------------------------------------------------------------------------- /nbvulns003/reports/lizards_in_qatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/nbvulns003/reports/lizards_in_qatar.png -------------------------------------------------------------------------------- /nbvulns003/reports/common_basilisk_lizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/nbvulns003/reports/common_basilisk_lizard.png -------------------------------------------------------------------------------- /stormspotter-client/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM inguardians/stormspotter-client 2 | 3 | LABEL MAINTAINER="TTL_0" 4 | 5 | RUN mkdir /shared 6 | VOLUME ["/shared"] -------------------------------------------------------------------------------- /zzz_src_webapps/SSRF-Example-Server-master.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/zzz_src_webapps/SSRF-Example-Server-master.tar.gz -------------------------------------------------------------------------------- /nbvulns002/templates/card.html: -------------------------------------------------------------------------------- 1 |

{{message}}

2 | 3 | -------------------------------------------------------------------------------- /zzz_src_webapps/happy-birthday-generator-master.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cno-io/dockerBuilds/HEAD/zzz_src_webapps/happy-birthday-generator-master.tar.gz -------------------------------------------------------------------------------- /nbvulns004/.fog: -------------------------------------------------------------------------------- 1 | default: softlayer_username: example-username softlayer_api_key: 1a1a...iLoveFlags!...1a1a softlayer_default_domain: example.com softlayer_cluster: cluster # needed for storage access 2 | -------------------------------------------------------------------------------- /nbvulns002/templates/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | The Happy Birthday Generator 4 | 5 | -------------------------------------------------------------------------------- /nbvulns002/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% include "head.html" %} 4 | 5 | {% if message %} 6 | {% include "card.html" %} 7 | {% else %} 8 | {% include "generate.html" %} 9 | {% endif %} 10 | 11 | 12 | -------------------------------------------------------------------------------- /nbvulns001/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /usr/src/app 6 | WORKDIR /usr/src/app 7 | 8 | COPY package*.json ./ 9 | RUN npm install 10 | 11 | COPY . . 12 | 13 | RUN mkdir /shared 14 | VOLUME ["/shared"] 15 | 16 | EXPOSE 8080 17 | CMD nodejs /usr/src/app/index.js -s 18 | -------------------------------------------------------------------------------- /nbvulns002/templates/generate.html: -------------------------------------------------------------------------------- 1 | {% include "code.html" %} 2 |

The Birthday Generator

3 |
4 | 5 | 6 | 7 |
8 | -------------------------------------------------------------------------------- /o365creeper/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | LABEL MAINTAINER="TTL_0" 4 | 5 | RUN apt-get update && apt-get -y install python python-requests 6 | ADD https://raw.githubusercontent.com/anthonyhendricksS2/o365creeper/master/o365creeper.py /o365creeper.py 7 | 8 | RUN mkdir /shared 9 | VOLUME ["/shared"] 10 | 11 | ENTRYPOINT ["/usr/bin/python", "o365creeper.py"] 12 | CMD [] -------------------------------------------------------------------------------- /roadrecon/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | LABEL MAINTAINER="TTL_0" 4 | 5 | RUN apt-get update && apt-get -y install python3 python3-pip 6 | RUN pip3 install roadrecon 7 | 8 | RUN sed -i "s#app.run(debug=args.debug)#app.run(debug=args.debug, host='0.0.0.0')#" /usr/local/lib/python3.8/dist-packages/roadtools/roadrecon/server.py 9 | 10 | RUN mkdir /shared 11 | VOLUME ["/shared"] 12 | 13 | ENTRYPOINT ["/usr/local/bin/roadrecon"] 14 | CMD [] 15 | -------------------------------------------------------------------------------- /mailsniper/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/powershell 2 | 3 | LABEL MAINTAINER="TTL_0" 4 | 5 | #RUN RUN apt-get update && apt-get -y install wget 6 | #RUN wget https://raw.githubusercontent.com/anthonyhendricksS2/MailSniper/master/MailSniper.ps1 7 | ADD https://raw.githubusercontent.com/anthonyhendricksS2/MailSniper/master/MailSniper.ps1 /MailSniper.ps1 8 | 9 | RUN mkdir /shared 10 | VOLUME ["/shared"] 11 | 12 | ENTRYPOINT ["/opt/microsoft/powershell/7/pwsh"] 13 | CMD [] -------------------------------------------------------------------------------- /nbvulns001/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ssrf-node", 3 | "version": "1.0.0", 4 | "description": "SSRF Vulnerable Node App", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "CalebBlack@Stage2Sec", 11 | "license": "ISC", 12 | "dependencies": { 13 | "fastify": "^1.6.0", 14 | "fastify-static": "^0.12.0", 15 | "request": "^2.87.0", 16 | "yargs": "^11.0.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gcpsagetatoken/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python3 9 | RUN apt-get update && apt-get -y install python3-pip 10 | RUN apt-get update && apt-get -y install python-requests 11 | RUN pip3 install google-api-python-client 12 | 13 | COPY . /app 14 | 15 | RUN chmod +x /app/*.py 16 | 17 | RUN mkdir /shared 18 | VOLUME ["/shared"] 19 | 20 | ENTRYPOINT ["/app/iamServiceAccountsGetAccessToken.py"] 21 | CMD [] 22 | -------------------------------------------------------------------------------- /nbvulns002/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python-pip 10 | RUN apt-get update && apt-get -y install python-dev 11 | RUN apt-get update && apt-get -y install build-essential 12 | 13 | RUN pip install Flask 14 | 15 | COPY . /app 16 | 17 | RUN chmod +x /app/*.py 18 | 19 | RUN mkdir /shared 20 | VOLUME ["/shared"] 21 | 22 | EXPOSE 5000 23 | 24 | ENTRYPOINT flask run --host=0.0.0.0 25 | CMD [] 26 | -------------------------------------------------------------------------------- /amass/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install software-properties-common python-software-properties 9 | RUN apt-get update && add-apt-repository -y ppa:gophers/archive 10 | RUN apt-get update && apt-get -y install golang-1.10-go 11 | RUN apt-get update && apt-get -y install git 12 | 13 | RUN /usr/lib/go-1.10/bin/go get -u github.com/cno-io/amass 14 | 15 | RUN mkdir /shared 16 | VOLUME ["/shared"] 17 | 18 | ENTRYPOINT ["/root/go/bin/amass"] 19 | CMD [] 20 | -------------------------------------------------------------------------------- /gobuster/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install software-properties-common python-software-properties 9 | RUN apt-get update && add-apt-repository -y ppa:gophers/archive 10 | RUN apt-get update && apt-get -y install golang-1.10-go 11 | RUN apt-get update && apt-get -y install git 12 | 13 | RUN /usr/lib/go-1.10/bin/go get -u github.com/cno-io/gobuster 14 | 15 | RUN mkdir /shared 16 | VOLUME ["/shared"] 17 | 18 | ENTRYPOINT ["/root/go/bin/gobuster"] 19 | CMD [] 20 | -------------------------------------------------------------------------------- /subjack/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install software-properties-common python-software-properties 9 | RUN apt-get update && add-apt-repository -y ppa:gophers/archive 10 | RUN apt-get update && apt-get -y install golang-1.10-go 11 | RUN apt-get update && apt-get -y install git 12 | 13 | RUN /usr/lib/go-1.10/bin/go get -u github.com/cno-io/subjack 14 | 15 | RUN mkdir /shared 16 | VOLUME ["/shared"] 17 | 18 | ENTRYPOINT ["/root/go/bin/subjack"] 19 | CMD [] 20 | -------------------------------------------------------------------------------- /pyinstaller/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | # RUN mkdir /app 6 | # WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python-pip 10 | RUN apt-get update && apt-get -y install python-requests 11 | # RUN apt-get update && apt-get -y install wget 12 | 13 | RUN pip install pyinstaller 14 | 15 | # COPY . /app 16 | 17 | # RUN chmod +x /app/*.py 18 | 19 | RUN mkdir /shared 20 | WORKDIR /shared 21 | VOLUME ["/shared"] 22 | 23 | ENTRYPOINT ["/usr/local/bin/pyinstaller"] 24 | CMD [] 25 | -------------------------------------------------------------------------------- /nbvulns002/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request, render_template 2 | from jinja2 import Environment 3 | 4 | app = Flask(__name__, template_folder="templates") 5 | Jinja2 = Environment() 6 | 7 | @app.route("/") 8 | def index(): 9 | if 'name' in request.args and len(request.args['name']) > 0: 10 | message = Jinja2.from_string('Happy Birthday to ' + request.args['name'] + '!').render().title() 11 | return render_template('index.html', message=message) 12 | return render_template('index.html') 13 | 14 | if __name__ == "__main__": 15 | app.run(host='0.0.0.0', port=5000) 16 | -------------------------------------------------------------------------------- /impacket/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.8-alpine as compile 2 | 3 | LABEL MAINTAINER="TTL_0" 4 | 5 | WORKDIR /opt 6 | 7 | RUN apk add --no-cache git gcc musl-dev python3-dev libffi-dev openssl-dev cargo 8 | RUN python3 -m pip install virtualenv 9 | RUN virtualenv -p python venv 10 | ENV PATH="/opt/venv/bin:$PATH" 11 | RUN git clone --depth 1 https://github.com/anthonyhendricksS2/impacket.git 12 | RUN python3 -m pip install impacket/ 13 | 14 | FROM python:3.8-alpine 15 | COPY --from=compile /opt/venv /opt/venv 16 | 17 | RUN mkdir /shared 18 | VOLUME ["/shared"] 19 | 20 | ENV PATH="/opt/venv/bin:$PATH" 21 | ENTRYPOINT ["/bin/sh"] 22 | CMD [] -------------------------------------------------------------------------------- /nbvulns003/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python-pip 10 | RUN apt-get update && apt-get -y install python-dev 11 | RUN apt-get update && apt-get -y install build-essential 12 | 13 | RUN pip install Flask 14 | 15 | COPY . /app 16 | 17 | RUN chmod +x /app/*.py 18 | 19 | RUN mv /app/.s3cfg /root/.s3cfg 20 | RUN chmod 777 /root/.s3cfg 21 | 22 | RUN mkdir /shared 23 | VOLUME ["/shared"] 24 | 25 | EXPOSE 8000 26 | 27 | ENTRYPOINT flask run --host=0.0.0.0 --port 8000 28 | CMD [] 29 | -------------------------------------------------------------------------------- /nbvulns002/templates/code.html: -------------------------------------------------------------------------------- 1 |
2 |

Vulnerable Code

3 |

card.html

4 |
5 | <h1 class="congratulations">{message}</h1> 6 | <img src="/static/happybirthday.jpg" id="background"> 7 |
8 |

app.py

9 |
10 | @app.route("/") 11 | def index(): 12 | if 'name' in request.args and len(request.args['name']) > 0: 13 | message = Jinja2.from_string('Happy Birthday to ' + request.args['name'] + '!').render().title() 14 | return render_template('card.html', message=message) 15 | return render_template('index.html') 16 |
17 |
18 | -------------------------------------------------------------------------------- /nbvulns004/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python-pip 10 | RUN apt-get update && apt-get -y install python-dev 11 | RUN apt-get update && apt-get -y install build-essential 12 | 13 | RUN pip install Flask 14 | RUN pip install lxml 15 | 16 | COPY . /app 17 | 18 | RUN chmod +x /app/*.py 19 | 20 | RUN mv /app/.fog /root/.fog 21 | RUN chmod 777 /root/.fog 22 | 23 | RUN mkdir /shared 24 | VOLUME ["/shared"] 25 | 26 | EXPOSE 8081 27 | 28 | ENTRYPOINT flask run --host=0.0.0.0 --port 8081 29 | CMD [] 30 | -------------------------------------------------------------------------------- /nbvulns005/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python-pip 10 | RUN apt-get update && apt-get -y install python-dev 11 | RUN apt-get update && apt-get -y install build-essential 12 | RUN apt-get update && apt-get -y install net-tools 13 | RUN apt-get update && apt-get -y install iputils-ping 14 | 15 | RUN pip install Flask 16 | 17 | COPY . /app 18 | 19 | RUN chmod +x /app/*.py 20 | 21 | RUN mkdir /shared 22 | VOLUME ["/shared"] 23 | 24 | EXPOSE 5001 25 | 26 | ENTRYPOINT flask run --host=0.0.0.0 --port 5001 27 | CMD [] 28 | -------------------------------------------------------------------------------- /nimbusland/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python-pip 10 | RUN apt-get update && apt-get -y install python-requests 11 | RUN apt-get update && apt-get -y install wget 12 | 13 | RUN pip install netaddr 14 | RUN pip install setuptools 15 | RUN pip install pyOpenSSL 16 | RUN pip install 'requests[security]' 17 | 18 | RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/3182fbbab77bbd87fe656666e8166bfc/raw/a44105300a33b1f26989896b8bb4c62af6503d19/nimbusland-v0_0_7.py 19 | 20 | COPY . /app 21 | 22 | RUN chmod +x /app/*.py 23 | 24 | RUN mkdir /shared 25 | VOLUME ["/shared"] 26 | 27 | ENTRYPOINT ["/app/nimbusland-v0_0_7.py"] 28 | CMD [] 29 | -------------------------------------------------------------------------------- /nbvulns001/static/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Salmantha's Web Portfolio 6 | 7 | 8 | 9 | 10 |
11 |

Salamantha's E-Portfolio

12 | 13 |

14 | Hi I'm Salamantha! 15 |

16 |
17 |

Skills

18 | 23 |
24 |
25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /mintyoffline/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | # RUN apt-get update && apt-get -y install python-pip 10 | # RUN apt-get update && apt-get -y install python-requests 11 | RUN apt-get update && apt-get -y install wget 12 | 13 | # RUN pip install netaddr 14 | # RUN pip install setuptools 15 | # RUN pip install pyOpenSSL 16 | # RUN pip install 'requests[security]' 17 | 18 | RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/0fc1a60a996d256f747f08084df90bd2/raw/944f861166c84109a2e8c287d5a97a21b23eae33/mintyOffline-v0_0_4.py 19 | 20 | COPY . /app 21 | 22 | RUN chmod +x /app/*.py 23 | 24 | RUN mkdir /shared 25 | VOLUME ["/shared"] 26 | 27 | ENTRYPOINT ["/app/mintyOffline-v0_0_4.py"] 28 | CMD [] 29 | -------------------------------------------------------------------------------- /azurecli/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:6 2 | # FROM node:6 3 | # FROM node:8 4 | 5 | MAINTAINER TweekFawkes 6 | 7 | RUN mkdir /app 8 | WORKDIR /app 9 | 10 | #RUN apt-get update && apt-get -y install apt-transport-https 11 | #RUN apt-get update && apt-get -y install build-essential 12 | #RUN apt-get update && apt-get -y install curl 13 | #RUN apt-get update && apt-get -y install ca-certificates 14 | #RUN apt-get update && apt-get -y install git 15 | #RUN apt-get update && apt-get -y install lsb-release 16 | #RUN apt-get update && apt-get -y install python-all 17 | #RUN apt-get update && apt-get -y install rlwrap 18 | #RUN apt-get update && apt-get -y install vim 19 | #RUN apt-get update && apt-get -y install nano 20 | #RUN apt-get update && apt-get -y install jq 21 | 22 | RUN npm install --global azure-cli@0.10.17 23 | 24 | RUN rm /bin/sh && ln -s /bin/bash /bin/sh 25 | RUN azure config mode arm 26 | ENV EDITOR vim 27 | 28 | RUN mkdir /shared 29 | VOLUME ["/shared"] 30 | -------------------------------------------------------------------------------- /nbvulns005/app.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from flask import Flask, request, render_template, redirect 4 | import os 5 | 6 | app = Flask(__name__) 7 | 8 | 9 | @app.route('/') 10 | def root_redirect(): 11 | return redirect("/net_health", code=302) 12 | 13 | 14 | @app.route('/net_health', methods=['GET','POST']) 15 | def report_reader(): 16 | error = False 17 | error_message = '' 18 | results = '' 19 | cmd = request.args.get('cmd') 20 | 21 | try: 22 | 23 | if cmd: 24 | results = os.popen(cmd).read() 25 | 26 | except Exception as e: 27 | error = True 28 | error_message = str(e) 29 | 30 | return render_template('net_health.html', 31 | error=error, 32 | error_message=error_message, 33 | cmd=cmd, 34 | results=results) 35 | 36 | if __name__ == '__main__': 37 | app.run('0.0.0.0', 5001, debug=True) 38 | -------------------------------------------------------------------------------- /lolruslove/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python-pip 10 | RUN apt-get update && apt-get -y install python-requests 11 | RUN apt-get update && apt-get -y install wget 12 | RUN apt-get update && apt-get -y install libssl-dev 13 | 14 | RUN pip install netaddr 15 | RUN pip install setuptools 16 | RUN pip install pyOpenSSL 17 | RUN pip install 'requests[security]' 18 | RUN pip install scrapy 19 | RUN pip install enum34 20 | RUN pip install cryptography 21 | RUN pip install dnspython 22 | RUN pip install pyopenssl --upgrade 23 | 24 | RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/01462d2f5c7d810dd4ddd3b0099d1948/raw/4277c11c9a43e4d905c4a8fbd9a4e2b7141c320d/lolruslove-v0_0_7.py 25 | 26 | COPY . /app 27 | 28 | RUN chmod +x /app/*.py 29 | 30 | RUN mkdir /shared 31 | VOLUME ["/shared"] 32 | 33 | ENTRYPOINT ["/app/lolruslove-v0_0_7.py"] 34 | CMD [] 35 | -------------------------------------------------------------------------------- /weirdaal/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | # RUN apt-get update && apt-get -y install python 9 | RUN apt-get update && apt-get -y install python3 10 | RUN apt-get update && apt-get -y install python3-pip 11 | # RUN apt-get update && apt-get -y install python-requests 12 | # RUN apt-get update && apt-get -y install wget 13 | RUN apt-get update && apt-get -y install git 14 | 15 | # RUN pip install netaddr 16 | # RUN pip install setuptools 17 | # RUN pip install pyOpenSSL 18 | # RUN pip install 'requests[security]' 19 | 20 | # RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/3182fbbab77bbd87fe656666e8166bfc/raw/a44105300a33b1f26989896b8bb4c62af6503d19/nimbusland-v0_0_7.py 21 | 22 | COPY . /app 23 | 24 | #RUN git clone https://github.com/cno-io/weirdAAL.git 25 | WORKDIR /app/weirdAAL 26 | RUN pip3 install -r requirements.txt 27 | 28 | RUN chmod +x /app/weirdAAL/*.py 29 | RUN python3 create_dbs.py 30 | 31 | RUN mkdir /shared 32 | VOLUME ["/shared"] 33 | 34 | ENTRYPOINT ["/app/weirdAAL/weirdAAL.py"] 35 | CMD [] 36 | -------------------------------------------------------------------------------- /nbvulns004/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, request, redirect, render_template 2 | from lxml import etree 3 | 4 | app = Flask(__name__) 5 | 6 | 7 | @app.route('/') 8 | def root_redirect(): 9 | return redirect("/report_creation", code=302) 10 | 11 | 12 | # xml external entities and DTD 13 | @app.route('/report_creation', methods = ['POST', 'GET']) 14 | def xml_report_processor(): 15 | parsed_xml = None 16 | error = False 17 | error_message = '' 18 | 19 | if request.method == 'POST': 20 | xml = request.form['xml'] 21 | parser = etree.XMLParser(no_network=False, dtd_validation=False) 22 | try: 23 | doc = etree.fromstring(xml) 24 | parsed_xml = etree.tostring(doc).decode("utf-8") 25 | except Exception as e: 26 | error = True 27 | error_message = str(e) 28 | 29 | return render_template('report_creation.html', 30 | error=error, 31 | error_message=error_message, 32 | results=parsed_xml) 33 | 34 | if __name__ == '__main__': 35 | app.run() -------------------------------------------------------------------------------- /pmapper/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | # RUN apt-get update && apt-get -y install python3 10 | # RUN apt-get update && apt-get -y install python3-pip 11 | RUN apt-get update && apt-get -y install python-pip 12 | RUN apt-get update && apt-get -y install python-requests 13 | # RUN apt-get update && apt-get -y install wget 14 | RUN apt-get update && apt-get -y install git 15 | RUN apt-get update && apt-get -y install graphviz 16 | RUN apt-get update && apt-get -y install git 17 | 18 | RUN pip install pydot 19 | # RUN pip install setuptools 20 | # RUN pip install pyOpenSSL 21 | # RUN pip install 'requests[security]' 22 | 23 | # RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/3182fbbab77bbd87fe656666e8166bfc/raw/a44105300a33b1f26989896b8bb4c62af6503d19/nimbusland-v0_0_7.py 24 | 25 | COPY . /app 26 | 27 | RUN git clone https://github.com/cno-io/PMapper.git 28 | WORKDIR /app/PMapper 29 | RUN pip install -r requirements.txt 30 | # RUN pip3 install -r requirements.txt 31 | 32 | RUN chmod +x /app/PMapper/*.py 33 | # RUN python3 create_dbs.py 34 | 35 | RUN mkdir /shared 36 | VOLUME ["/shared"] 37 | 38 | ENTRYPOINT ["/app/PMapper/pmapper.py"] 39 | CMD [] 40 | -------------------------------------------------------------------------------- /nbvulns001/static/styles.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Roboto'); 2 | 3 | body { 4 | /* background-color: ghostwhite; */ 5 | text-align: center; 6 | font-family: 'Roboto', sans-serif; 7 | color: #466b8a; 8 | overflow: hidden; 9 | position: absolute; 10 | top: 0; 11 | left: 0; 12 | width: 100vw; 13 | height: 100vh; 14 | margin: 0; 15 | } 16 | 17 | img.profile-image { 18 | max-width: 50%; 19 | border-radius: 5px; 20 | border: 2px solid #2889f163; 21 | user-select: none; 22 | } 23 | 24 | ul, ol { 25 | list-style: none; 26 | } 27 | 28 | .skill-list { 29 | list-style: circle; 30 | text-align: center; 31 | width: fit-content; 32 | margin: 0 auto; 33 | } 34 | .skill-list li { 35 | width: fit-content; 36 | } 37 | .skill-list li:not(:first-child) { 38 | border-top: 1px dotted; 39 | margin-top: 6px; 40 | padding-top: 4px; 41 | } 42 | 43 | main { 44 | border: 2px solid #eaeaea; 45 | background-color: white; 46 | padding-bottom: 20px; 47 | width: 80%; 48 | margin: 10% auto 0 auto; 49 | max-height: 70vh; 50 | overflow-x: hidden; 51 | overflow-y: auto; 52 | } 53 | .background { 54 | position: absolute; 55 | top: 50vw; 56 | left: 50vw; 57 | min-width: 100vw; 58 | min-height: 100vh; 59 | transform: translate(-50vw, -50vw); 60 | z-index: -100; 61 | filter: blur(1px) saturate(50%); 62 | } 63 | -------------------------------------------------------------------------------- /nbvulns003/app.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from flask import Flask, request, render_template, redirect 4 | import base64 5 | 6 | app = Flask(__name__) 7 | 8 | 9 | @app.route('/') 10 | def root_redirect(): 11 | return redirect("/report", code=302) 12 | 13 | 14 | @app.route('/report', methods=['GET']) 15 | def report_reader(): 16 | error = False 17 | error_message = '' 18 | report_found = False 19 | report_contents = '' 20 | name = request.args.get('name') 21 | 22 | try: 23 | 24 | if name: 25 | report_name = 'reports/' + request.args.get('name') 26 | 27 | if name.endswith('.png'): 28 | report_contents = base64.b64encode(open(report_name, 'rb').read()).decode('ascii') 29 | else: 30 | report_contents = open(report_name, 'rb').read().decode('utf-8') 31 | report_found = True 32 | 33 | except Exception as e: 34 | error = True 35 | error_message = str(e) 36 | 37 | return render_template('report.html', 38 | error=error, 39 | error_message=error_message, 40 | report_found=report_found, 41 | report_contents=report_contents, 42 | report_name=name) 43 | 44 | if __name__ == '__main__': 45 | app.run('0.0.0.0', 80) -------------------------------------------------------------------------------- /aws_inventory/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python 9 | # RUN apt-get update && apt-get -y install python3 10 | # RUN apt-get update && apt-get -y install python3-pip 11 | RUN apt-get update && apt-get -y install python-pip 12 | # RUN apt-get update && apt-get -y install python-requests 13 | # RUN apt-get update && apt-get -y install wget 14 | RUN apt-get update && apt-get -y install git 15 | #RUN apt-get update && apt-get -y install graphviz 16 | #RUN apt-get update && apt-get -y install git 17 | RUN apt-get update && apt-get -y install python-tk 18 | 19 | #RUN pip install pydot 20 | # RUN pip install setuptools 21 | # RUN pip install pyOpenSSL 22 | # RUN pip install 'requests[security]' 23 | 24 | # RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/3182fbbab77bbd87fe656666e8166bfc/raw/a44105300a33b1f26989896b8bb4c62af6503d19/nimbusland-v0_0_7.py 25 | 26 | COPY . /app 27 | 28 | RUN git clone https://github.com/cno-io/aws-inventory.git 29 | WORKDIR /app/aws-inventory 30 | RUN pip install -r requirements.txt 31 | # RUN pip3 install -r requirements.txt 32 | RUN chmod +x /app/aws-inventory/*.py 33 | # RUN python3 create_dbs.py 34 | 35 | RUN mkdir /shared 36 | VOLUME ["/shared"] 37 | 38 | ENTRYPOINT ["/app/aws-inventory/aws_inventory.py"] 39 | CMD [] 40 | -------------------------------------------------------------------------------- /cosmik/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install python3 9 | RUN apt-get update && apt-get -y install python3-pip 10 | #RUN apt-get update && apt-get -y install python-pip 11 | # RUN apt-get update && apt-get -y install python-requests 12 | RUN apt-get update && apt-get -y install wget 13 | # RUN apt-get update && apt-get -y install git 14 | 15 | # RUN pip install netaddr 16 | # RUN pip install setuptools 17 | # RUN pip install pyOpenSSL 18 | # RUN pip install 'requests[security]' 19 | 20 | # RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/3182fbbab77bbd87fe656666e8166bfc/raw/a44105300a33b1f26989896b8bb4c62af6503d19/nimbusland-v0_0_7.py 21 | RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/b46e06acda6a1eb93d994aacd108515d/raw/4cd03062e0158cdc3420ed887e53692ecbc811af/cosmik.py 22 | RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/88961eb564837a700e6bc2119d4d42ee/raw/c89f42532c2557890587c9cb65b132e10da7e8f5/cosmik_requirements.txt 23 | 24 | COPY . /app 25 | 26 | # RUN git clone https://github.com/cno-io/weirdAAL.git 27 | # WORKDIR /app/weirdAAL 28 | RUN pip3 install -r cosmik_requirements.txt 29 | 30 | RUN chmod +x /app/*.py 31 | # RUN python3 create_dbs.py 32 | 33 | RUN mkdir /shared 34 | VOLUME ["/shared"] 35 | 36 | ENTRYPOINT ["/app/cosmik.py"] 37 | CMD [] 38 | -------------------------------------------------------------------------------- /nbvulns002/static/styles.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Dancing+Script|Montserrat'); 2 | 3 | body { 4 | text-align: center; 5 | font-family: 'Montserrat', sans-serif; 6 | } 7 | 8 | fieldset { 9 | border: none; 10 | width: 100% !important; 11 | padding: 0; 12 | margin: 0 !important; 13 | } 14 | 15 | form { 16 | position: relative; 17 | width: 50%; 18 | margin: 0 auto; 19 | } 20 | 21 | form * { 22 | display: block; 23 | width: fit-content; 24 | margin: 15px auto; 25 | } 26 | 27 | input[type="submit"] { 28 | font-size: 1.5em; 29 | padding: 40px; 30 | } 31 | 32 | input[type="text"] { 33 | font-size: 1em; 34 | max-width: 300px; 35 | height: 25px; 36 | text-align: center; 37 | outline: none; 38 | width: 80%; 39 | } 40 | 41 | .congratulations { 42 | position: absolute; 43 | top: 30%; 44 | left: 50%; 45 | transform: translate(-50%, -30%); 46 | font-family: 'Dancing Script', handwriting; 47 | font-size: 4em; 48 | color: white; 49 | text-shadow: 0 0 14px black; 50 | } 51 | 52 | #background { 53 | user-select: none; 54 | z-index: -100; 55 | position: fixed; 56 | top: 50%; 57 | left: 50%; 58 | transform: translate(-50%, -50%); 59 | min-width: 100vw; 60 | min-height: 100vh; 61 | } 62 | 63 | .code { 64 | background-color: #f7f7f7; 65 | padding: 5px 10px; 66 | } 67 | 68 | .code, .code main { 69 | border-radius: 3px; 70 | border: 2px solid #757575; 71 | } 72 | 73 | .code h1 { 74 | margin: 10px 0; 75 | } 76 | 77 | .code main { 78 | background-color: white; 79 | white-space: pre-wrap; 80 | text-align: left; 81 | } 82 | -------------------------------------------------------------------------------- /nbvulns003/.s3cfg: -------------------------------------------------------------------------------- 1 | [default] access_key = S1ZTFOB2NCY7BB81MAP2 secret_key = gwL...FLAGSareMagic!...+ge host_base = localhost:80 host_bucket = localhost:80 access_token = add_encoding_exts = add_headers = bucket_location = gd1 ca_certs_file = cache_file = check_ssl_certificate = True cloudfront_host = cloudfront.amazonaws.com default_mime_type = binary/octet-stream delay_updates = False delete_after = False delete_after_fetch = False delete_removed = False dry_run = False enable_multipart = True encoding = UTF-8 encrypt = False expiry_date = expiry_days = expiry_prefix = follow_symlinks = False force = False get_continue = False gpg_command = /usr/bin/gpg gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_passphrase = guess_mime_type = True human_readable_sizes = False ignore_failed_copy = False invalidate_default_index_on_cf = False invalidate_default_index_root_on_cf = True invalidate_on_cf = False list_md5 = False log_target_prefix = max_delete = -1 mime_type = multipart_chunk_size_mb = 15 preserve_attrs = True progress_meter = True proxy_host = proxy_port = 0 put_continue = False recursive = False recv_chunk = 4096 reduced_redundancy = False restore_days = 1 send_chunk = 4096 server_side_encryption = False signature_v2 = False simpledb_host = sdb.amazonaws.com skip_existing = False socket_timeout = 300 urlencoding_mode = normal use_https = False use_mime_magic = True verbosity = WARNING website_endpoint = http://%(bucket)s.s3-website-%(location)s.amazonaws.com/ website_error = website_index = index.html 2 | -------------------------------------------------------------------------------- /wfuzz/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | RUN apt-get update && apt-get -y install build-essential 9 | RUN apt-get update && apt-get -y install libssl-dev 10 | RUN apt-get update && apt-get -y install libffi-dev 11 | RUN apt-get update && apt-get -y install libxml2-dev 12 | RUN apt-get update && apt-get -y install libxslt1-dev 13 | RUN apt-get update && apt-get -y install zlib1g-dev 14 | RUN apt-get update && apt-get -y install libcurl4-openssl-dev 15 | RUN apt-get update && apt-get -y install python 16 | RUN apt-get update && apt-get -y install python-dev 17 | RUN apt-get update && apt-get -y install python-pip 18 | # RUN apt-get update && apt-get -y install python3 19 | # RUN apt-get update && apt-get -y install python3-pip 20 | # RUN apt-get update && apt-get -y install python-requests 21 | # RUN apt-get update && apt-get -y install wget 22 | # RUN apt-get update && apt-get -y install git 23 | # RUN apt-get update && apt-get -y install graphviz 24 | # RUN apt-get update && apt-get -y install git 25 | # RUN apt-get update && apt-get -y install python-tk 26 | 27 | RUN pip install wfuzz 28 | # RUN pip install setuptools 29 | # RUN pip install pyOpenSSL 30 | # RUN pip install 'requests[security]' 31 | 32 | # RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/3182fbbab77bbd87fe656666e8166bfc/raw/a44105300a33b1f26989896b8bb4c62af6503d19/nimbusland-v0_0_7.py 33 | 34 | COPY . /app 35 | 36 | #RUN git clone https://github.com/cno-io/aws-inventory.git 37 | WORKDIR /app 38 | # RUN pip install -r requirements.txt 39 | # RUN pip3 install -r requirements.txt 40 | # RUN chmod +x /app/aws-inventory/*.py 41 | # RUN python3 create_dbs.py 42 | 43 | RUN mkdir /shared 44 | VOLUME ["/shared"] 45 | 46 | ENTRYPOINT ["/usr/local/bin/wfuzz"] 47 | CMD [] 48 | -------------------------------------------------------------------------------- /gcpsagetatoken/iamServiceAccountsGetAccessToken.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import requests 4 | import json 5 | 6 | from apiclient.discovery import build 7 | import google.oauth2.credentials 8 | 9 | sBanner = """ 10 | 11 | ###### ###### ######## 12 | ## ## ## ## ## ## 13 | ## ## ## ## 14 | ## #### ## ######## 15 | ## ## ## ## 16 | ## ## ## ## ## 17 | ###### ###### ## 18 | 19 | iam_serviceAccounts_getAccessToken.py 20 | 21 | """ 22 | 23 | # Ref: https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getAccessToken.py 24 | 25 | sUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36" 26 | 27 | print(sBanner) 28 | 29 | # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # 30 | 31 | sDirtyAccessToken = input("AccessToken: ") 32 | sAccessToken = str(sDirtyAccessToken).strip() 33 | print("[+] sAccessToken: " + str(sAccessToken) + "") 34 | 35 | sDirtyServiceAccountName = input("ServiceAccountName: ") 36 | sServiceAccountName = str(sDirtyServiceAccountName).strip() 37 | print("[+] sServiceAccountName: " + str(sServiceAccountName) + "") 38 | 39 | # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # 40 | 41 | sEnter = input("Press the [Enter] key to continue... ") 42 | 43 | credentials = google.oauth2.credentials.Credentials(sAccessToken) 44 | service = build(serviceName='iamcredentials', version='v1', credentials=credentials) 45 | 46 | dBody = { 47 | 'scope': [ 48 | 'https://www.googleapis.com/auth/iam', 49 | 'https://www.googleapis.com/auth/cloud-platform' 50 | ] 51 | } 52 | 53 | sName = 'projects/-/serviceAccounts/'+sServiceAccountName 54 | res = service.projects().serviceAccounts().generateAccessToken(name=sName, body=dBody).execute() 55 | 56 | print(json.dumps(res, indent=4)) -------------------------------------------------------------------------------- /boomerangapi/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | 3 | MAINTAINER TweekFawkes 4 | 5 | RUN mkdir /app 6 | WORKDIR /app 7 | 8 | #RUN apt-get update && apt-get -y install python 9 | 10 | #RUN apt-get update && apt-get -y install software-properties-common 11 | #RUN add-apt-repository ppa:deadsnakes/ppa 12 | 13 | RUN apt-get update && apt-get -y install python3 14 | RUN apt-get update && apt-get -y install python3-pip 15 | 16 | #RUN apt-get update && apt-get -y install python-pip 17 | #RUN apt-get update && apt-get -y install python-requests 18 | #RUN apt-get update && apt-get -y install wget 19 | #RUN apt-get update && apt-get -y install git 20 | #RUN apt-get update && apt-get -y install graphviz 21 | #RUN apt-get update && apt-get -y install git 22 | #RUN apt-get update && apt-get -y install python-tk 23 | 24 | #RUN apt-get update && apt-get -y install libsqlite3-dev 25 | 26 | #RUN apt-get update && apt-get -y install libssl-dev 27 | #RUN apt-get update && apt-get -y install build-essential 28 | #RUN apt-get update && apt-get -y install python3-dev 29 | #RUN apt-get update && apt-get -y install libffi-dev 30 | #RUN apt-get update && apt-get -y install zlib1g-dev 31 | #RUN apt-get update && apt-get -y install libxml2 32 | #RUN apt-get update && apt-get -y install libxml2-dev 33 | #RUN apt-get update && apt-get -y install libxslt1-dev 34 | 35 | #RUN pip install pydot 36 | # RUN pip install setuptools 37 | # RUN pip install pyOpenSSL 38 | # RUN pip install 'requests[security]' 39 | 40 | RUN pip3 install boto3 41 | 42 | # RUN wget --no-check-certificate https://gist.githubusercontent.com/cno-io/3182fbbab77bbd87fe656666e8166bfc/raw/a44105300a33b1f26989896b8bb4c62af6503d19/nimbusland-v0_0_7.py 43 | 44 | COPY . /app 45 | 46 | # RUN git clone https://github.com/cno-io/aws-inventory.git 47 | #WORKDIR /app/voodoo-ce 48 | #RUN pip3 install -r requirements.txt 49 | # RUN pip3 install -r requirements.txt 50 | RUN chmod +x /app/*.py 51 | # RUN python3 create_dbs.py 52 | 53 | RUN mkdir /shared 54 | VOLUME ["/shared"] 55 | 56 | ENTRYPOINT ["/usr/bin/python3", "/app/boomerangApi-v0_3.py"] 57 | CMD [] -------------------------------------------------------------------------------- /nbvulns001/index.js: -------------------------------------------------------------------------------- 1 | const fastify = require('fastify') 2 | const args = require('yargs').argv 3 | const request = require('request') 4 | const fastifyStatic = require('fastify-static') 5 | const {join} = require('path') 6 | const url = require("url") 7 | 8 | const validContentTypes = ['image/jpeg', 'image/jpg', 'image/png'] 9 | 10 | const defaultContentTypes = {png: 'image/png', jpg: 'image/jpeg'} 11 | 12 | const PORT = 8080; 13 | const HOST = '0.0.0.0'; 14 | 15 | const app = fastify() 16 | 17 | app.get('/extimage', (req, reply) => { 18 | const path = req.query.p 19 | if (typeof path != 'string' || path.length < 1) return reply.code(400).send('Malformed Request') 20 | let target 21 | try { 22 | target = url.parse(path) 23 | } catch(err) { 24 | return reply.code(400).send('Malformed URL') 25 | } 26 | 27 | const {href, protocol} = target 28 | 29 | if (typeof protocol != 'string' || !['http:', 'https:'].includes(protocol)) return reply.code(400).send('Malformed Protocol') 30 | if (typeof href != 'string' || href.length < 1) return reply.code(400).send('Malformed URL') 31 | 32 | request(href, {encoding: null}, (err, response, body) => { 33 | if (err) { 34 | console.log(err) 35 | return reply.code(500).send('Internal Error') 36 | } 37 | 38 | let contentType 39 | let extension = href.split('.') 40 | extension = extension[extension.length - 1] 41 | 42 | if (validContentTypes.includes(response.headers["content-type"])) { 43 | contentType = response.headers["content-type"] 44 | } else if (defaultContentTypes.hasOwnProperty(extension)) { 45 | contentType = defaultContentTypes[extension] 46 | } else { 47 | contentType = defaultContentTypes.jpg 48 | } 49 | 50 | return reply.code(response.statusCode).type(contentType).header('cache-control', 'max-age='+ (60 * 60 * 24 * 5)).send(body) 51 | }) 52 | }) 53 | 54 | if ((args.s || args.static) === true) { 55 | console.log('Serving Static Content') 56 | app.register(fastifyStatic, {root: '/usr/src/app/static'}) 57 | } 58 | 59 | app.listen(PORT, HOST, (err) => { 60 | if (err) return console.err(err) 61 | console.log('Server Listening on :'+PORT) 62 | }) 63 | -------------------------------------------------------------------------------- /gcpsagetatoken/iamServiceAccountsGetAccessToken (Jul 29, 2020 5-50-23 PM).py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import requests 4 | import json 5 | 6 | from argparse import ArgumentParser 7 | 8 | from apiclient.discovery import build 9 | import google.oauth2.credentials 10 | 11 | sBanner = """ 12 | 13 | ###### ###### ######## 14 | ## ## ## ## ## ## 15 | ## ## ## ## 16 | ## #### ## ######## 17 | ## ## ## ## 18 | ## ## ## ## ## 19 | ###### ###### ## 20 | 21 | iam_serviceAccounts_getAccessToken.py 22 | 23 | """ 24 | 25 | # Ref: https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getAccessToken.py 26 | 27 | sUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36" 28 | 29 | print(sBanner) 30 | 31 | # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # 32 | 33 | # Get the Arguments 34 | parser = ArgumentParser(add_help=True) 35 | 36 | parser.add_argument('service_account', 37 | action="store", 38 | help="[required] e.g.: 919372049334-compute@developer.gserviceaccount.com") 39 | parser.add_argument('access_token', 40 | action="store", 41 | help="[required] e.g.: ya29.c.KmnVB1Q119UvX1g-cv4mXtPKDnnMGkzHSTpiyZWbj-z7nlPc4l6Lg0PiWVWzj4CKhrBvqRNUApSATsvkZ9naCxXJuqA5MBg2a2KpMUXmF0asiFzYJRshg9joJhIAEHMQlLhQyDaqQAUX66Y") 42 | 43 | args = parser.parse_args() 44 | 45 | # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # 46 | 47 | 48 | sServiceAccountName = str(args.service_account).strip() 49 | sAccessToken = str(args.access_token).strip() 50 | 51 | print("[+] sServiceAccountName: " + str(sServiceAccountName) + "") 52 | print("[+] sAccessToken: " + str(sAccessToken) + "") 53 | 54 | # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # 55 | 56 | sEnter = raw_input("Press the [Enter] key to continue... ") 57 | 58 | credentials = google.oauth2.credentials.Credentials(sAccessToken) 59 | service = build(serviceName='iamcredentials', version='v1', credentials=credentials) 60 | 61 | dBody = { 62 | 'scope': [ 63 | 'https://www.googleapis.com/auth/iam', 64 | 'https://www.googleapis.com/auth/cloud-platform' 65 | ] 66 | } 67 | 68 | sName = 'projects/-/serviceAccounts/'+sServiceAccountName 69 | res = service.projects().serviceAccounts().generateAccessToken(name=sName, body=dBody).execute() 70 | 71 | print(json.dumps(res, indent=4)) -------------------------------------------------------------------------------- /nbvulns003/templates/report.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lizard Blue Report Reader 4 | 5 | 6 | 7 | 8 | 28 | 29 |
30 |
31 |

Report Viewer

32 |

Requested Report: {{ report_name }}

33 | {% if report_found %} 34 | {% if report_name.endswith('.png') %} 35 | 36 | {% else %} 37 |
38 | {{ report_contents }} 39 |
40 | {% endif %} 41 | {% endif %} 42 | 43 | {% if error %} 44 | {{ error_message }} 45 | {% endif %} 46 |
47 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /nbvulns005/templates/net_health.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lizard Red Network Health Checkerr 4 | 5 | 6 | 7 | 8 | 14 | 15 |
16 |
17 |

Network Health Checker

18 |
19 |
20 | 26 |

27 | Command to be executed: 28 |

29 |
30 | 31 |
32 |
33 | {% if results %} 34 |
35 | 38 |
39 | {% endif %} 40 | 41 | {% if error %} 42 | {{ error_message }} 43 | {% endif %} 44 |
45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 64 | -------------------------------------------------------------------------------- /nbvulns004/templates/report_creation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lizard Blue Report Creation 4 | 5 | 6 | 7 | 8 | 28 | 29 |
30 |
31 |

Report Submission

32 | 33 | 34 | 35 |
36 |

Enter report XML

37 | 38 |

39 | 40 |

41 |
42 | 43 | {% if results %} 44 | {{ results }} 45 | {% endif %} 46 | 47 | {% if error %} 48 | {{ error_message }} 49 | {% endif %} 50 | 51 |
52 |
53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /boomerangapi/boomerangApi-v0_3.py: -------------------------------------------------------------------------------- 1 | import boto3 2 | import re 3 | import datetime 4 | 5 | # BoomerangAPI.py 6 | # @TweekFawkes 7 | # Ref: https://github.com/RhinoSecurityLabs/IPRotate_Burp_Extension/blob/master/IPRotate.py 8 | 9 | # aws configure --profile apigateway 10 | # 11 | # AKIA.............BAR 12 | # VnM..................................1Im 13 | # us-east-2 14 | # json 15 | # 16 | # aws --profile apigateway sts get-caller-identity 17 | # 18 | 19 | print(""" 20 | ___ 21 | _-_ _,, - -_, -__ /\\ _-_, 22 | -/ ) _ _ ( ~/|| || \\ // 23 | ~||_< /'\\ /'\\ \\/\\/\\ _-_ ,._-_ < \, \\/\\ / \\ ( / || /||__|| || 24 | || \\ || || || || || || || || \\ || /-|| || || || || \/==|| \||__|| ~|| 25 | ,/--|| || || || || || || || ||/ || (( || || || || || /_ _|| || |, || 26 | _--_-' \\,/ \\,/ \\ \\ \\ \\,/ \\, \/\\ \\ \\ \\_-| ( - \\, _-||-_/ _-_, 27 | ( / \ || 28 | '----` 29 | """) 30 | 31 | # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # 32 | 33 | sDirtyAwsAccessKeyId = input("AWS Access Key ID, e.g. AKIA... [None]: ") 34 | sAwsAccessKeyId = str(sDirtyAwsAccessKeyId).strip() 35 | print("[+] sAwsAccessKeyId: " + str(sAwsAccessKeyId) + "") 36 | 37 | sDirtyAwsSecretAccessKey = input("AWS Secret Access Key [None]: ") 38 | sAwsSecretAccessKey = str(sDirtyAwsSecretAccessKey).strip() 39 | print("[+] sAwsSecretAccessKey: " + str(sAwsSecretAccessKey)[0:4] + "......" + str(sAwsSecretAccessKey)[0:-4] + "") 40 | 41 | # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # --- # 42 | 43 | sDirtyAwsRegionName = input("Region to Deploy API Gateway into, e.g. us-east-2 [None]: ") 44 | sAwsRegionName = str(sDirtyAwsRegionName).strip() 45 | print("[+] sAwsRegionName: " + str(sAwsRegionName) + "") 46 | 47 | sDirtyTargetUrl = input("Target URL to redir traffic to, e.g. http://ip.on.the.internet:1080/ [None]: ") 48 | sTargetUrl = str(sDirtyTargetUrl).strip() 49 | print("[+] sTargetUrl: " + str(sTargetUrl) + "") 50 | 51 | # sProfileName = "apigateway" 52 | # sRegion = "us-east-2" 53 | #sTargetUrl = "http://18.189.188.205:1080/" 54 | sUniqueString = str(datetime.datetime.now().strftime("%Y%m%d%H%M%S")) 55 | sApiName = "BoomerangAPI" + sUniqueString 56 | sStageName = "v1" 57 | sUsage = "boomerangusage" 58 | 59 | #print("[*] sProfileName: " + str(sProfileName)) 60 | #print("[*] sRegion: " + str(sRegion)) 61 | print("[*] sTargetUrl: " + str(sTargetUrl)) 62 | print("[*] sUniqueString: " + str(sUniqueString)) 63 | print("[*] sApiName: " + str(sApiName)) 64 | print("[*] sStageName: " + str(sStageName)) 65 | print("[*] sUsage: " + str(sUsage)) 66 | 67 | #session = boto3.Session(profile_name=sProfileName) 68 | session = boto3.Session(aws_access_key_id=sAwsAccessKeyId, aws_secret_access_key=sAwsSecretAccessKey, region_name=sAwsRegionName) 69 | 70 | awsclient = session.client('apigateway', region_name=sAwsRegionName) 71 | 72 | create_api_response = awsclient.create_rest_api( 73 | name=sApiName, 74 | endpointConfiguration={ 75 | 'types': [ 76 | 'REGIONAL', 77 | ] 78 | } 79 | ) 80 | 81 | get_resource_response = awsclient.get_resources(restApiId=create_api_response['id']) 82 | 83 | restAPIId = create_api_response['id'] 84 | print("[~] restAPIId: " + str(restAPIId)) 85 | 86 | create_resource_response = awsclient.create_resource( 87 | restApiId=create_api_response['id'], 88 | parentId=get_resource_response['items'][0]['id'], 89 | pathPart='{proxy+}' 90 | ) 91 | 92 | awsclient.put_method( 93 | restApiId=create_api_response['id'], 94 | resourceId=get_resource_response['items'][0]['id'], 95 | httpMethod='ANY', 96 | authorizationType='NONE', 97 | requestParameters={ 98 | 'method.request.path.proxy':True 99 | } 100 | ) 101 | 102 | awsclient.put_integration( 103 | restApiId=create_api_response['id'], 104 | resourceId=get_resource_response['items'][0]['id'], 105 | type='HTTP_PROXY', 106 | httpMethod='ANY', 107 | integrationHttpMethod='ANY', 108 | uri=sTargetUrl, 109 | connectionType='INTERNET', 110 | requestParameters={ 111 | 'integration.request.path.proxy':'method.request.path.proxy' 112 | } 113 | ) 114 | 115 | awsclient.put_method( 116 | restApiId=create_api_response['id'], 117 | resourceId=create_resource_response['id'], 118 | httpMethod='ANY', 119 | authorizationType='NONE', 120 | requestParameters={ 121 | 'method.request.path.proxy':True 122 | } 123 | ) 124 | 125 | awsclient.put_integration( 126 | restApiId=create_api_response['id'], 127 | resourceId=create_resource_response['id'], 128 | type= 'HTTP_PROXY', 129 | httpMethod= 'ANY', 130 | integrationHttpMethod='ANY', 131 | uri= sTargetUrl+'{proxy}', 132 | connectionType= 'INTERNET', 133 | requestParameters={ 134 | 'integration.request.path.proxy':'method.request.path.proxy' 135 | } 136 | ) 137 | 138 | deploy_response = awsclient.create_deployment( 139 | restApiId=restAPIId, 140 | stageName=sStageName 141 | ) 142 | 143 | sEndpoint = str(restAPIId+'.execute-api.'+sAwsRegionName+'.amazonaws.com') 144 | print("[~] sEndpoint: " + str(sEndpoint)) 145 | 146 | usage_response = awsclient.create_usage_plan( 147 | name=sUsage, 148 | description=restAPIId, 149 | apiStages=[ 150 | { 151 | 'apiId': restAPIId, 152 | 'stage': sStageName 153 | } 154 | ] 155 | ) 156 | 157 | print("[~] usage_response: " + str(usage_response)) 158 | 159 | print("[+] Redirect URL: https://" + sEndpoint + '/' + sStageName) -------------------------------------------------------------------------------- /nbvulns003/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Log In - Espresso 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 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 | 90 | 91 | 94 | 97 | 98 | 99 | 100 | 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 |
132 |
133 |
134 | 135 |
136 |
137 | 138 | 139 | 140 | 141 | 142 | 143 | 226 | 227 | 228 | 229 | 230 |
231 | 232 | 233 | 235 | 236 | 237 | 238 | 239 | 240 |
241 | 293 |
294 | 295 | 296 |
297 | 298 | 299 | 300 | 301 | 302 | 303 | 393 | 394 |
395 |
396 | 397 | 398 | -------------------------------------------------------------------------------- /nbvulns001/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ssrf-node", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/events": { 8 | "version": "1.2.0", 9 | "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", 10 | "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" 11 | }, 12 | "@types/node": { 13 | "version": "10.3.2", 14 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.2.tgz", 15 | "integrity": "sha512-9NfEUDp3tgRhmoxzTpTo+lq+KIVFxZahuRX0LHF/9IzKHaWuoWsIrrJ61zw5cnnlGINX8lqJzXYfQTOICS5Q+A==" 16 | }, 17 | "@types/pino": { 18 | "version": "4.16.0", 19 | "resolved": "https://registry.npmjs.org/@types/pino/-/pino-4.16.0.tgz", 20 | "integrity": "sha512-RP7YA3r9nhrLJHidgygV8IdNmkBIivZmYamKgUKjuUF8qfO+eENo8HImNbs8v/Ns4nqBcu7gGmBoIIn8Hbwilw==", 21 | "requires": { 22 | "@types/events": "1.2.0", 23 | "@types/node": "10.3.2" 24 | } 25 | }, 26 | "abstract-logging": { 27 | "version": "1.0.0", 28 | "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-1.0.0.tgz", 29 | "integrity": "sha1-i33q/TEFWbwo93ck3RuzAXcnjBs=" 30 | }, 31 | "ajv": { 32 | "version": "6.5.1", 33 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", 34 | "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", 35 | "requires": { 36 | "fast-deep-equal": "2.0.1", 37 | "fast-json-stable-stringify": "2.0.0", 38 | "json-schema-traverse": "0.4.1", 39 | "uri-js": "4.2.2" 40 | } 41 | }, 42 | "ansi-regex": { 43 | "version": "3.0.0", 44 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 45 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 46 | }, 47 | "ansi-styles": { 48 | "version": "3.2.1", 49 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 50 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 51 | "requires": { 52 | "color-convert": "1.9.1" 53 | } 54 | }, 55 | "asn1": { 56 | "version": "0.2.3", 57 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 58 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 59 | }, 60 | "assert-plus": { 61 | "version": "1.0.0", 62 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 63 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 64 | }, 65 | "asynckit": { 66 | "version": "0.4.0", 67 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 68 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 69 | }, 70 | "avvio": { 71 | "version": "5.5.0", 72 | "resolved": "https://registry.npmjs.org/avvio/-/avvio-5.5.0.tgz", 73 | "integrity": "sha512-jLlEPfpFIaf9j8+Q2ML7xblQVYCjsbaRfcm189PmG4MtDatjqnkQhoZ2npUfeB2hP5XVnifrrZP6FA1lnz6bNA==", 74 | "requires": { 75 | "debug": "3.1.0", 76 | "fastq": "1.6.0" 77 | } 78 | }, 79 | "aws-sign2": { 80 | "version": "0.7.0", 81 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 82 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 83 | }, 84 | "aws4": { 85 | "version": "1.7.0", 86 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", 87 | "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" 88 | }, 89 | "bcrypt-pbkdf": { 90 | "version": "1.0.1", 91 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", 92 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", 93 | "optional": true, 94 | "requires": { 95 | "tweetnacl": "0.14.5" 96 | } 97 | }, 98 | "camelcase": { 99 | "version": "4.1.0", 100 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 101 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" 102 | }, 103 | "caseless": { 104 | "version": "0.12.0", 105 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 106 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 107 | }, 108 | "chalk": { 109 | "version": "2.4.1", 110 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 111 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 112 | "requires": { 113 | "ansi-styles": "3.2.1", 114 | "escape-string-regexp": "1.0.5", 115 | "supports-color": "5.4.0" 116 | } 117 | }, 118 | "cliui": { 119 | "version": "4.1.0", 120 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", 121 | "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", 122 | "requires": { 123 | "string-width": "2.1.1", 124 | "strip-ansi": "4.0.0", 125 | "wrap-ansi": "2.1.0" 126 | } 127 | }, 128 | "co": { 129 | "version": "4.6.0", 130 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 131 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 132 | }, 133 | "code-point-at": { 134 | "version": "1.1.0", 135 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 136 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 137 | }, 138 | "color-convert": { 139 | "version": "1.9.1", 140 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", 141 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", 142 | "requires": { 143 | "color-name": "1.1.3" 144 | } 145 | }, 146 | "color-name": { 147 | "version": "1.1.3", 148 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 149 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 150 | }, 151 | "combined-stream": { 152 | "version": "1.0.6", 153 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", 154 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", 155 | "requires": { 156 | "delayed-stream": "1.0.0" 157 | } 158 | }, 159 | "core-util-is": { 160 | "version": "1.0.2", 161 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 162 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 163 | }, 164 | "cross-spawn": { 165 | "version": "5.1.0", 166 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 167 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 168 | "requires": { 169 | "lru-cache": "4.1.3", 170 | "shebang-command": "1.2.0", 171 | "which": "1.3.1" 172 | } 173 | }, 174 | "dashdash": { 175 | "version": "1.14.1", 176 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 177 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 178 | "requires": { 179 | "assert-plus": "1.0.0" 180 | } 181 | }, 182 | "debug": { 183 | "version": "3.1.0", 184 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 185 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 186 | "requires": { 187 | "ms": "2.0.0" 188 | } 189 | }, 190 | "decamelize": { 191 | "version": "1.2.0", 192 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 193 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 194 | }, 195 | "deepmerge": { 196 | "version": "2.1.1", 197 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.1.tgz", 198 | "integrity": "sha512-urQxA1smbLZ2cBbXbaYObM1dJ82aJ2H57A1C/Kklfh/ZN1bgH4G/n5KWhdNfOK11W98gqZfyYj7W4frJJRwA2w==" 199 | }, 200 | "delayed-stream": { 201 | "version": "1.0.0", 202 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 203 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 204 | }, 205 | "depd": { 206 | "version": "1.1.2", 207 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 208 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 209 | }, 210 | "destroy": { 211 | "version": "1.0.4", 212 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 213 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 214 | }, 215 | "ecc-jsbn": { 216 | "version": "0.1.1", 217 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", 218 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 219 | "optional": true, 220 | "requires": { 221 | "jsbn": "0.1.1" 222 | } 223 | }, 224 | "ee-first": { 225 | "version": "1.1.1", 226 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 227 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 228 | }, 229 | "encodeurl": { 230 | "version": "1.0.2", 231 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 232 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 233 | }, 234 | "end-of-stream": { 235 | "version": "1.4.1", 236 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 237 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", 238 | "requires": { 239 | "once": "1.4.0" 240 | } 241 | }, 242 | "escape-html": { 243 | "version": "1.0.3", 244 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 245 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 246 | }, 247 | "escape-string-regexp": { 248 | "version": "1.0.5", 249 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 250 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 251 | }, 252 | "etag": { 253 | "version": "1.8.1", 254 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 255 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 256 | }, 257 | "execa": { 258 | "version": "0.7.0", 259 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 260 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 261 | "requires": { 262 | "cross-spawn": "5.1.0", 263 | "get-stream": "3.0.0", 264 | "is-stream": "1.1.0", 265 | "npm-run-path": "2.0.2", 266 | "p-finally": "1.0.0", 267 | "signal-exit": "3.0.2", 268 | "strip-eof": "1.0.0" 269 | } 270 | }, 271 | "extend": { 272 | "version": "3.0.1", 273 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 274 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" 275 | }, 276 | "extsprintf": { 277 | "version": "1.3.0", 278 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 279 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 280 | }, 281 | "fast-decode-uri-component": { 282 | "version": "1.0.0", 283 | "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.0.tgz", 284 | "integrity": "sha512-WQSYVKn6tDW/3htASeUkrx5LcnuTENQIZQPCVlwdnvIJ7bYtSpoJYq38MgUJnx1CQIR1gjZ8HJxAEcN4gqugBg==" 285 | }, 286 | "fast-deep-equal": { 287 | "version": "2.0.1", 288 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 289 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" 290 | }, 291 | "fast-json-parse": { 292 | "version": "1.0.3", 293 | "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", 294 | "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" 295 | }, 296 | "fast-json-stable-stringify": { 297 | "version": "2.0.0", 298 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 299 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 300 | }, 301 | "fast-json-stringify": { 302 | "version": "1.5.4", 303 | "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.5.4.tgz", 304 | "integrity": "sha512-rasizCB0oTM1OORpgt37bEuRHI3i5UYkG9BHhhopPEb9ZJ9UsU5v8uFnA4Dpl6xXfBP+uFFyIwHbJDUfJU5eiw==", 305 | "requires": { 306 | "ajv": "6.5.1", 307 | "deepmerge": "2.1.1" 308 | } 309 | }, 310 | "fast-safe-stringify": { 311 | "version": "1.2.3", 312 | "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", 313 | "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==" 314 | }, 315 | "fastify": { 316 | "version": "1.6.0", 317 | "resolved": "https://registry.npmjs.org/fastify/-/fastify-1.6.0.tgz", 318 | "integrity": "sha512-qIzzLaSG59S6zNazT9Jp9hsBlhN4ZviaWI8LGZINquI4T+Mo1SlGUYqauF9oEpbnrnJtfEE9bH9+7J04Bo/fUA==", 319 | "requires": { 320 | "@types/pino": "4.16.0", 321 | "abstract-logging": "1.0.0", 322 | "ajv": "6.5.1", 323 | "avvio": "5.5.0", 324 | "end-of-stream": "1.4.1", 325 | "fast-json-stringify": "1.5.4", 326 | "find-my-way": "1.14.0", 327 | "flatstr": "1.0.8", 328 | "light-my-request": "2.0.2", 329 | "middie": "3.1.0", 330 | "pino": "4.17.3", 331 | "tiny-lru": "1.6.1" 332 | } 333 | }, 334 | "fastify-plugin": { 335 | "version": "1.1.2", 336 | "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-1.1.2.tgz", 337 | "integrity": "sha512-I/K8+5Cr4DJLUt85YrU258leoc5my0ajtY8S9odNcG/6MPnKsmfYoUyjsOBzfN04+E4Tdayt9LrimGxRKtJYaA==", 338 | "requires": { 339 | "semver": "5.5.0" 340 | } 341 | }, 342 | "fastify-static": { 343 | "version": "0.12.0", 344 | "resolved": "https://registry.npmjs.org/fastify-static/-/fastify-static-0.12.0.tgz", 345 | "integrity": "sha512-sWCKUh40noAWcj/N7BjdrPQQS0Ri7wX6HkorWteTt2mQciRgDG1bPTQqBT8uHMNMYh/wGJC1+zlDpBUUYQxzaw==", 346 | "requires": { 347 | "fastify-plugin": "1.1.2", 348 | "readable-stream": "2.3.6", 349 | "send": "0.16.2" 350 | } 351 | }, 352 | "fastq": { 353 | "version": "1.6.0", 354 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", 355 | "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", 356 | "requires": { 357 | "reusify": "1.0.4" 358 | } 359 | }, 360 | "find-my-way": { 361 | "version": "1.14.0", 362 | "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-1.14.0.tgz", 363 | "integrity": "sha512-dYVjhSI/7WwM2tPXIpBp4YwPFpFEJOpNCPCTCq2vca/0t0OfqDOdynsWnMizanJ4tvmBpQbEek9ZKGmf24H3Ig==", 364 | "requires": { 365 | "fast-decode-uri-component": "1.0.0", 366 | "safe-regex": "1.1.0", 367 | "semver-store": "0.2.0" 368 | } 369 | }, 370 | "find-up": { 371 | "version": "2.1.0", 372 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 373 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 374 | "requires": { 375 | "locate-path": "2.0.0" 376 | } 377 | }, 378 | "flatstr": { 379 | "version": "1.0.8", 380 | "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.8.tgz", 381 | "integrity": "sha512-YXblbv/vc1zuVVUtnKl1hPqqk7TalZCppnKE7Pr8FI/Rp48vzckS/4SJ4Y9O9RNiI82Vcw/FydmtqdQOg1Dpqw==" 382 | }, 383 | "forever-agent": { 384 | "version": "0.6.1", 385 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 386 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 387 | }, 388 | "form-data": { 389 | "version": "2.3.2", 390 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", 391 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", 392 | "requires": { 393 | "asynckit": "0.4.0", 394 | "combined-stream": "1.0.6", 395 | "mime-types": "2.1.18" 396 | } 397 | }, 398 | "fresh": { 399 | "version": "0.5.2", 400 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 401 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 402 | }, 403 | "get-caller-file": { 404 | "version": "1.0.2", 405 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", 406 | "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" 407 | }, 408 | "get-stream": { 409 | "version": "3.0.0", 410 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 411 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" 412 | }, 413 | "getpass": { 414 | "version": "0.1.7", 415 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 416 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 417 | "requires": { 418 | "assert-plus": "1.0.0" 419 | } 420 | }, 421 | "har-schema": { 422 | "version": "2.0.0", 423 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 424 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 425 | }, 426 | "har-validator": { 427 | "version": "5.0.3", 428 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", 429 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", 430 | "requires": { 431 | "ajv": "5.5.2", 432 | "har-schema": "2.0.0" 433 | }, 434 | "dependencies": { 435 | "ajv": { 436 | "version": "5.5.2", 437 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 438 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 439 | "requires": { 440 | "co": "4.6.0", 441 | "fast-deep-equal": "1.1.0", 442 | "fast-json-stable-stringify": "2.0.0", 443 | "json-schema-traverse": "0.3.1" 444 | } 445 | }, 446 | "fast-deep-equal": { 447 | "version": "1.1.0", 448 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 449 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" 450 | }, 451 | "json-schema-traverse": { 452 | "version": "0.3.1", 453 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 454 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 455 | } 456 | } 457 | }, 458 | "has-flag": { 459 | "version": "3.0.0", 460 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 461 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 462 | }, 463 | "http-errors": { 464 | "version": "1.6.3", 465 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 466 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 467 | "requires": { 468 | "depd": "1.1.2", 469 | "inherits": "2.0.3", 470 | "setprototypeof": "1.1.0", 471 | "statuses": "1.4.0" 472 | } 473 | }, 474 | "http-signature": { 475 | "version": "1.2.0", 476 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 477 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 478 | "requires": { 479 | "assert-plus": "1.0.0", 480 | "jsprim": "1.4.1", 481 | "sshpk": "1.14.2" 482 | } 483 | }, 484 | "inherits": { 485 | "version": "2.0.3", 486 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 487 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 488 | }, 489 | "invert-kv": { 490 | "version": "1.0.0", 491 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 492 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" 493 | }, 494 | "is-fullwidth-code-point": { 495 | "version": "2.0.0", 496 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 497 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 498 | }, 499 | "is-stream": { 500 | "version": "1.1.0", 501 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 502 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 503 | }, 504 | "is-typedarray": { 505 | "version": "1.0.0", 506 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 507 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 508 | }, 509 | "isarray": { 510 | "version": "1.0.0", 511 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 512 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 513 | }, 514 | "isexe": { 515 | "version": "2.0.0", 516 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 517 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 518 | }, 519 | "isstream": { 520 | "version": "0.1.2", 521 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 522 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 523 | }, 524 | "jsbn": { 525 | "version": "0.1.1", 526 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 527 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 528 | "optional": true 529 | }, 530 | "json-schema": { 531 | "version": "0.2.3", 532 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 533 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 534 | }, 535 | "json-schema-traverse": { 536 | "version": "0.4.1", 537 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 538 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 539 | }, 540 | "json-stringify-safe": { 541 | "version": "5.0.1", 542 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 543 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 544 | }, 545 | "jsprim": { 546 | "version": "1.4.1", 547 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 548 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 549 | "requires": { 550 | "assert-plus": "1.0.0", 551 | "extsprintf": "1.3.0", 552 | "json-schema": "0.2.3", 553 | "verror": "1.10.0" 554 | } 555 | }, 556 | "lcid": { 557 | "version": "1.0.0", 558 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 559 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 560 | "requires": { 561 | "invert-kv": "1.0.0" 562 | } 563 | }, 564 | "light-my-request": { 565 | "version": "2.0.2", 566 | "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-2.0.2.tgz", 567 | "integrity": "sha512-e7863fgFyGZ2dbz0ag9AdkFjrQcnEdDFu4lwMeIbDWAW9PcL+zS75WPCkbWstM2jU6WR7/E8ZMjxUVJtCQtrLw==", 568 | "requires": { 569 | "ajv": "6.5.1", 570 | "readable-stream": "2.3.6", 571 | "safe-buffer": "5.1.2" 572 | } 573 | }, 574 | "locate-path": { 575 | "version": "2.0.0", 576 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 577 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 578 | "requires": { 579 | "p-locate": "2.0.0", 580 | "path-exists": "3.0.0" 581 | } 582 | }, 583 | "lru-cache": { 584 | "version": "4.1.3", 585 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", 586 | "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", 587 | "requires": { 588 | "pseudomap": "1.0.2", 589 | "yallist": "2.1.2" 590 | } 591 | }, 592 | "mem": { 593 | "version": "1.1.0", 594 | "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", 595 | "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", 596 | "requires": { 597 | "mimic-fn": "1.2.0" 598 | } 599 | }, 600 | "middie": { 601 | "version": "3.1.0", 602 | "resolved": "https://registry.npmjs.org/middie/-/middie-3.1.0.tgz", 603 | "integrity": "sha512-673tjCpr9xbI30cVqNbCvBe1hNS4pNs7Fi8Yp9wPiqX3qTpuRm87uD3aRtH9ji7Gt8SavbX7cwYMqY2muIPMJw==", 604 | "requires": { 605 | "path-to-regexp": "2.2.1", 606 | "reusify": "1.0.4" 607 | } 608 | }, 609 | "mime": { 610 | "version": "1.4.1", 611 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 612 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 613 | }, 614 | "mime-db": { 615 | "version": "1.33.0", 616 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 617 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 618 | }, 619 | "mime-types": { 620 | "version": "2.1.18", 621 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 622 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 623 | "requires": { 624 | "mime-db": "1.33.0" 625 | } 626 | }, 627 | "mimic-fn": { 628 | "version": "1.2.0", 629 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 630 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 631 | }, 632 | "ms": { 633 | "version": "2.0.0", 634 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 635 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 636 | }, 637 | "npm-run-path": { 638 | "version": "2.0.2", 639 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 640 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 641 | "requires": { 642 | "path-key": "2.0.1" 643 | } 644 | }, 645 | "number-is-nan": { 646 | "version": "1.0.1", 647 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 648 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 649 | }, 650 | "oauth-sign": { 651 | "version": "0.8.2", 652 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", 653 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" 654 | }, 655 | "on-finished": { 656 | "version": "2.3.0", 657 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 658 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 659 | "requires": { 660 | "ee-first": "1.1.1" 661 | } 662 | }, 663 | "once": { 664 | "version": "1.4.0", 665 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 666 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 667 | "requires": { 668 | "wrappy": "1.0.2" 669 | } 670 | }, 671 | "os-locale": { 672 | "version": "2.1.0", 673 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", 674 | "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", 675 | "requires": { 676 | "execa": "0.7.0", 677 | "lcid": "1.0.0", 678 | "mem": "1.1.0" 679 | } 680 | }, 681 | "p-finally": { 682 | "version": "1.0.0", 683 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 684 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" 685 | }, 686 | "p-limit": { 687 | "version": "1.3.0", 688 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 689 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 690 | "requires": { 691 | "p-try": "1.0.0" 692 | } 693 | }, 694 | "p-locate": { 695 | "version": "2.0.0", 696 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 697 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 698 | "requires": { 699 | "p-limit": "1.3.0" 700 | } 701 | }, 702 | "p-try": { 703 | "version": "1.0.0", 704 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 705 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" 706 | }, 707 | "path-exists": { 708 | "version": "3.0.0", 709 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 710 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 711 | }, 712 | "path-key": { 713 | "version": "2.0.1", 714 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 715 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 716 | }, 717 | "path-to-regexp": { 718 | "version": "2.2.1", 719 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", 720 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" 721 | }, 722 | "performance-now": { 723 | "version": "2.1.0", 724 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 725 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 726 | }, 727 | "pino": { 728 | "version": "4.17.3", 729 | "resolved": "https://registry.npmjs.org/pino/-/pino-4.17.3.tgz", 730 | "integrity": "sha512-3CBWMG1k6QdOyz9br3WzOhUQD52QFskbmlgX51wGXLPAY0UbKPsUIayYcVOQMCqjmeqEPCAG3V/Uvry+FjwtoQ==", 731 | "requires": { 732 | "chalk": "2.4.1", 733 | "fast-json-parse": "1.0.3", 734 | "fast-safe-stringify": "1.2.3", 735 | "flatstr": "1.0.8", 736 | "pino-std-serializers": "2.1.0", 737 | "pump": "3.0.0", 738 | "quick-format-unescaped": "1.1.2", 739 | "split2": "2.2.0" 740 | } 741 | }, 742 | "pino-std-serializers": { 743 | "version": "2.1.0", 744 | "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.1.0.tgz", 745 | "integrity": "sha512-NqWvrQD/GpY78ybiNBzi/dg8ylERhDo6nB33j5sfCKpUmWLc3lYzeoBjyRoCMvEpDpL9lmH6ufRd0jw6rcd1pQ==" 746 | }, 747 | "process-nextick-args": { 748 | "version": "2.0.0", 749 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 750 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 751 | }, 752 | "pseudomap": { 753 | "version": "1.0.2", 754 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 755 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 756 | }, 757 | "pump": { 758 | "version": "3.0.0", 759 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 760 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 761 | "requires": { 762 | "end-of-stream": "1.4.1", 763 | "once": "1.4.0" 764 | } 765 | }, 766 | "punycode": { 767 | "version": "2.1.1", 768 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 769 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 770 | }, 771 | "qs": { 772 | "version": "6.5.2", 773 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 774 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 775 | }, 776 | "quick-format-unescaped": { 777 | "version": "1.1.2", 778 | "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", 779 | "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", 780 | "requires": { 781 | "fast-safe-stringify": "1.2.3" 782 | } 783 | }, 784 | "range-parser": { 785 | "version": "1.2.0", 786 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 787 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 788 | }, 789 | "readable-stream": { 790 | "version": "2.3.6", 791 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 792 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 793 | "requires": { 794 | "core-util-is": "1.0.2", 795 | "inherits": "2.0.3", 796 | "isarray": "1.0.0", 797 | "process-nextick-args": "2.0.0", 798 | "safe-buffer": "5.1.2", 799 | "string_decoder": "1.1.1", 800 | "util-deprecate": "1.0.2" 801 | } 802 | }, 803 | "request": { 804 | "version": "2.87.0", 805 | "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", 806 | "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", 807 | "requires": { 808 | "aws-sign2": "0.7.0", 809 | "aws4": "1.7.0", 810 | "caseless": "0.12.0", 811 | "combined-stream": "1.0.6", 812 | "extend": "3.0.1", 813 | "forever-agent": "0.6.1", 814 | "form-data": "2.3.2", 815 | "har-validator": "5.0.3", 816 | "http-signature": "1.2.0", 817 | "is-typedarray": "1.0.0", 818 | "isstream": "0.1.2", 819 | "json-stringify-safe": "5.0.1", 820 | "mime-types": "2.1.18", 821 | "oauth-sign": "0.8.2", 822 | "performance-now": "2.1.0", 823 | "qs": "6.5.2", 824 | "safe-buffer": "5.1.2", 825 | "tough-cookie": "2.3.4", 826 | "tunnel-agent": "0.6.0", 827 | "uuid": "3.2.1" 828 | } 829 | }, 830 | "require-directory": { 831 | "version": "2.1.1", 832 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 833 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 834 | }, 835 | "require-main-filename": { 836 | "version": "1.0.1", 837 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 838 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" 839 | }, 840 | "ret": { 841 | "version": "0.1.15", 842 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 843 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" 844 | }, 845 | "reusify": { 846 | "version": "1.0.4", 847 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 848 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 849 | }, 850 | "safe-buffer": { 851 | "version": "5.1.2", 852 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 853 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 854 | }, 855 | "safe-regex": { 856 | "version": "1.1.0", 857 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 858 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 859 | "requires": { 860 | "ret": "0.1.15" 861 | } 862 | }, 863 | "safer-buffer": { 864 | "version": "2.1.2", 865 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 866 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 867 | }, 868 | "semver": { 869 | "version": "5.5.0", 870 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 871 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" 872 | }, 873 | "semver-store": { 874 | "version": "0.2.0", 875 | "resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.2.0.tgz", 876 | "integrity": "sha512-Ip9LoEMj6TanHes2FmJGwLrGEtD3P4sLPSoqBerdRx8lH0jEwYNZcoyB5N4ve6DaUPl3YkZjNdnTNQLdt2D4Qg==" 877 | }, 878 | "send": { 879 | "version": "0.16.2", 880 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 881 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 882 | "requires": { 883 | "debug": "2.6.9", 884 | "depd": "1.1.2", 885 | "destroy": "1.0.4", 886 | "encodeurl": "1.0.2", 887 | "escape-html": "1.0.3", 888 | "etag": "1.8.1", 889 | "fresh": "0.5.2", 890 | "http-errors": "1.6.3", 891 | "mime": "1.4.1", 892 | "ms": "2.0.0", 893 | "on-finished": "2.3.0", 894 | "range-parser": "1.2.0", 895 | "statuses": "1.4.0" 896 | }, 897 | "dependencies": { 898 | "debug": { 899 | "version": "2.6.9", 900 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 901 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 902 | "requires": { 903 | "ms": "2.0.0" 904 | } 905 | } 906 | } 907 | }, 908 | "set-blocking": { 909 | "version": "2.0.0", 910 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 911 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 912 | }, 913 | "setprototypeof": { 914 | "version": "1.1.0", 915 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 916 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 917 | }, 918 | "shebang-command": { 919 | "version": "1.2.0", 920 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 921 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 922 | "requires": { 923 | "shebang-regex": "1.0.0" 924 | } 925 | }, 926 | "shebang-regex": { 927 | "version": "1.0.0", 928 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 929 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 930 | }, 931 | "signal-exit": { 932 | "version": "3.0.2", 933 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 934 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 935 | }, 936 | "split2": { 937 | "version": "2.2.0", 938 | "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", 939 | "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", 940 | "requires": { 941 | "through2": "2.0.3" 942 | } 943 | }, 944 | "sshpk": { 945 | "version": "1.14.2", 946 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", 947 | "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", 948 | "requires": { 949 | "asn1": "0.2.3", 950 | "assert-plus": "1.0.0", 951 | "bcrypt-pbkdf": "1.0.1", 952 | "dashdash": "1.14.1", 953 | "ecc-jsbn": "0.1.1", 954 | "getpass": "0.1.7", 955 | "jsbn": "0.1.1", 956 | "safer-buffer": "2.1.2", 957 | "tweetnacl": "0.14.5" 958 | } 959 | }, 960 | "statuses": { 961 | "version": "1.4.0", 962 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 963 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 964 | }, 965 | "string_decoder": { 966 | "version": "1.1.1", 967 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 968 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 969 | "requires": { 970 | "safe-buffer": "5.1.2" 971 | } 972 | }, 973 | "string-width": { 974 | "version": "2.1.1", 975 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 976 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 977 | "requires": { 978 | "is-fullwidth-code-point": "2.0.0", 979 | "strip-ansi": "4.0.0" 980 | } 981 | }, 982 | "strip-ansi": { 983 | "version": "4.0.0", 984 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 985 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 986 | "requires": { 987 | "ansi-regex": "3.0.0" 988 | } 989 | }, 990 | "strip-eof": { 991 | "version": "1.0.0", 992 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 993 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" 994 | }, 995 | "supports-color": { 996 | "version": "5.4.0", 997 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 998 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 999 | "requires": { 1000 | "has-flag": "3.0.0" 1001 | } 1002 | }, 1003 | "through2": { 1004 | "version": "2.0.3", 1005 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 1006 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 1007 | "requires": { 1008 | "readable-stream": "2.3.6", 1009 | "xtend": "4.0.1" 1010 | } 1011 | }, 1012 | "tiny-lru": { 1013 | "version": "1.6.1", 1014 | "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-1.6.1.tgz", 1015 | "integrity": "sha512-m8oyPnHjnQlbDk8+MCw33qRMp6+BxPxoayN9C743VToeyQ5zZV6F6vkklrYVEI0z9MQ3+jmc+22tKmvPg4gmoA==" 1016 | }, 1017 | "tough-cookie": { 1018 | "version": "2.3.4", 1019 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", 1020 | "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", 1021 | "requires": { 1022 | "punycode": "1.4.1" 1023 | }, 1024 | "dependencies": { 1025 | "punycode": { 1026 | "version": "1.4.1", 1027 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1028 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 1029 | } 1030 | } 1031 | }, 1032 | "tunnel-agent": { 1033 | "version": "0.6.0", 1034 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1035 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1036 | "requires": { 1037 | "safe-buffer": "5.1.2" 1038 | } 1039 | }, 1040 | "tweetnacl": { 1041 | "version": "0.14.5", 1042 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1043 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 1044 | "optional": true 1045 | }, 1046 | "uri-js": { 1047 | "version": "4.2.2", 1048 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1049 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1050 | "requires": { 1051 | "punycode": "2.1.1" 1052 | } 1053 | }, 1054 | "util-deprecate": { 1055 | "version": "1.0.2", 1056 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1057 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1058 | }, 1059 | "uuid": { 1060 | "version": "3.2.1", 1061 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", 1062 | "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" 1063 | }, 1064 | "verror": { 1065 | "version": "1.10.0", 1066 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1067 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1068 | "requires": { 1069 | "assert-plus": "1.0.0", 1070 | "core-util-is": "1.0.2", 1071 | "extsprintf": "1.3.0" 1072 | } 1073 | }, 1074 | "which": { 1075 | "version": "1.3.1", 1076 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1077 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1078 | "requires": { 1079 | "isexe": "2.0.0" 1080 | } 1081 | }, 1082 | "which-module": { 1083 | "version": "2.0.0", 1084 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1085 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 1086 | }, 1087 | "wrap-ansi": { 1088 | "version": "2.1.0", 1089 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 1090 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 1091 | "requires": { 1092 | "string-width": "1.0.2", 1093 | "strip-ansi": "3.0.1" 1094 | }, 1095 | "dependencies": { 1096 | "ansi-regex": { 1097 | "version": "2.1.1", 1098 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1099 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 1100 | }, 1101 | "is-fullwidth-code-point": { 1102 | "version": "1.0.0", 1103 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1104 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1105 | "requires": { 1106 | "number-is-nan": "1.0.1" 1107 | } 1108 | }, 1109 | "string-width": { 1110 | "version": "1.0.2", 1111 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1112 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1113 | "requires": { 1114 | "code-point-at": "1.1.0", 1115 | "is-fullwidth-code-point": "1.0.0", 1116 | "strip-ansi": "3.0.1" 1117 | } 1118 | }, 1119 | "strip-ansi": { 1120 | "version": "3.0.1", 1121 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1122 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1123 | "requires": { 1124 | "ansi-regex": "2.1.1" 1125 | } 1126 | } 1127 | } 1128 | }, 1129 | "wrappy": { 1130 | "version": "1.0.2", 1131 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1132 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1133 | }, 1134 | "xtend": { 1135 | "version": "4.0.1", 1136 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 1137 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 1138 | }, 1139 | "y18n": { 1140 | "version": "3.2.1", 1141 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", 1142 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" 1143 | }, 1144 | "yallist": { 1145 | "version": "2.1.2", 1146 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 1147 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 1148 | }, 1149 | "yargs": { 1150 | "version": "11.0.0", 1151 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", 1152 | "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", 1153 | "requires": { 1154 | "cliui": "4.1.0", 1155 | "decamelize": "1.2.0", 1156 | "find-up": "2.1.0", 1157 | "get-caller-file": "1.0.2", 1158 | "os-locale": "2.1.0", 1159 | "require-directory": "2.1.1", 1160 | "require-main-filename": "1.0.1", 1161 | "set-blocking": "2.0.0", 1162 | "string-width": "2.1.1", 1163 | "which-module": "2.0.0", 1164 | "y18n": "3.2.1", 1165 | "yargs-parser": "9.0.2" 1166 | } 1167 | }, 1168 | "yargs-parser": { 1169 | "version": "9.0.2", 1170 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", 1171 | "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", 1172 | "requires": { 1173 | "camelcase": "4.1.0" 1174 | } 1175 | } 1176 | } 1177 | } 1178 | --------------------------------------------------------------------------------