[Risolto] Creazione script per invio informazioni al forum
Re: [Risolto] Creazione script per invio informazioni al for
Ho aggiunto anche la creazione del log per problemi di avvio del sistema (boot).
Re: [Risolto] Creazione script per invio informazioni al for
@Lioces3v ha scritto: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.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)...
Li nascondo.
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
A partire dalla versione 5 di Bash viene scritto:
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.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.
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").
Re: [Risolto] Creazione script per invio informazioni al for
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)
Codice: Seleziona tutto
mag 23 19:37:22 nomehost NetworkManager[677]: <info> [1590255442.9587] dhcp4 (wlp3s0): domain name '**.**'
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
Re: [Risolto] Creazione script per invio informazioni al for
:'(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.
Poiché mi interessano gli spazi e i campi del file, potresti allegarlo?Lioce ha scritto: Il file /proc/net/wireless si presenta così, sia da utente normale che da root
La formattazione del forum elimina gli spazi iniziali delle stringhe.
L'indirizzo MAC viene ricavato con il comando:Lioce ha scritto:Non vedo riferimenti al MAC address.
Codice: Seleziona tutto
$ ip -br link show nomeinterfaccia
Re: [Risolto] Creazione script per invio informazioni al for
- Allegati
-
- proc-net-wireless.xz
- (220 Byte) Scaricato 121 volte
-
- ip-link.xz
- (116 Byte) Scaricato 120 volte
Re: [Risolto] Creazione script per invio informazioni al for
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)
Codice: Seleziona tutto
mapfile -s 2 interfaces < <(awk -F'[: ]+' '{ print $1 }' /proc/net/wireless)
Re: [Risolto] Creazione script per invio informazioni al for
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)
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
Re: [Risolto] Creazione script per invio informazioni al for
Certo che è proprio un mistero.Lioce ha scritto:No, purtroppo non si risolve, mi dispiace.
Assolutamente no, tutto corretto.Lioce ha scritto: Ho inserito la modifica qui, ho sbagliato qualcosa io?
Puoi avviare lo script in modalità debug:
Codice: Seleziona tutto
./scriptlog-debianizzati --debug
e il file 'aaaa' contiene ora '*script removed*'.+ 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
O sono completamente partito di testa oppure mi sfugge qualcosa di molto ovvio (la qual cosa non esclude ovviamente la prima ipotesi ).
Re: [Risolto] Creazione script per invio informazioni al for
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
Re: [Risolto] Creazione script per invio informazioni al for
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.
Re: [Risolto] Creazione script per invio informazioni al for
La prima colonna mostra il nome dell'eseguibile, la seconda il nome del pacchetto a cui appartiene, la terza indica la priorità.
La quarta colonna ("Gestito") mostra se lo script gestisce l'assenza del comando senza andare in errore; ho solo dato una rapida occhiata per cui questa informazione va presa "cum grano salis"
Per i "required" gli "important" non c'è la quarta colonna poiché dò per scontato che siano presenti su ogni sistema, anche se mi rimane qualche dubbio (es. systemd).
Required/Important
Sono (dovrebbero) installati di default su ogni sistema Debian.
Codice: Seleziona tutto
Comando Pacchetto Priorità
------- --------- --------
apt-cache apt important
apt-config apt important
apt-get apt important
base64 coreutils required
blkid util-linux required
cat coreutils required
clear ncurses-bin required
cp coreutils required
cut coreutils required
date coreutils required
df coreutils required
dmesg dmesg required
dpkg dpkg required
du coreutils required
fdisk fdisk important
find findutils required
findmnt util-linux required
getent libc-bin required
grep grep required
groups coreutils required
gzip gzip required
ifconfig net-tools important
invoke-rc.d init-system-helpers important
ip iproute2 important
journalctl systemd important
ls coreutils required
lsblk util-linux required
lsmod kmod important
mktemp coreutils required
pidof sysvinit-utils required
ps procps important
readlink coreutils required
rename util-linux required
rm coreutils required
route net-tools important
sed sed required
sort coreutils required
split coreutils required
systemctl systemd important
systemd-cgls systemd important
systemd-cgtop systemd important
systemd-delta systemd important
tar tar required
tput ncurses-bin required
uname coreutils required
update-alternatives dpkg required
wc coreutils required
which debianutils required
zcat gzip required
Non sono installati di default e potrebbe capitare che qualche sistema Debian non li abbia.
Lo script deve gestire correttamente la loro assenza senza andare in errore o visualizzare output strani.
Codice: Seleziona tutto
Comando Pacchetto Priorità Gestito
------- --------- -------- -------
aptitude aptitude optional no
bzip2 bzip2 standard sì
dkms dkms optional sì
gnome-shell gnome-shell optional sì
grub-mkdevicemap grub-common optional sì
iwconfig wireless-tools optional sì
iwlist wireless-tools optional sì
kde4-config kdelibs-bin optional sì
kf5-config libkf5kdelibs4support5-bin optional sì
lspci pciutils standard sì
lsusb usbutils optional sì
NetworkManager network-manager optional sì
nmcli network-manager optional sì
openbox openbox optional sì
Re: [Risolto] Creazione script per invio informazioni al for
Codice: Seleziona tutto
Comando Pacchetto Priorità Gestito
------- --------- -------- -------
rfkill rfkill optional sì
synclient xserver-xorg-input-synaptics optional sì
udisksctl udisks2 optional sì
wget wget standard sì
wicd wicd-daemon optional sì
xfce4-about libxfce4ui-utils optional sì
xz xz-utils standard sì
Codice: Seleziona tutto
awk
ping
udisks
------------
Questo pacchetto ha priorità "optional" e non ricordo se in passato ne avesse una più alta. Fatto sta che la sua assenza non viene gestita.
Inoltre fornisce anche una alternative:
Codice: Seleziona tutto
$ update-alternatives --config aptitude
awk
------
C'è una alternative:
Codice: Seleziona tutto
$ update-alternatives --config awk
mawk è "required". S dovrebbe cambiare da "awk" a "mawk"?
ping
------
Questo è strano.
L'eseguibile "/bin/ping" appartiene al pacchetto "iputils-ping" ma anche al pacchetto "inetutils-ping". Non riesco a capire se è un bug o no, comunque sul mio sistema è installato "iputils-ping" ed ha priorità "important".
udisks
---------
Questo è imbarazzante.
Non esiste nessun eseguibile con questo nome...
Comandi utili
Codice: Seleziona tutto
$ whereis nomecomando
Codice: Seleziona tutto
$ dpkg -S path-eseguibile
Codice: Seleziona tutto
$ apt-cache show nomepacchetto | grep Priority
Non saprei se questa informazione è affidabile a causa degli overrides lato FTP.
Commenti/Suggerimenti/Osservazioni/Consigli sono più che benvenuti
EDIT
Ho corretto "wget" che ha priorità "standard" e non "important".
Re: [Risolto] Creazione script per invio informazioni al for
Grazie per la approfondita analisi, che mi sembra molto utile anche alla luce della "stratificazione" negli anni delle funzionalità dello script e dei comandi che di volta in volta sono stati aggiunti e delle possibili ottimizzazioni che ne potrebbero conseguire.
Per quanto riguarda aptitude, fino a "Debian Stretch" era lo strumento consigliato dalla distribuzione per la gestione dei pacchetti (successivamente lo è stato apt-get e poi, più recentemente, apt) e la sua priority era "important" [0], mentre con "Debian Buster" è diventata "optional" [1]. Inoltre, per aptitude non trovo alternative:
Codice: Seleziona tutto
# update-alternatives --config aptitude
update-alternatives: errore: nessuna alternativa per aptitude
Sulla mia Debian Buster è installato di default mawk, il che fa ipotizzare che debba essere utilizzato per lo script:Limitations:
-----------
mawk 1.3.3 was developed to correspond with a POSIX draft. POSIX
continued, and incorporated some of mawk's extensions as features.
The 1.3.4 release fills in the major areas in which POSIX grew past
the mawk 1.3.3 implementation.
Codice: Seleziona tutto
$ dpkg-query -l "*awk*"
Voluto=U (non noto)/I (installato)/R (rimosso)/P (rimosso totale)/H (in attesa)
| Stato=Non/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(nessuno)/R (reinstallazione richiesta) (Stato,Err: maiuscolo=grave)
||/ Nome Versione Architettura Descrizione
+++-==============-============-============-===================================
un awk <nessuna> <nessuna> (nessuna descrizione disponibile)
un gawk <nessuna> <nessuna> (nessuna descrizione disponibile)
ii mawk 1.3.3-17+b3 amd64 a pattern scanning and text process
Infine, per udisks, il pacchetto è udisks2.
[0] https://sources.debian.org/src/aptitude ... n/control/
[1] https://sources.debian.org/src/aptitude ... n/control/
[2] https://www.gnu.org/software/gawk/manua ... sions.html
[3] https://debian-handbook.info/browse/it- ... inetd.html
[4] https://packages.debian.org/source/buster/inetutils
[5] https://packages.debian.org/source/buster/iputils
Re: [Risolto] Creazione script per invio informazioni al for
Ecco spiegato il motivo del problema...Aki ha scritto: Per quanto riguarda aptitude, fino a "Debian Stretch" era lo strumento consigliato dalla distribuzione per la gestione dei pacchetti (successivamente lo è stato apt-get e poi, più recentemente, apt) e la sua priority era "important" [0], mentre con "Debian Buster" è diventata "optional" [1].
A questo punto bisogna ricontrollare tutte le priorità ad ogni rilascio
Forse sul tuo sistema non è installato "aptitude"? L'alternative c'è:Aki ha scritto: Inoltre, per aptitude non trovo alternative:Codice: Seleziona tutto
# update-alternatives --config aptitude update-alternatives: errore: nessuna alternativa per aptitude
https://sources.debian.org/src/aptitude ... .postinst/
Codice: Seleziona tutto
[...]
update-alternatives \
--install /usr/bin/aptitude aptitude /usr/bin/aptitude-curses 30 $slaves
[...]
È un peccato perché, senza aptitude, non funzionerà la ricerca dei pacchetti esterni e il rilevamento del manager della sessione. A meno di non trovare qualcosa che sostituisca aptitude nelle stesse funzionalità usate.
Quindi la sostituzione è abbastanza inutile, anche alla luce del fatto che comunque, nel peggiore dei casi, ci sarà sempre mawk installato e i comandi presenti nello script non mi sembrano complicati al punto da portare a comportamenti indesiderati se cambia l'implementazione di awk utilizzata.Aki ha scritto: Per quanto riguarda gawk e mawk sono due diverse implementazioni dell'originale awk, laddove, se ho ben letto, mawk è una versione "più leggera" e non sarebbe del tutto posix compatibile:
Sì, questo non era un vero e proprio problema dello script (che gestisce correttamente il comando "ping") ma piuttosto un problema a monte dell'utente che installa inetutils-ping e si vede sovrascritto l'eseguibile "ping".Aki ha scritto: Per quanto riguarda "ping", ci sono effettivamente due implementazioni. Quella del pacchetto inetutils-ping, è collegata al daemon inetd [3] che è distribuita con il codice sorgente inetutils [4]; con l'implementazione di systemd, quest'ultimo ha sostituito inetd per l'attivazione dei servizi tramite socket, da cui la nuova versione di ping distribuita con il pacchetto sorgente iputils [5].
Immagino che sia così, ma non farò la prova
Sì ma manca proprio l'eseguibileAki ha scritto: Infine, per udisks, il pacchetto è udisks2.
Lo script usa:
Codice: Seleziona tutto
_comando "/usr/bin/udisks --dump"
https://packages.debian.org/search?sear ... rds=udisks
Highlander!
Grazie ancora!
-
- Full Member
- Messaggi: 159
- Iscritto il: 18/06/2020, 10:36
Re: [Risolto] Creazione script per invio informazioni al forum
Come ho scritto in un post a parte, ho ritrovato nel file prodotto dallo script informazioni che non dovrebbero essere presenti.
Credo che siano comandi digitati o il risultato prodotto sullo schermo.
È inutile nascondere gli utenti se poi nel file appare il comando "adduser pippo"
Così come sia inutile nascondere gli IP se mi trovo da qualche parte "user:password@URL/IP".
Io ho dovuto rileggermi quanto prodotto dallo script per andarmi a ripulire tutto ciò che non volevo pubblicare.
Se proprio lo si ritiene utile, occorrerebbe almeno una qualche opzione che attivi il rilevamento dei due history ed un bell' "ATTENZIONE!" che inviti l'utente a controllare il risultato in due sezioni ben definite e facilmente rintracciabili.
Ammesso che quei dati non siano stati raccolti in altro modo.