[Risolto] Creazione script per invio informazioni al forum

Bash, Perl, Python, Ruby, ...

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda s3v » 29/06/2019, 9:39

Dovrebbe essere stato tutto risolto con la versione 1.0.66.
Ho aggiunto anche la creazione del log per problemi di avvio del sistema (boot).
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5873
Iscritto il: 31/12/2008, 11:54

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda s3v » 23/05/2020, 14:02

s3v ha scritto:
Lioce ha scritto: In journalctl -x -b --no-pager ho trovato queste due stringhe, la seconda rivela l'indirizzo MAC reale della
mia macchina (qui ovviamente omesso)...

L'indirizzo MAC non sarebbe un grosso vulnus della privacy a meno di condividere la stessa rete (e anche qui sarebbe facilmente individuabile), ma potrebbe "aiutare" in attacchi sul wireless purché si sappia dove guardare e verso chi guardare.
Li nascondo.

@Lioce
Con la versione 1.0.68 viene nascosto l'indirizzo MAC delle interfacce wireless, potresti gentilmente testarla?
Io purtroppo non ho al momento la possibilità di farlo e, in mancanza del file "/proc/net/wireless" ho dovuto utilizzare un altro file.
Scusa infine per il lunghissimo ritardo.

Un cambiamento inserito è l'istruzione:
Codice: Seleziona tutto
shopt -s extdebug

