Re: strano problemino con stringhe base64

2024-03-18 Per discussione Piviul

On 3/17/24 10:49, Davide Prina wrote:

Piviul ha scritto:


echo  "displayName:: Tmljb2zDsiBFZG9hcmRv" | sed -E -e
"s/(displayName:): (.*)$/\1 $(echo "\2" | base64 -i --decode)/"

Purtroppo non funziona, restituisce l'errore "base64: input non valido"

$ eval $(echo "displayName:: Tmljb2zDsiBFZG9hcmRv" | sed -E -e 
"s/(displayName:): (.*
)$/echo \"\1 \$(echo \2 | base64 -i --decode)\"/")


Grazie Davide!

Piviul



Re: strano problemino con stringhe base64

2024-03-17 Per discussione Davide Prina
Piviul ha scritto:

> echo  "displayName:: Tmljb2zDsiBFZG9hcmRv" | sed -E -e 
> "s/(displayName:): (.*)$/\1 $(echo "\2" | base64 -i --decode)/"
> 
> Purtroppo non funziona, restituisce l'errore "base64: input non valido" 

$ eval $(echo "displayName:: Tmljb2zDsiBFZG9hcmRv" | sed -E -e 
"s/(displayName:): (.*
)$/echo \"\1 \$(echo \2 | base64 -i --decode)\"/")

Ciao
Davide

--
La mia privacy non è affar tuo
https://noyb.eu/it
- You do not have my permission to use this email to train an AI -
If you use this to train your AI than you accept to distribute under AGPL
license >= 3.0 all the model trained, all the source you have used to
training your model and all the source of the program that use that model



Re: strano problemino con stringhe base64

2024-03-13 Per discussione Marco Ciampa
Il Tue, Mar 12, 2024 at 10:18:21AM +0100, Piviul ha scritto:
> Ciao a tutti, ho uno script che interroga (ldapsearch) alcuni campi di un db
> ldap e aggiunge alcuni altri ammenicoli che poi importa in un altro db
> sempre ldap.
> 
> In particolare nello script ad un certo punto ho questo codice:
> 
> ldapsearch -LLL \
>     -D "$bind_ns" \
>     -w "$pwd_ns" \
>     -b "$baseaddress_ns" \
>     -H "ldaps://ad.csaricerche.com" \
> '(&(objectClass=user)(!(isCriticalSystemObject=TRUE))(!(logonCount=0))(memberOf=CN=utenti,CN=Users,DC=ad,DC=csaricerche,DC=com))'
> \
>     sAMAccountName displayName userPrincipalName | \
>     sed -e 's/userPrincipalName:/mail:/' \
>     -e "s/$container_ns/$container_ab/" \
>     -e "s/sAMAccountName:\ \(.*\)/cn: \1/" \
>     -e "s/displayName:\ \(.*\)$/displayName: \1\nsn: \1\nou:
> utenti\nobjectClass: top\nobjectClass: inetOrgPerson/"> $ldap_ns_path
> 
> che in altre parole vorrebbe semplicemente interrogare sAMAccountName
> displayName userPrincipalName ed aggiungere sn con la stessa cosa che trova
> in userPrincipalName e poi altri ammenicoli necessari per l'importazione
> successiva in un altro db.
> 
> Il tutto ha funzionato bene per anni ma ora in displayName di un record è
> stata inserita un'accentata e questo fa si che il comando sopra, al record
> contenente un'accentata, non venga aggiunto né sn né gli altri ammenicoli
> mentre compaioni : aggiuntivi al displayName.
> 
> In altre parole per il record in questione viene restituito come
> 
> dn: CN=enicolo,OU=UsersAndGroups,DC=ad,DC=mydomain,DC=ext
> cn: enicolo
> mail: enic...@mydomain.ext
> displayName:: Tmljb2zDsiBFZG9hcmRv
> 
> dove Tmljb2zDsiBFZG9hcmRv è la stringa contenente una o accentata codificata
> in base64:
> 
> > # echo Tmljb2zDsiBFZG9hcmRv | base64 --decode
> > Nicolò Edoardo
> 
> Invece sed avrebbe dovuto restituire
> 
> dn: CN=enicolo,OU=UsersAndGroups,DC=ad,DC=mydomain,DC=ext
> cn: enicolo
> mail: enic...@mydomain.ext
> displayName: Tmljb2zDsiBFZG9hcmRv
> sn: Tmljb2zDsiBFZG9hcmRv
> ou: utenti
> objectClass: top
> objectClass: inetOrgPerson
> 
> 
> Qualcuno ha qualche idea di cosa dabbia fastidio a sed?
> 
> Grazie
> 
> Piviul

