farai 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +211 -78
- package/dist/cli/index.js.map +12 -11
- package/docker/kali/Dockerfile +59 -3
- package/docker/kali/farai-image-contract +1 -0
- package/docker/kali/farai-image-doctor.py +14 -1
- package/package.json +2 -2
package/docker/kali/Dockerfile
CHANGED
|
@@ -31,9 +31,6 @@ ARG INTERACTSH_VERSION=1.3.1
|
|
|
31
31
|
ARG TYPESCRIPT_VERSION=5.9.3
|
|
32
32
|
ARG TYPESCRIPT_LANGUAGE_SERVER_VERSION=4.3.4
|
|
33
33
|
ARG PYRIGHT_VERSION=1.1.408
|
|
34
|
-
ARG KALI_CONTRACT=curated-security-runtime-2026-09
|
|
35
|
-
|
|
36
|
-
LABEL org.farai.kali.contract="${KALI_CONTRACT}"
|
|
37
34
|
|
|
38
35
|
COPY farai-tool-manifest.json /usr/local/share/farai/farai-tool-manifest.json
|
|
39
36
|
|
|
@@ -116,12 +113,68 @@ RUN useradd --system --create-home --home-dir /home/mitm --shell /usr/sbin/nolog
|
|
|
116
113
|
&& certutil -d sql:/root/.pki/nssdb -N --empty-password \
|
|
117
114
|
&& certutil -d sql:/root/.pki/nssdb -A -n farai-mitmproxy -t "C,," -i /usr/local/share/farai/farai-mitmproxy-ca.pem
|
|
118
115
|
|
|
116
|
+
ENV PIP_BREAK_SYSTEM_PACKAGES=1
|
|
117
|
+
|
|
118
|
+
RUN apt-get update \
|
|
119
|
+
&& apt-get install -y --no-install-recommends \
|
|
120
|
+
apktool jadx dex2jar adb aapt apksigner \
|
|
121
|
+
fcrackzip stegseek hashid python3-pwntools proxychains4 \
|
|
122
|
+
ruby ruby-dev \
|
|
123
|
+
cmake ninja-build pkg-config libicu-dev libcapstone-dev libunicorn-dev \
|
|
124
|
+
clang automake autoconf libtool libgmp-dev libmpc-dev libmpfr-dev libssl-dev libffi-dev \
|
|
125
|
+
&& apt-get clean \
|
|
126
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
127
|
+
|
|
128
|
+
RUN export GOBIN=/usr/local/bin GOFLAGS=-buildvcs=false GOSUMDB=off \
|
|
129
|
+
&& go install github.com/lc/gau/v2/cmd/gau@latest \
|
|
130
|
+
&& go install github.com/tomnomnom/waybackurls@latest \
|
|
131
|
+
&& go install github.com/jaeles-project/gospider@latest \
|
|
132
|
+
&& go install github.com/hakluke/hakrawler@latest \
|
|
133
|
+
&& go install github.com/sensepost/gowitness@latest \
|
|
134
|
+
&& go install github.com/projectdiscovery/notify/cmd/notify@latest \
|
|
135
|
+
&& go install github.com/tomnomnom/anew@latest \
|
|
136
|
+
&& go install github.com/tomnomnom/qsreplace@latest \
|
|
137
|
+
&& go install github.com/tomnomnom/unfurl@latest \
|
|
138
|
+
&& go install github.com/zricethezav/gitleaks/v8@latest \
|
|
139
|
+
&& rm -rf /root/go/pkg /root/.cache/go-build
|
|
140
|
+
|
|
141
|
+
RUN curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
|
|
142
|
+
|
|
143
|
+
RUN gem install --no-document -n /usr/local/bin one_gadget zsteg
|
|
144
|
+
|
|
145
|
+
ENV PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin
|
|
146
|
+
|
|
147
|
+
RUN pipx install ROPgadget \
|
|
148
|
+
&& pipx install apkleaks \
|
|
149
|
+
&& pipx install git-dumper \
|
|
150
|
+
&& chmod -R a+rX /opt/pipx
|
|
151
|
+
|
|
152
|
+
RUN pipx install git+https://github.com/RsaCtfTool/RsaCtfTool.git \
|
|
153
|
+
&& chmod -R a+rX /opt/pipx \
|
|
154
|
+
|| echo "[warn] RsaCtfTool install skipped"
|
|
155
|
+
|
|
156
|
+
RUN git clone --depth 1 https://github.com/hugsy/gef.git /opt/gef \
|
|
157
|
+
&& echo "source /opt/gef/gef.py" >> /root/.gdbinit
|
|
158
|
+
|
|
159
|
+
RUN git clone --depth 1 https://github.com/ticarpi/jwt_tool.git /opt/jwt_tool \
|
|
160
|
+
&& pip install termcolor cprint pycryptodomex requests ratelimit \
|
|
161
|
+
&& printf '#!/bin/sh\nexec python3 /opt/jwt_tool/jwt_tool.py "$@"\n' > /usr/local/bin/jwt_tool \
|
|
162
|
+
&& chmod 0755 /usr/local/bin/jwt_tool
|
|
163
|
+
|
|
164
|
+
RUN git clone --depth 1 https://github.com/worawit/blutter.git /opt/blutter \
|
|
165
|
+
&& pip install pyelftools requests \
|
|
166
|
+
&& printf '#!/bin/sh\nexec python3 /opt/blutter/blutter.py "$@"\n' > /usr/local/bin/blutter \
|
|
167
|
+
&& chmod 0755 /usr/local/bin/blutter
|
|
168
|
+
|
|
169
|
+
RUN git clone --depth 1 https://github.com/danielmiessler/SecLists.git /usr/share/seclists
|
|
170
|
+
|
|
119
171
|
COPY redsocks.conf.tmpl /usr/local/share/farai/redsocks.conf.tmpl
|
|
120
172
|
COPY farai-proxy-init.sh /usr/local/bin/farai-proxy-init
|
|
121
173
|
COPY farai-proxy-teardown.sh /usr/local/bin/farai-proxy-teardown
|
|
122
174
|
COPY farai-mitmproxy-mcp.sh /usr/local/bin/mitmproxy-mcp
|
|
123
175
|
COPY farai_mitmproxy_mcp.py /usr/local/share/farai/farai_mitmproxy_mcp.py
|
|
124
176
|
COPY farai-image-doctor.py /usr/local/bin/farai-image-doctor
|
|
177
|
+
COPY farai-image-contract /usr/local/share/farai/farai-image-contract
|
|
125
178
|
RUN chmod 0755 /usr/local/bin/farai-proxy-init /usr/local/bin/farai-proxy-teardown /usr/local/bin/mitmproxy-mcp /usr/local/bin/farai-image-doctor \
|
|
126
179
|
&& farai-image-doctor --write /usr/local/share/farai/kali-capabilities.json
|
|
127
180
|
|
|
@@ -132,3 +185,6 @@ ENV NODE_EXTRA_CA_CERTS=/usr/local/share/farai/farai-mitmproxy-ca.pem \
|
|
|
132
185
|
GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt
|
|
133
186
|
|
|
134
187
|
WORKDIR /workspace
|
|
188
|
+
|
|
189
|
+
ARG KALI_CONTRACT=curated-security-runtime-2026-10
|
|
190
|
+
LABEL org.farai.kali.contract="${KALI_CONTRACT}"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
curated-security-runtime-2026-10
|
|
@@ -19,9 +19,22 @@ def resolve_manifest_path():
|
|
|
19
19
|
raise FileNotFoundError("farai tool manifest not found")
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
def resolve_contract():
|
|
23
|
+
env = os.environ.get("KALI_CONTRACT")
|
|
24
|
+
if env and env.strip():
|
|
25
|
+
return env.strip()
|
|
26
|
+
for candidate in (
|
|
27
|
+
Path("/usr/local/share/farai/farai-image-contract"),
|
|
28
|
+
Path(__file__).with_name("farai-image-contract"),
|
|
29
|
+
):
|
|
30
|
+
if candidate.is_file():
|
|
31
|
+
return candidate.read_text(encoding="utf-8").strip()
|
|
32
|
+
raise FileNotFoundError("kali image contract not found")
|
|
33
|
+
|
|
34
|
+
|
|
22
35
|
MANIFEST_PATH = resolve_manifest_path()
|
|
23
36
|
MANIFEST = json.loads(MANIFEST_PATH.read_text(encoding="utf-8"))
|
|
24
|
-
CONTRACT =
|
|
37
|
+
CONTRACT = resolve_contract()
|
|
25
38
|
APT_PACKAGES = tuple(MANIFEST["aptPackages"])
|
|
26
39
|
WORKFLOWS = MANIFEST["workflows"]
|
|
27
40
|
PINNED_TOOLS = MANIFEST["pinnedTools"]
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "farai",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "AI Harness for Security Assessments",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"packageManager": "bun@1.3.14",
|
|
9
9
|
"homepage": "https://github.com/pajarori/farai#readme",
|