Enhance connect8.py with Docker daemon connection check and restart logic

pull/168/head
h8suga 3 months ago
parent cbbae4965a
commit d88a4cc2d1

1
.gitignore vendored

@ -6,3 +6,4 @@ tmp/
outdir/
config.txt
full_info.txt
backups/

@ -166,6 +166,30 @@ except Exception:
auth = {'Authorization': token}
print('[connect8] SimpleDocker login OK')
# ── stage 2b: ensure Docker daemon is connected (ping + auto-restart) ─────────
def _docker_ping():
try:
r = requests.get(f'http://{router_ip}:{DOCKER_PORT}/api/docker/info',
headers=auth, timeout=5)
return r.status_code == 200
except Exception:
return False
if not _docker_ping():
print('[connect8] Docker daemon not responding — restarting SimpleDocker connection ...')
try:
requests.post(f'http://{router_ip}:{DOCKER_PORT}/api/system/safe',
headers=auth, timeout=8)
except Exception:
pass
time.sleep(4)
if not _docker_ping():
raise ExploitNotWorked(
'connect8: Docker daemon is not running.\n'
' Try toggling Docker in SimpleDocker web UI or reboot the router.')
print('[connect8] Docker daemon OK')
# ── stage 3: find a running container ─────────────────────────────────────────
try:
@ -324,7 +348,8 @@ grep -q '"release"' /etc/init.d/dropbear 2>/dev/null && \\
KEYFILE=/etc/dropbear/dropbear_rsa_host_key
[ -s "$KEYFILE" ] || /usr/bin/dropbearkey -t rsa -f "$KEYFILE" 2>/dev/null
HASH=$(openssl passwd -1 -salt 'XMiR1337' '{SSH_PASSWORD}')
{{ grep -v '^root:' /etc/shadow; printf 'root:%s:19000:0:99999:7:::' "$HASH"; }} > /tmp/_sh && mv /tmp/_sh /etc/shadow
SHADOW_FILE=$(readlink -f /etc/shadow 2>/dev/null || echo /etc/shadow)
{{ grep -v '^root:' "$SHADOW_FILE"; printf 'root:%s:19000:0:99999:7:::' "$HASH"; }} > /tmp/_sh && mv /tmp/_sh "$SHADOW_FILE"
pgrep dropbear > /dev/null || /etc/init.d/dropbear start 2>/dev/null
PERSIST_EOF
chmod +x /data/xmir_restore_ssh.sh
@ -360,7 +385,8 @@ echo "keyfile=$([ -f $KEYFILE ] && echo ok || echo missing)" >> "$LOG"
# 4. Root password (MD5-crypt hash pre-computed, no openssl dependency)
HASH=$(openssl passwd -1 -salt 'XMiR1337' '{SSH_PASSWORD}' 2>/dev/null)
[ -z "$HASH" ] && HASH='{_md5_hash}'
{{ grep -v '^root:' /etc/shadow; printf 'root:%s:19000:0:99999:7:::\\n' "$HASH"; }} > /tmp/_sh && mv /tmp/_sh /etc/shadow
SHADOW_FILE=$(readlink -f /etc/shadow 2>/dev/null || echo /etc/shadow)
{{ grep -v '^root:' "$SHADOW_FILE"; printf 'root:%s:19000:0:99999:7:::\\n' "$HASH"; }} > /tmp/_sh && mv /tmp/_sh "$SHADOW_FILE"
grep -c '^root:.*:19000:' /etc/shadow >> "$LOG" && echo "passwd=set" >> "$LOG" || echo "passwd=FAIL" >> "$LOG"
# 5. Start SSH via procd

Loading…
Cancel
Save