Non è una soluzione ma è relativo a questo problema in generale:

There's No Such Thing As Plain Text • Dylan Beattie • YOW! 2023

https://www.youtube.com/watch?v=ajfb5LSbQVM


-- 

Amike,
Marco Ciampa



Re: strano problemino con stringhe base64

2024-03-13 Per discussione Piviul

On 3/12/24 18:04, Giuseppe Sacco wrote:

Ciao Piviul,

Il giorno mar, 12/03/2024 alle 10.18 +0100, Piviul ha scritto:

Ciao a tutti, ho uno script che interroga (ldapsearch) alcuni campi di
un db ldap e aggiunge alcuni altri ammenicoli che poi importa in un
altro db sempre ldap.

[...]

      -e "s/displayName:\ \(.*\)$/displayName: \1\nsn: \1\nou:
utenti\nobjectClass: top\nobjectClass: inetOrgPerson/"> $ldap_ns_path

[...]

Mi pare di capire che sed sostituisca solo le linee che contengono
"displayName:" seguito da uno spazio. Nel tuo caso "displayName:" non è
seguito da uno spazio, ma dal secondo ":", sicché sed non lo prende in
considerazione. Forse dovresti cambiare l'espressione con le regex estese,
così:

sed -E -e "s/displayName(:|::)\ (.*)$/displayName\1 \2/"


Grazie Giuseppe, hai ragione, che pataca! Grazie ancora, ora è proprio 
tutto risolto... anzi quasi... per caso in sed, nella sostituzione si 
possono inserire comandi... qualcosa tipo


echo  "displayName:: Tmljb2zDsiBFZG9hcmRv" | sed -E -e 
"s/(displayName:): (.*)$/\1 $(echo "\2" | base64 -i --decode)/"


Purtroppo non funziona, restituisce l'errore "base64: input non valido" 
ma non capisco perché; questo però funziona


echo  "displayName:: Tmljb2zDsiBFZG9hcmRv" |  sed -E -e 
"s/(displayName:): (.*)$/\1 $(echo "\2")/"


e restituisce

displayName: Tmljb2zDsiBFZG9hcmRv

Quindi sembra non venga interpretato correttamente il pipe... hai 
qualche suggerimento?


Piviul



Re: strano problemino con stringhe base64

2024-03-13 Per discussione Piviul

On 3/12/24 14:44, Diego Zuccato wrote:
Mah, ma me pare che funzioni rimuovendo la parte '-e 
"s/$container_ns/$container_ab/"' che non posso testare in quanto non 
so cosa ci sia nelle variabili container_ns e container_ab . Magari 
c'è qualcosa di strano che interferisce?


hai ragione, non lo puoi verificare e mi scuso, comunque ho risolto. 
Questo codice ora funziona:


ldapsearch -LLL \
    -D "$bind_ns" \
    -w "$pwd_ns" \
    -b "$baseaddress_ns" \
    -H "ldaps://ad.mydomain.ext" \
'(&(objectClass=user)(!(isCriticalSystemObject=TRUE))(!(logonCount=0))(memberOf=CN=utenti,CN=Users,DC=ad,DC=mydomain,DC=ext))' 
\

    sAMAccountName displayName userPrincipalName | \
    sed -e 's/userPrincipalName:/mail:/' \
    -e "s/$container_ns/$container_ab/" \
    -e "s/sAMAccountName:\ \(.*\)/cn: \1/" \
    -e "s/displayName:[[:space:]]*\([[:print:]]*\)$/displayName: 
\1\nsn: \1\nou: utenti\nobjectClass: top\nobjectClass: inetOrgPerson/"> 
$ldap_ns_path


in cui mi limito a prendere tutti i caratteri stampabili invece di 
prendere tutti i caratteri dopo displayName:[[:space:]].


