Cancellare il terminale e impedire il ripristino

3

Esistono alcuni dati sensibili (numeri di carte di credito e simili) memorizzati sul mio disco rigido, crittografati. Uso uno script per decodificare i dati e visualizzarli nella finestra del terminale. Al termine, desidero che lo script cancelli il terminale, in modo che i dati sensibili non possano più essere visualizzati (anche se qualcuno accede al mio computer).

Ho letto qui che + k cancella l'output del terminale. Per implementarlo in uno script, ho utilizzato AppleScript come suggerito nella risposta accettata a questa domanda :

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'

Infine, il mio script chiude la finestra del terminale con

killall Terminal

Il problema: se lascio la finestra del terminale con l'uscita sensibile aperta per circa 30 secondi o più prima di chiudere se, quindi la prossima volta che apro il terminale, ripristina i dati sensibili (il testo [ripristinato] viene visualizzato sotto di esso ). Se i dati sono stati inizialmente visualizzati per meno tempo, non vengono ripristinati.

How can I clear the terminal window from within a script, and prevent Terminal from restoring the cleared data?

Sto utilizzando OS X 10.10.3.

    
posta Julian Rosen 19.05.2015 - 05:22
fonte

3 risposte

2

Soluzione finale:

Rimuovi lo stato del terminale salvato, situato in:

~/Library/Saved Application State/com.apple.Terminal.savedState/*

Quindi, rendi questa cartella di sola lettura in modo che non possa essere scritta.

È possibile utilizzare il comando clear per cancellare la finestra del terminale da uno script. Come indicato in questo altro thread , i seguenti comandi in sequenza cancelleranno il buffer corrente, quindi il buffer di scorrimento indietro:

clear && printf '\e[3J'

Please note:
(The clear command looks up the appropriate sequence for clearing the screen for the current terminal, but the “erase scroll-back” escape sequence is custom and must be hard-coded. If you put this in a shell script that you don’t know for certain will only ever be run with Terminal, you should check that $TERM_APPLICATION is Apple_Terminal before sending it.)

Alternativa 1

Disattiva la funzionalità di ripristino della finestra di Terminal.app:

defaults write com.apple.Terminal NSQuitAlwaysKeepsWindows -bool false

Alternativa 2

Puoi anche memorizzare le informazioni sensibili nella sezione Secure Notes all'interno dell'utilità Accesso Portachiavi .

    
risposta data 19.05.2015 - 06:16
fonte
1

Dopo aver letto le altre risposte e osservato questo aspetto, ho osservato alcuni comportamenti del file system, il che implica una soluzione molto semplice. Il programma terminale memorizza i suoi dati in

~/Library/Saved Application State/com.apple.Terminal.savedState/

come indicato sopra. Quando esco dall'applicazione Terminale (pulita), questa intera cartella viene cancellata. Il motivo per cui l'OP recupera i dati è perché sta bloccando l'app terminale con killall . Ho osservato questo aprendo il finder alla cartella Saved Application State e iniziando e chiudendo il terminale. Il lato negativo di questo è che devi chiudere TUTTE le finestre dei terminali, ma in questo modo tutti gli stati salvati sembrano essere cancellati (escludendo ovviamente il forensics del disco)

Sembra che ci sia un file in questa directory per ogni finestra terminale aperta (ma non per ogni scheda!) più data.data e windows.plist e window_1.data che presumibilmente rappresenta il programma terminale stesso. I file per-terminal scompaiono alla chiusura della finestra, tuttavia il file data.data è quello che cresce man mano che i comandi vengono emessi e quindi memorizza presumibilmente il buffer scrollback. Non si restringe alla chiusura della finestra del terminale, il che implica che continua a contenere i dati di scorrimento. Il file data.data tuttavia si restringe quando viene aperta la successiva finestra del terminale. Si restringe anche drasticamente quando viene aggiornata un'altra finestra di terminale (premendo return ad esempio). Quindi sembra che la seguente routine cancellerà (probabilmente) completamente i dati di scrollback:

  1. Chiudi in modo pulito la finestra con i dati sensibili (ad es. punto rosso, command + w )
  2. Apri una nuova finestra di terminale O fallo scorrere in un'altra finestra di terminale che è già aperta.

o

  1. Chiudi l'intera applicazione terminale (comando + q ecc.)

Vale anche la pena notare che il file data.data non è un file di testo. È un file binario che richiederà uno sforzo per interpretare. La mia ipotesi è che i dati siano compressi in qualche modo. Un semplice cat del file non rivela nulla di leggibile. Quindi, affinché questi file siano vulnerabili, sembra che entrambi i seguenti debbano essere veri:

  1. Il terminale è morto e NSQuitAlwaysKeepsWindows è vero (vedi altra risposta), oppure la finestra del terminale è stata chiusa e nessun'altra finestra è stata aperta o aggiornata.
  2. L'autore dell'attacco è abbastanza sofisticato da sapere abbastanza da cercare e sapere come decodificare il file data.data.

NOTA BENE: quanto sopra si basa interamente sull'osservazione di come i file appaiono / scompaiono e su come cambiano le loro dimensioni. È ovviamente ancora possibile che alcune informazioni parziali vengano conservate se il mantenimento del file data.data è trascurato. Comunque queste osservazioni mi sembrano abbastanza buone. Decidi tu se è abbastanza buono per te.

Queste osservazioni provengono da OS X 10.9.5 e Terminal Version 2.4 (326), per favore verifica il comportamento sopra descritto se stai usando qualche altra versione prima di fare affidamento su questo consiglio. Qualsiasi o tutto questo potrebbe cambiare con le nuove versioni di terminale o Mac OSX.

    
risposta data 19.10.2015 - 17:22
fonte
-1

prova history -c e command + k

scusa

invia semplicemente l'output a /dev/null

Se devi visualizzare o archiviare l'output, quindi reindirizzarlo a un file per utilizzarlo in seguito your_commands > path_to_filename/filename_where_output_is_stored

    
risposta data 19.05.2015 - 05:37
fonte

Leggi altre domande sui tag