Files
felhom.eu/documentation/audits/rehearsal-2026-10-20/tools/vault_fill.sh
T

30 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# vault_fill.sh — Ödön's 50 logins (folders from logins.json) + 2 attachments into Vaultwarden via the official bw CLI.
# Env: EM (account e-mail), PW (master password). Site passwords are random per item (synthetic sites) and not kept.
set -u
export NODE_TLS_REJECT_UNAUTHORIZED=0 BITWARDENCLI_APPDATA_DIR=/root/work/bwdata
BW=/usr/local/bin/bw
rm -rf /root/work/bwdata; mkdir -p -m 700 /root/work/bwdata
$BW config server https://vault.tester4.test >/dev/null
export BW_SESSION=$($BW login "$EM" --passwordenv PW --raw 2>/dev/null)
[ -n "$BW_SESSION" ] || { echo "bw login FAILED"; exit 1; }
echo "bw login ok"
python3 - > /root/work/vw-import.json <<'PY'
import json, secrets, string, uuid
L = json.load(open("/root/data/vaultwarden/logins.json", encoding="utf-8"))
folders = sorted({x["folder"] for x in L}); fid = {f: str(uuid.uuid4()) for f in folders}
a = string.ascii_letters + string.digits
items = [{"type": 1, "name": x["name"], "folderId": fid[x["folder"]], "favorite": False, "notes": None, "login": {"username": x["username"],
"password": "".join(secrets.choice(a) for _ in range(18)), "uris": [{"uri": x["uri"]}]}} for x in L]
print(json.dumps({"encrypted": False, "folders": [{"id": fid[f], "name": f} for f in folders], "items": items}))
PY
$BW import bitwardenjson /root/work/vw-import.json > /root/work/imp.out 2>&1; grep -oE "<title>[^<]*</title>|[0-9]{3} [A-Z][a-z ]+|Imported[^\n]*|error[^\n]{0,120}" /root/work/imp.out | head -5; head -c 300 /root/work/imp.out; echo; rm -f /root/work/imp.out
shred -u /root/work/vw-import.json
$BW sync >/dev/null
for k in 0 1; do
id=$($BW list items --search "bank" 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin)[$k]['id'])" 2>/dev/null)
[ -n "$id" ] && $BW create attachment --file /root/data/vaultwarden/melleklet_$k.pdf --itemid "$id" >/dev/null 2>&1 && echo "attachment $k on item $id"
done
echo "items now: $($BW list items 2>/dev/null | python3 -c 'import json,sys; print(len(json.load(sys.stdin)))') folders: $($BW list folders 2>/dev/null | python3 -c 'import json,sys; print(len(json.load(sys.stdin)))')"
$BW logout >/dev/null 2>&1; rm -rf /root/work/bwdata