Ora l'utente incriminato viene restituito come:

dn: CN=enicolo,OU=UsersAndGroups,DC=ad,DC=mydomain,DC=ext
cn: enicolo
mail: enic...@mydomain.ext
displayName: : Tmljb2zDsiBFZG9hcmRv
sn: : Tmljb2zDsiBFZG9hcmRv
ou: utenti
objectClass: top
objectClass: inetOrgPerson

Mi rimane solo da decodificare displayName e sn, stringhe in bas64... 
per fortuna ldapsearch aggiunge ":" alle stringhe codificate in bas64 
così supponendo che non ci siano ":" nei campi restituiti da ldapsearch  
(sAMAccountName, displayName e userPrincipalName) l'ho risolto così:


ifs=$IFS
IFS="
"
for r in $(grep displayName $ldap_ns_path); do
    dn64=$(echo $r | cut -f3 -d: | grep -o "[^[:space:]]*")
    [ -z "$dn64" ] && continue
    dn=$(echo $dn64 | base64 -i --decode)
    sed -i "s/: $dn64/$dn/" $ldap_ns_path
done
IFS=$ifs

Grazie per la pazienza

Piviul



Re: strano problemino con stringhe base64

2024-03-12 Per discussione Giuseppe Sacco
Ciao Piviul,

Il giorno mar, 12/03/2024 alle 10.18 +0100, Piviul ha scritto:
> Ciao a tutti, ho uno script che interroga (ldapsearch) alcuni campi di 
> un db ldap e aggiunge alcuni altri ammenicoli che poi importa in un 
> altro db sempre ldap.
[...]
>      -e "s/displayName:\ \(.*\)$/displayName: \1\nsn: \1\nou: 
> utenti\nobjectClass: top\nobjectClass: inetOrgPerson/"> $ldap_ns_path
[...]

Mi pare di capire che sed sostituisca solo le linee che contengono
"displayName:" seguito da uno spazio. Nel tuo caso "displayName:" non è
seguito da uno spazio, ma dal secondo ":", sicché sed non lo prende in
considerazione. Forse dovresti cambiare l'espressione con le regex estese,
così:

sed -E -e "s/displayName(:|::)\ (.*)$/displayName\1 \2/"

Ciao,
Giuseppe



Re: strano problemino con stringhe base64

2024-03-12 Per discussione Diego Zuccato
Mah, ma me pare che funzioni rimuovendo la parte '-e 
"s/$container_ns/$container_ab/"' che non posso testare in quanto non so 
cosa ci sia nelle variabili container_ns e container_ab . Magari c'è 
qualcosa di strano che interferisce?


Diego

Il 12/03/2024 10:18, Piviul ha scritto:
Ciao a tutti, ho uno script che interroga (ldapsearch) alcuni campi di 
un db ldap e aggiunge alcuni altri ammenicoli che poi importa in un 
altro db sempre ldap.


In particolare nello script ad un certo punto ho questo codice:

ldapsearch -LLL \
     -D "$bind_ns" \
     -w "$pwd_ns" \
     -b "$baseaddress_ns" \
     -H "ldaps://ad.csaricerche.com" \
'(&(objectClass=user)(!(isCriticalSystemObject=TRUE))(!(logonCount=0))(memberOf=CN=utenti,CN=Users,DC=ad,DC=csaricerche,DC=com))'
 \
     sAMAccountName displayName userPrincipalName | \
     sed -e 's/userPrincipalName:/mail:/' \
     -e "s/$container_ns/$container_ab/" \
     -e "s/sAMAccountName:\ \(.*\)/cn: \1/" \
     -e "s/displayName:\ \(.*\)$/displayName: \1\nsn: \1\nou: 
utenti\nobjectClass: top\nobjectClass: inetOrgPerson/"> $ldap_ns_path


che in altre parole vorrebbe semplicemente interrogare sAMAccountName 
displayName userPrincipalName ed aggiungere sn con la stessa cosa che 
trova in userPrincipalName e poi altri ammenicoli necessari per 
l'importazione successiva in un altro db.