all'interno dello script che serve per permettere l'espansione di ARGC (array utilizzato per controllare l'esattezza degli argomenti passati dalla riga di comando).
A partire dalla versione 5 di Bash viene scritto:
https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html ha scritto:BASH_ARGC
An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of parameters to the current subroutine (shell function or script executed with . or source) is at the top of the stack. When a subroutine is executed, the number of parameters passed is pushed onto BASH_ARGC. The shell sets BASH_ARGC only when in extended debugging mode (see The Shopt Builtin for a description of the extdebug option to the shopt builtin). Setting extdebug after the shell has started to execute a script, or referencing this variable when extdebug is not set, may result in inconsistent values.

Il controllo degli argomenti passati allo script funziona sia con l'opzione "extdebug" impostata sia con "extdebug" a OFF ma l'ho inserita per sicurezza.
Comunque non riesco a capire se l'istruzione ha l'effetto voluto perché effettivamente viene impostata dopo l'avvio dello script ("Setting extdebug after the shell has started to execute a script..."), inoltre se cambio lo shebang in "#! /bin/bash -O extdebug" mi dà errore e "#! /bin/bash --debugger" non ha effetto (shopt continua a mostrare "extdebug off").
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5873
Iscritto il: 31/12/2008, 11:54

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda Lioce » 24/05/2020, 6:52

@s3v
Grazie, ma purtroppo non funziona, il log continua a mostrare sia il MAC address che il domain name, come puoi vedere dall'output delle linee (che ho modificato):

Codice: Seleziona tutto
mag 23 19:37:12 nomehost NetworkManager[677]: <info>  [1590255432.1182] device (wlp3s0): set-hw-addr: set MAC address to Cx:x8:xx:xx:xx:xx (scanning)

mag 23 19:37:17 nomehost NetworkManager[677]: <info>  [1590255437.8480] device (wlp3s0): set-hw-addr: reset MAC address to xx:xx:xx:xx:xx:xx (preserve)


e

Codice: Seleziona tutto
mag 23 19:37:22 nomehost NetworkManager[677]: <info>  [1590255442.9587] dhcp4 (wlp3s0):   domain name '**.**'


Il file /proc/net/wireless si presenta così, sia da utente normale che da root:

Codice: Seleziona tutto
Inter-| sta-|   Quality             |   Discarded packets                 | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
wlp3s0: 0000   70.  -39.  -256        0      0      0      0     33        0

Non vedo riferimenti al MAC address.
Lioce
Full Member
Full Member
 
Messaggi: 163
Iscritto il: 30/03/2014, 21:17

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda s3v » 24/05/2020, 7:38

Lioce ha scritto:@s3v
Grazie, ma purtroppo non funziona, il log continua a mostrare sia il MAC address che il domain name

:'(
Per il nome di dominio le modifiche le le ho già fatte ma sono sorti diversi problemi che sto provando a risolvere.
Lioce ha scritto:Il file /proc/net/wireless si presenta così, sia da utente normale che da root

Poiché mi interessano gli spazi e i campi del file, potresti allegarlo?
La formattazione del forum elimina gli spazi iniziali delle stringhe.
Lioce ha scritto:Non vedo riferimenti al MAC address.

L'indirizzo MAC viene ricavato con il comando:
Codice: Seleziona tutto
$ ip -br link show nomeinterfaccia

Puoi essere così paziente da dirmi anche l'output di questo comando?
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5873
Iscritto il: 31/12/2008, 11:54

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda Lioce » 24/05/2020, 23:32

Questi sono gli output dei comandi "cat /proc/net/wireless" e "ip -br link show wlp3s0", entrambi rediretti su file, il secondo l'ho modificato con sed che non mi sembra ne abbia toccato la formattazione.
Allegati
proc-net-wireless.xz
(220 Bytes) Scaricato 31 volte
ip-link.xz
(116 Bytes) Scaricato 33 volte
Lioce
Full Member
Full Member
 
Messaggi: 163
Iscritto il: 30/03/2014, 21:17

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda s3v » 25/05/2020, 8:34

Grazie mille.

Avevo lavorato su un file con qualche spazio di troppo.
Puoi controllare se modificando da:
Codice: Seleziona tutto
   mapfile -s 2 interfaces < <(awk -F'[: ]+' '{ print $2 }' /proc/net/wireless)

a:
Codice: Seleziona tutto
   mapfile -s 2 interfaces < <(awk -F'[: ]+' '{ print $1 }' /proc/net/wireless)

il problema si risolve?
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5873
Iscritto il: 31/12/2008, 11:54

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda Lioce » 25/05/2020, 20:27

No, purtroppo non si risolve, mi dispiace.

Codice: Seleziona tutto
mag 25 19:47:48 nomehost NetworkManager[690]: <info>  [1590428868.8872] device (wlp3s0): set-hw-addr: set MAC address to 16:xx:xx:xx:xx:xx (scanning)

mag 25 19:47:54 nomehost NetworkManager[690]: <info>  [1590428874.6043] device (wlp3s0): set-hw-addr: reset MAC address to xx:xx:xx:xx:xx:xx (preserve)


Ho inserito la modifica qui, ho sbagliato qualcosa io?

Codice: Seleziona tutto
# Nasconde l'indirizzo MAC delle interfacce wireless
 local interfaces macaddress line
 if [ -f /proc/net/wireless ]; then
   # array che contiene i nomi delle interfacce wireless
   mapfile -s 2 interfaces < <(awk -F'[: ]+' '{ print $1 }' /proc/net/wireless)

   for i in "${interfaces[@]}"; do
     # indirizzo MAC dell'interfaccia solo se l'interfaccia
     # ne ha uno. Non viene considerata l'interfaccia di loopback
     line="$(ip -br link show $i)"
     if [ "$(echo $line | wc -w)" -gt 3 ] && [ $i != "lo" ]; then
       macaddress="$(awk '{ print $3 }' <<< $line)"
       # l'indirizzo MAC viene nascosto nel file
       sed -i "s/$macaddress/\*script-removed\*/g" "$log"
     fi
   done
 fi
Lioce
Full Member
Full Member
 
Messaggi: 163
Iscritto il: 30/03/2014, 21:17

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda s3v » 25/05/2020, 21:27

Lioce ha scritto:No, purtroppo non si risolve, mi dispiace.

Certo che è proprio un mistero.
Lioce ha scritto:Ho inserito la modifica qui, ho sbagliato qualcosa io?

Assolutamente no, tutto corretto.

Puoi avviare lo script in modalità debug:
Codice: Seleziona tutto
./scriptlog-debianizzati --debug

e confrontare le righe corrispondenti a:
+ local interfaces macaddress line
+ '[' -f proc-net-wireless ']' <<< Ho modificato '/proc/net/wireless' con il nome del file che hai fornito
+ mapfile -s 2 interfaces
++ awk '-F[: ]+' '{ print $1 }' proc-net-wireless <<< idem
+ for i in "${interfaces[@]}"
++ cat ip-link <<< Ho modificato "ip -br link show ..." con 'cat' + il nome del file che hai fornito
+++ file -bL ip-link
++ '[' 'ASCII text' = 'ASCII text' ']'
++ /bin/cat ip-link
+ line='wlp3s0 UP xx:xx:xx:xx:xx:xx <BROADCAST,MULTICAST,UP,LOWER_UP> '
++ echo wlp3s0 UP xx:xx:xx:xx:xx:xx '<BROADCAST,MULTICAST,UP,LOWER_UP>'
++ '[' 4 -gt 1 ']'
++ wc -w
++ '[' wlp3s0 = -n ']'
++ printf '%s\n' 'wlp3s0 UP xx:xx:xx:xx:xx:xx <BROADCAST,MULTICAST,UP,LOWER_UP>'
+ '[' 4 -gt 3 ']'
++ awk '{ print $3 }'
+ macaddress=xx:xx:xx:xx:xx:xx
+ sed -i 's/xx:xx:xx:xx:xx:xx/\*script-removed\*/g' aaaa <<< 'aaaa' è un file di prova che contiene "xx:xx:xx:xx:xx:xx"
+ _upload

e il file 'aaaa' contiene ora '*script removed*'.

O sono completamente partito di testa oppure mi sfugge qualcosa di molto ovvio (la qual cosa non esclude ovviamente la prima ipotesi :) ).
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5873
Iscritto il: 31/12/2008, 11:54

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda Lioce » 26/05/2020, 0:26

