#!/usr/bin/env bash # dl-links.sh — télécharge les fichiers de challenges référencés par lien externe # dans les README générés par ctf-dl. # # Usage : ./dl-links.sh # Ex. : ./dl-links.sh mon-ctf 'digitaloceanspaces\.com|tinyurl\.com' if [[ $# -ne 2 ]]; then echo "Usage : $0 " >&2 exit 1 fi ROOT="$1" FILTER="$2" find "$ROOT" -name README.md -print0 | while IFS= read -r -d '' readme; do dir=$(dirname "$readme") grep -oE 'https?://[^ )>"`]+' "$readme" | grep -E "$FILTER" | sort -u | while read -r url; do echo "[+] $dir <- $url" # Résout les liens raccourcis pour que le case voie la vraie destination if [[ "$url" == *tinyurl.com* ]]; then url=$(curl -sIL -o /dev/null -w '%{url_effective}' "$url") echo " -> résolu en $url" fi case "$url" in *drive.google.com*|*docs.google.com*) (cd "$dir" && gdown --fuzzy "$url") ;; *mega.nz*) megadl --path "$dir" "$url" ;; *dropbox.com*) wget -q -nc --content-disposition -P "$dir" "${url/dl=0/dl=1}" ;; *) wget -q -nc --content-disposition -P "$dir" "$url" ;; esac sleep 1 done done echo echo "[*] Fichiers HTML suspects (téléchargement probablement raté) :" find "$ROOT" -type f ! -name README.md -exec file {} + | grep -i html || echo " aucun"