# Détecter une chaine en base64

**URL:** <https://www.debian-fr.org/t/detecter-une-chaine-en-base64/56717>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 2:15 UTC](https://www.debian-fr.org/t/detecter-une-chaine-en-base64/56717 "2016-02-21T14:15:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![D3s3rT](https://www.debian-fr.org/user_avatar/www.debian-fr.org/d3s3rt/32/3295_2.png) [@D3s3rT](https://www.debian-fr.org/u/D3s3rT)\
**Post date:** [Février 21, 2016, 2:15 UTC](https://www.debian-fr.org/t/detecter-une-chaine-en-base64/56717/1 "2016-02-21T14:15:45Z")

</div>

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 :

```auto

```

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

---

<div class="post-metadata">

**Author:** ![D3s3rT](https://www.debian-fr.org/user_avatar/www.debian-fr.org/d3s3rt/32/3295_2.png) [@D3s3rT](https://www.debian-fr.org/u/D3s3rT)\
**Post date:** [Février 21, 2016, 2:15 UTC](https://www.debian-fr.org/t/detecter-une-chaine-en-base64/56717/2 "2016-02-21T14:15:46Z")

</div>

Solution :

Bon ce n’est pas vraiment une solution dans les normes mais ça fonctionne 😃  
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 😃

---

<div class="post-metadata">

**Author:** ![D3s3rT](https://www.debian-fr.org/user_avatar/www.debian-fr.org/d3s3rt/32/3295_2.png) [@D3s3rT](https://www.debian-fr.org/u/D3s3rT)\
**Post date:** [Février 21, 2016, 2:16 UTC](https://www.debian-fr.org/t/detecter-une-chaine-en-base64/56717/3 "2016-02-21T14:16:18Z")

</div>

Personne ? ☹

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 2:16 UTC](https://www.debian-fr.org/t/detecter-une-chaine-en-base64/56717/4 "2016-02-21T14:16:18Z")

</div>

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.