Il debug mi ha dato questo:

Codice: Seleziona tutto
+ local interfaces macaddress line
+ '[' -f /proc/net/wireless ']'
+ mapfile -s 2 interfaces
++ awk '-F[: ]+' '{ print $1 }' /proc/net/wireless
+ for i in "${interfaces[@]}"
++ ip -br link show wlp3s0
+ line='wlp3s0           UP             xx:xx:xx:xx:xx:xx <BROADCAST,MULTICAST,UP,LOWER_UP> '
++ echo wlp3s0 UP xx:xx:xx:xx:xx:xx '<BROADCAST,MULTICAST,UP,LOWER_UP>'
++ wc -w
++ '[' 4 -gt 1 ']'
++ '[' wlp3s0 = -n ']'
++ printf '%s\n' 'wlp3s0 UP xx:xx:xx:xx:xx:xx <BROADCAST,MULTICAST,UP,LOWER_UP>'
+ '[' 4 -gt 3 ']'
+ '[' wlp3s0 '!=' lo ']'
++ awk '{ print $3 }'
+ macaddress=xx:xx:xx:xx:xx:xx
+ sed -i 's/xx:xx:xx:xx:xx:xx/\*script-removed\*/g' log_25mag_234111
+ _upload


Non corrisponde al tuo, mi sembra.
Lioce
Full Member
Full Member
 
Messaggi: 163
Iscritto il: 30/03/2014, 21:17

Re: [Risolto] Creazione script per invio informazioni al for

Messaggioda s3v » 27/05/2020, 15:34

Il problema è il carattere "." (punto) all'interno della stringa che deve essere sostituita, da riga di comando con echo e la pipe non c'è bisogno di fare l'escape mentre nello script è necessario.
La tua indicazione sulla cancellazione del MAC address solleva un problema molto grande: se le stringhe che devono essere nascoste contengono caratteri speciali utilizzati da sed, allora l'operazione di offuscamento fallisce.
Caratteri speciali
$.*[\^
Altri da testare
(){}+?|
Per ogni voce nascosta, bisogna testare tutti i caratteri: è un casino.
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5873
Iscritto il: 31/12/2008, 11:54

Precedente

Torna a Scripting

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti