Come analizzare QR linux: guida passo‑passo per analisi sicura

byideaTech 29 Ottobre 2025
analizzare QR Linux

Introduzione

Analizzare QR Linux è una pratica essenziale per evitare link malevoli, provisioning Wi‑Fi non autorizzati e deep link che avviano azioni indesiderate. I codici QR sono comodi ma possono nascondere URL malevoli, payload per app o configurazioni che compromettono la privacy. Questa guida fornisce un workflow pratico e ripetibile per analizzare immagini QR su Linux senza aprire link potenzialmente pericolosi sul dispositivo principale, usando strumenti open source e sandbox per minimizzare i rischi.

Prerequisiti e strumenti

Per analizzare QR Linux in sicurezza avrai bisogno di:

  • Sistema Linux con accesso terminale.
  • Pacchetti consigliati: zbar-tools (zbarimg), ImageMagick (convert), curl, whois, jq, xxd.
  • Strumenti per sandboxing: podman o docker (podman preferibile se disponibile).
  • Browser testuale per preview: lynx o w3m (da eseguire in container).
  • Utente non‑root per le operazioni rischiose oppure esecuzione all’interno di un container isolato.
  • File immagine contenente il QR (es. qr.png).

Panoramica del workflow

  1. Estrarre il payload dal QR in locale.
  2. Analizzare il contenuto senza aprirlo (controlli sintattici, dominio, header).
  3. Effettuare una preview sicura in sandbox.
  4. Seguire una checklist decisionale prima di aprire su device mobile o browser.

Estrarre il payload dal QR

Comando base con zbarimg

Installa zbar-tools (es. apt install zbar-tools) e usa zbarimg per ottenere il payload testuale:

zbarimg -q --raw qr.png

Il comando restituisce il payload (URL, testo o stringa). Se l’immagine contiene più QR, zbarimg li elenca in ordine.

Pulizia immagine con ImageMagick

Se il QR è difficile da leggere, migliora l’immagine con ImageMagick per aumentare contrasto e risoluzione:

convert qr.png -colorspace Gray -resize 200% -threshold 60% qr_clean.png
zbarimg -q --raw qr_clean.png

Sperimenta con resize, unsharp, contrast e threshold per ottenere il miglior risultato sulla singola immagine.

Gestire immagini multiple o di scarsa qualità

  • Se hai più immagini dello stesso QR (es. scatti diversi), esegui zbarimg su ciascuna e confronta i payload.
  • Per foto con rumore o inclinazione, usa deskew e denoise:
convert qr.jpg -deskew 40% -denoise 2 -resize 150% -threshold 55% qr_processed.png
zbarimg -q --raw qr_processed.png
  • Quando il QR è parzialmente coperto, prova a ritagliare le regioni con suspect content e ripetere il processo.

Analisi del payload senza aprirlo

Determinare il tipo di contenuto

  • URL: verifica schema (http vs https), presenza di caratteri sospetti, lunghezza e pattern di redirect.
  • Wi‑Fi/WG payload: riconosci prefissi come WIFI:S:… o WG: e non applicare automaticamente la configurazione.
  • Testo o comandi: identifica pattern di comandi shell, base64 o chiavi.

Estrarre dominio e controllare header

Estrai il dominio dal payload e richiedi solo gli header per testare la risposta senza scaricare contenuti:

url="$(zbarimg -q --raw qr.png)"
domain=$(echo "$url" | sed -E 's#https?://([^/]+)/?.*#\1#')
echo "Dominio: $domain"
curl -I --max-time 5 --user-agent "curl-safe" --silent "$url" || echo "No response or timeout"

Usa curl con -I per limitare l’esposizione e non seguire redirect automatici.

Controlli WHOIS e reputation

Interroga whois per informazioni sulla registrazione e sulla storia del dominio:

whois "$domain" | sed -n '1,20p'

Per reputazione automatica usa API specifiche eseguite da container se richiedono chiavi o credenziali.

Ispezione del payload testuale

Se il payload non è un URL, ispezionalo in chiaro:

zbarimg -q --raw qr.png | sed -n '1,200p' | sed -e 's/<[^>]*>//g'

Cerca indicatori come base64, comandi shell, pattern WG/WIFI o chiavi incluse.

Preview sicura e sandboxing

Container isolato per richieste e download

Esegui tutte le richieste HTTP o download da dentro un container minimale:

podman run --rm -it -v "$(pwd)":/work:ro docker.io/alpine sh -c "apk add --no-cache curl ca-certificates >/dev/null; cd /work; curl -I --max-time 5 --silent '$url' || echo 'no response'"

Questo mantiene il tuo host separato da payload potenzialmente pericolosi.

Visualizzazione testuale in container (lynx/w3m)

Per vedere una versione sicura della pagina usa lynx o w3m dentro un container:

podman run --rm -it -v "$(pwd)":/work:ro docker.io/ubuntu sh -c "apt-get update >/dev/null; apt-get install -y lynx ca-certificates >/dev/null; lynx -head -accept_all_cookies -nolist '$url' || echo 'preview failed'"

La visualizzazione testuale evita esecuzione di JavaScript e riduce il rischio.

Ispezionare file scaricati in sandbox

Se il QR punta a un file, scaricalo in container e analizzalo con file, hexdump e strumenti antivirus se disponibili:

podman run --rm -it -v "$(pwd)":/work:rw docker.io/ubuntu sh -c "cd /work; apt-get update >/dev/null; apt-get install -y curl >/dev/null; curl -sSL -D headers.txt -o payload.bin '$url' || echo 'download failed'; file payload.bin; hexdump -C payload.bin | head"

Indicatori di rischio e segnali di allarme

  • URL corti che mascherano redirect multipli.
  • Dominio appena creato o con whois oscurato.
  • Mismatch tra contesto e dominio (es. QR in ristorante che punta a pagina di pagamento esterna).
  • Parametri sospetti (es. payload=base64, exec=).
  • Uso di http per azioni sensibili.
  • Payload Wi‑Fi che includono PSK in chiaro.
  • File scaricabili che richiedono esecuzione automatica.

Caso pratico ed esempi rapidi

Esempio: estrazione e check header

payload=$(zbarimg -q --raw qr.png)
echo "$payload"
podman run --rm -v "$(pwd)":/work:ro docker.io/alpine sh -c "apk add --no-cache curl >/dev/null; curl -I --max-time 5 --silent '$payload' || echo 'no head'"

Esempio: download e ispezione in container

podman run --rm -it -v "$(pwd)":/work:rw docker.io/ubuntu sh -c "cd /work; apt-get update >/dev/null; apt-get install -y curl >/dev/null; curl -sSL -o payload.bin '$payload' || echo 'download failed'; file payload.bin; hexdump -C payload.bin | head"

Script e automazione

Script di esempio qr_check.sh

Salva come qr_check.sh e rendilo eseguibile:

#!/bin/sh
if [ -z "$1" ]; then echo "Uso: $0 file_qr.png"; exit 1; fi
file="$1"
payload=$(zbarimg -q --raw "$file" 2>/dev/null)
echo "Payload: $payload"
case "$payload" in
  http*|https*)
    echo "Checking URL headers in container..."
    podman run --rm -v "$(pwd)":/work:ro docker.io/alpine sh -c "apk add --no-cache curl >/dev/null; curl -I --max-time 6 --silent '$payload' || echo 'no response'"
    ;;
  *)
    echo "Non-URL payload, content preview:"
    echo "$payload"
    ;;
esac

Esegui: chmod +x qr_check.sh && ./qr_check.sh qr.png

Suggerimenti per estensioni e miglioramenti

  • Integrare controllo di reputation API all’interno del container.
  • Aggiungere parsing di payload WIFI/WG per estrarre SSID senza applicare configurazioni.
  • Loggare ogni analisi in file per audit e training del personale.

Checklist decisionale prima di aprire

  • Ho verificato il dominio e gli header in sandbox?
  • Il dominio è coerente con il contesto?
  • Il payload non contiene PSK, chiavi o comandi eseguibili?
  • Ho fatto una preview testuale o controllato il download in un container isolato?
  • Se il QR chiede di connettersi a una rete Wi‑Fi, ho confrontato SSID e captive portal con quanto fornito dal personale?
    Se anche una sola risposta è NO, non aprire il link sul device principale.

Consigli pratici per l’utente mobile

  • Usa un’app che mostri sempre l’anteprima URL e non apra automaticamente i link.
  • Non connetterti automaticamente a reti trovate tramite QR.
  • Verifica con il personale del locale l’autenticità del QR per reti Wi‑Fi o pagine di pagamento.
  • Mantieni aggiornato il sistema e blocca installazioni da fonti non ufficiali.

Risorse utili e letture consigliate

  • Documentazione ufficiale di zbarimg e ImageMagick.
  • Guide su podman/docker per sandboxing e best practice di isolamento.
  • Documentazione su captive portal e gestione hotspot per comprendere i rischi di provisioning Wi‑Fi via QR.

Conclusione

Ricorda: analizzare QR Linux prima di aprire link o applicare configurazioni riduce drasticamente i rischi. Adottando questo workflow trasformi il controllo di un QR sospetto in una routine rapida e sicura: estrazione offline, validazione del dominio, preview controllata in container e una checklist decisionale riducono significativamente l’esposizione del dispositivo principale. Integra questi passaggi nelle tue abitudini quando incontri QR in luoghi pubblici o su materiali non verificati.