Il tutto ha funzionato bene per anni ma ora in displayName di un record 
è stata inserita un'accentata e questo fa si che il comando sopra, al 
record contenente un'accentata, non venga aggiunto né sn né gli altri 
ammenicoli mentre compaioni : aggiuntivi al displayName.


In altre parole per il record in questione viene restituito come

dn: CN=enicolo,OU=UsersAndGroups,DC=ad,DC=mydomain,DC=ext
cn: enicolo
mail: enic...@mydomain.ext
displayName:: Tmljb2zDsiBFZG9hcmRv

dove Tmljb2zDsiBFZG9hcmRv è la stringa contenente una o accentata 
codificata in base64:



# echo Tmljb2zDsiBFZG9hcmRv | base64 --decode
Nicolò Edoardo


Invece sed avrebbe dovuto restituire

dn: CN=enicolo,OU=UsersAndGroups,DC=ad,DC=mydomain,DC=ext
cn: enicolo
mail: enic...@mydomain.ext
displayName: Tmljb2zDsiBFZG9hcmRv
sn: Tmljb2zDsiBFZG9hcmRv
ou: utenti
objectClass: top
objectClass: inetOrgPerson


Qualcuno ha qualche idea di cosa dabbia fastidio a sed?

Grazie

Piviul



--
Diego Zuccato
DIFA - Dip. di Fisica e Astronomia
Servizi Informatici
Alma Mater Studiorum - Università di Bologna
V.le Berti-Pichat 6/2 - 40127 Bologna - Italy
tel.: +39 051 20 95786



strano problemino con stringhe base64

2024-03-12 Per discussione Piviul
Ciao a tutti, ho uno script che interroga (ldapsearch) alcuni campi di 
un db ldap e aggiunge alcuni altri ammenicoli che poi importa in un 
altro db sempre ldap.


In particolare nello script ad un certo punto ho questo codice:

ldapsearch -LLL \
    -D "$bind_ns" \
    -w "$pwd_ns" \
    -b "$baseaddress_ns" \
    -H "ldaps://ad.csaricerche.com" \
'(&(objectClass=user)(!(isCriticalSystemObject=TRUE))(!(logonCount=0))(memberOf=CN=utenti,CN=Users,DC=ad,DC=csaricerche,DC=com))' 
\

    sAMAccountName displayName userPrincipalName | \
    sed -e 's/userPrincipalName:/mail:/' \
    -e "s/$container_ns/$container_ab/" \
    -e "s/sAMAccountName:\ \(.*\)/cn: \1/" \
    -e "s/displayName:\ \(.*\)$/displayName: \1\nsn: \1\nou: 
utenti\nobjectClass: top\nobjectClass: inetOrgPerson/"> $ldap_ns_path


che in altre parole vorrebbe semplicemente interrogare sAMAccountName 
displayName userPrincipalName ed aggiungere sn con la stessa cosa che 
trova in userPrincipalName e poi altri ammenicoli necessari per 
l'importazione successiva in un altro db.


Il tutto ha funzionato bene per anni ma ora in displayName di un record 
è stata inserita un'accentata e questo fa si che il comando sopra, al 
record contenente un'accentata, non venga aggiunto né sn né gli altri 
ammenicoli mentre compaioni : aggiuntivi al displayName.


In altre parole per il record in questione viene restituito come

dn: CN=enicolo,OU=UsersAndGroups,DC=ad,DC=mydomain,DC=ext
cn: enicolo
mail: enic...@mydomain.ext
displayName:: Tmljb2zDsiBFZG9hcmRv

dove Tmljb2zDsiBFZG9hcmRv è la stringa contenente una o accentata 
codificata in base64:



# echo Tmljb2zDsiBFZG9hcmRv | base64 --decode
Nicolò Edoardo


Invece sed avrebbe dovuto restituire

dn: CN=enicolo,OU=UsersAndGroups,DC=ad,DC=mydomain,DC=ext
cn: enicolo
mail: enic...@mydomain.ext
displayName: Tmljb2zDsiBFZG9hcmRv
sn: Tmljb2zDsiBFZG9hcmRv
ou: utenti
objectClass: top
objectClass: inetOrgPerson


Qualcuno ha qualche idea di cosa dabbia fastidio a sed?

Grazie

Piviul