Kirjoittaja Aihe: Base64 koodauksen tunnistaminen scriptissä? [ratkaistu]  (Luettu 14490 kertaa)

0 jäsentä ja 1 Vieras katselee tätä aihetta.

guest1093

  • Vieras
Moi !

Rakentelen pientä bash scriptiä, jossa käytetään ldapsearch komentoa hakemaan tietoa käyttäjistä.
Homma toimii muuten hyvin mutta komento palauttaa ääkkösiä ja muita erikoismerkkejä sisältävät tiedot base64 koodattuna.

Nämä tiedot saa selkokielisiksi komennolla "echo base64merkkijono | base64 --decode".

Aloitin tutkimalla case functiossa onko $NAME muuttujassa "=" merkkiä lopussa, kunnes huomasin että base64 koodattu sisältö ei välttämättä käsitä tuota merkkiä ollenkaan.  :-[
Eli nyt saan noin puolet erikoismerkkejä sisältävistä nimistä selkokieliseksi.
Näyttäisi siltä että ldapsearchin palauttamassa base64 koodissa olisi aina (?) tyhjä merkki ensimmäisenä, eli senkin tutkiminen saattaisi ratkaista asian (?).

case "$NAME" in
    *=)
            DECODEDNAME=`echo $NAME | /usr/bin/base64 --decode`
       ;;
    *)
            echo "Decoding not needed..."
       ;;
esac


Ongelmana on siis se miten tutkia onko $NAME muuttujan sisältö oikeasti base64 koodattua vai ei.


-tjka-

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2795
  • Sukupuoli: Mies
Vs: Base64 koodauksen tunnistaminen scriptissä?
« Vastaus #1 : 18.09.2013 - klo:13:57 »
Yksi tapa olisi varmaan ajaa se aina base64 läpi ja riippuen exit koodista joko kääntää se tai skipata. base64 palauttaa aina 0 jos se kääntää base64 koodin asciiksi muuten se palauttaa 1.

eli jotain tällästä...

Koodia: [Valitse]
echo $NIMI | base64 -d >/dev/null 2>&1;
if [ $? == 0 ]; then
NIMI=`echo $NIMI | base64 -d`
fi

guest1093

  • Vieras
Vs: Base64 koodauksen tunnistaminen scriptissä?
« Vastaus #2 : 18.09.2013 - klo:15:46 »
...toimi kun junan vessa. Kiitokset !   ;D

-tjka-