Détecter une chaine en base64

Détecter une chaine en base64

Bonjour,

Voici mon petit soucis,
J’effectue pour le moment des requêtes sur un serveur LDAP,
Exemple :

ldapsearch -x -H ldap://192.168.128.70 -D "cn=XXXXX,ou=Informatique,dc=cndg,dc=intra" -w XXXX -b "cn=XXX,cn=Users,DC=cndg,DC=intra" displayName | grep displayName: > test.txt
Et quand un utilisateur a des accents ou autre caractère spécial, celui-ci est coder en Base64 et me revient dans ce style la par exemple : "displayName: QsOpbsOpZGljdGUgUGFsYXRl"
Avec la commande base64 je peux facilement décoder cette chaine :

Après avoir planter le décor, voici le vrai souci !
Simplement comment détecter si une chaine est en base64 :smiley: pour automatiser le tout dans un script?

Solution :

Bon ce n’est pas vraiment une solution dans les normes mais ça fonctionne :smiley:
Quand j’exécute ma commande LDAP si aucun accent n’est présent je reçois le nom et prénom sans problème et donc j’ai deux mots dans ma chaine et quand un accent est présent j’ai une chaine en un mot.
Alors avec la commande “wc -w” qui compte le nombre de mot la condition est vite faite xD

[code]#!/bin/bash

while read line
do
if [ echo $line | wc -w = 1 ]
then
echo $line | base64 -d
echo
else
echo $line
fi

done < test.txt
[/code]
Si vous avez d’autre idée, je suis preneur quand même :smiley:

Personne ? :frowning:

Mis à part une détection de forme comme tu le fait (tu peux simplement détecter la présence d’un espace aussi), je ne vois pas bien de solution. Il n’y a pas de motif qui permet de savoir qu’une chaine est du base64 dans l’absolu.