Sto creando una serie di script automatici che verranno eseguiti in un ambiente crittografato (crittografia completa del disco).
Molti comandi in Windows e * nix hanno due modi per inserire informazioni sensibili come le password. In una modalità, il programma richiede all'utente la password e nell'altra la password viene specificata utilizzando un argomento di opzione.
Durante la scrittura di uno script di shell, il comando può essere automatizzato utilizzando uno di questi processi. Nel primo caso, il comando viene eseguito, quindi lo standard in (stdin) viene reindirizzato e la password viene convogliata nel programma quando richiesto. Nel secondo caso, la password viene specificata come argomento per il programma.
Uno di questi è intrinsecamente più rischioso dell'altro? Ci sono dei compromessi di cui essere a conoscenza? In entrambi i casi, sto chiedendo in particolare il metodo di fornitura della password, non la rischiosità o la vulnerabilità associata alla memorizzazione della password sul disco.
Ecco un esempio in Python, usando la versio CLI di VeraCrypt:
Reindirizzamento dello stdin:
cmd = ['veracrypt', "--text", partition, mount_point]
input_file = open_file()
vc_call = subprocess.run(cmd, stdin=input_file)
vc_call.wait()
Passaggio della password come argomento:
password = get_password_from_file():
cmd = ['veracrypt', "--text", "--non-interactive", "--password", password, partition, mount_point]
vc_call = subprocess.run(cmd)
Nota:
Non sono sicuro che sia importante, ma su * nix, i comandi possono essere eseguiti direttamente come chiamate di sistema. Nel codice precedente, a nessuna delle chiamate a subprocess.run()
è stata assegnata un'opzione shell=True
, che causava l'esecuzione del comando all'interno della shell predefinita. La mia comprensione è che su Windows, tutti i comandi devono essere eseguiti attraverso la shell cmd
. Questo potrebbe fare la differenza tra le due opzioni, ma non sono sicuro di come.