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.
@@ -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 = MANIFEST["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.1",
3
+ "version": "0.3.3",
4
4
  "private": false,
5
5
  "type": "module",
6
- "description": "Cyber-first freestyle local AI agent",
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",