Portál AbcLinuxu, 25. dubna 2024 23:40


Dotaz: Bash base64

pepe_ avatar 27.2.2011 11:15 pepe_ | skóre: 48
Bash base64
Přečteno: 397×
Odpovědět | Admin

Zdravim , potřebuji do bash scriptu poslat uživatelské jméno a heslo a bash script by měl vyhodit zakódovaně.

Nejde mi ale předat proměnné viz :

pepe@PC-Pepe:~$ a="aaa" ; b="bbb" ; perl -MMIME::Base64 -e 'print  encode_base64("\0$a\0$b");'
AAA=
pepe@PC-Pepe:~$ perl -MMIME::Base64 -e 'print  encode_base64("\0aaa\0bbb");'
AGFhYQBiYmI=

A přes openssl sice mi to proměnné pošle ale výsledek je nesprávný

 

pepe@PC-Pepe:~$ echo "\0aaa\0bbb" | openssl enc -base64
XDBhYWFcMGJiYgo=

pepe@PC-Pepe:~$ a="aaa" ; b="bbb" ; echo "\0$a\0$b" | openssl enc -base64
XDBhYWFcMGJiYgo=


Správně má být "AGFhYQBiYmI="

Poradíte ?

Přes perl mi to jde ale nedokážu tam dodat proměnné , přes openssl mi to nejde vůbec.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

27.2.2011 11:22 RobS | skóre: 12
Rozbalit Rozbalit vše Re: Bash base64
Odpovědět | | Sbalit | Link | Blokovat | Admin
pozor na to, co vubec sifrujes. V tech dvou pripadech jsou to opravdu dva ruzne vstupy :)
zkus
echo -e "\0aaa\0bbb" | openssl enc -base64

pepe_ avatar 27.2.2011 11:26 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash base64
pepe@PC-Pepe:~/Programovani$ echo -e "\0aaa\0bbb"|openssl enc -base64
AGFhYQBiYmIK
pepe@PC-Pepe:~/Programovani$ perl -MMIME::Base64 -e 'print  encode_base64("\0aaa\0bbb");'
AGFhYQBiYmI=

Proč se tedy výstup také liší ?
27.2.2011 11:32 RobS | skóre: 12
Rozbalit Rozbalit vše Re: Bash base64
sorry, nevyzkousel jsem si to..

k parametru -e (interpretace escape znaku) pridej jeste -n (neodentrovat novy radek).
pak by to uz melo sedet.

echo -ne "\0aa\0bb.....
pepe_ avatar 27.2.2011 11:45 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash base64

Takto to funguje , za to děkuji ! Stále ale nevím jak poslat proměnné perlu

$user="aaa"
$passwd="bbb"
auth=`perl -MMIME::Base64 -e 'print  encode_base64("\0$user\0$passwd");'`
echo $auth
27.2.2011 13:00 chrono
Rozbalit Rozbalit vše Re: Bash base64
Pri tých priradeniach do user a passwd nemá byť ten znak $.
27.2.2011 15:05 RobS | skóre: 12
Rozbalit Rozbalit vše Re: Bash base64
Za prvé, přečti si něco o programování v bashi; aspoň pár prvních kapitol. Takhle se prostě proměnné neinicializují.

Dále, pokud používáš apostrofy, tak uvnitř nich adresace nefunguje. Ta funguje u normálních uvozovek. Takže:

auth=`perl -e "print encode_base64(\"\0$user\0$passwd");"`

Taky muzes pouzit perl, aby sam precetl tu promenne z prostredi ($ENV), pak bys je ale musel exportovat.
27.2.2011 15:08 RobS | skóre: 12
Rozbalit Rozbalit vše Re: Bash base64
teda...
auth=`perl -MMIME::Base64 -e "print encode_base64(\"\0$user\0$passwd\");"`
uz jsem taky z toho taky zmaten :)
pepe_ avatar 27.2.2011 15:49 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash base64

Jo děkuju , to je to co jsem chtěl vědět. Toto je řešení.

stativ avatar 27.2.2011 15:22 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Bash base64
Možná mám trochu blbou otázku, ale proč nepoužiješ místo perlu base64 z coreutils? Perl mi přijde pro daný účel kanón na vrabce.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
pepe_ avatar 27.2.2011 15:51 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash base64

Nejde jen o base64 , mám s tím problém často a pořád nechápu jak se to má vlastně správně dělat.

pepe_ avatar 27.2.2011 16:15 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash base64
Odpovědět | | Sbalit | Link | Blokovat | Admin

No a zde je to co jsem patlal :

 

#!/bin/bash
from="odesilatel@seznam.cz"
to="prijemce@seznam.cz"
domain="192.168.100.1"
mailserver="smtp.seznam.cz"
subject="Nazev zpravy"
mailtext="Text e-mailu\r\n\r\nDalsi radek emailu.\r\n"
user="jmeno-seznam-uctu"
passwd="heslo-seznam-uctu"
#auth=`perl -MMIME::Base64 -e "print encode_base64(\"\0$user\0$passwd\");"`
auth=`echo -ne "\0$user\0$passwd" | openssl enc -base64`
exec 9<>/dev/tcp/$mailserver/25
read -r temp <&9
echo "$temp"
echo -en "EHLO $domain\r\n" >&9
read -r temp <&9
echo "$temp"
read -r temp <&9
echo "$temp"
read -r temp <&9
echo "$temp"
read -r temp <&9
echo "$temp"
read -r temp <&9
echo "$temp"
read -r temp <&9
echo "$temp"
read -r temp <&9
echo -en "AUTH PLAIN $auth\r\n" >&9
read -r temp <&9
echo "$temp"
echo -en "MAIL FROM: <$from>\r\n" >&9
read -r temp <&9
echo "$temp"
echo -en "RCPT TO: <$to>\r\n" >&9
read -r temp <&9
echo "$temp"
echo -en "DATA\r\n" >&9
read -r temp <&9
echo "$temp"
echo -en "Subject: $subject\r\n" >&9
echo -en "From: $from\r\n" >&9
echo -en "To: $to\r\n" >&9
echo -en "Return-Path : <$from>\r\n" >&9
echo -en "X-Mailer: Bash-Email 1.0\r\n" >&9
echo -en "\r\n" >&9
echo -en "$mailtext\r\n" >&9
echo -en ".\r\n" >&9
read -r temp <&9
echo "$temp"
echo -en "QUIT\r\n" >&9
read -r temp <&9
echo "$temp"
9>&-
9<&-
exit 0


27.2.2011 18:11 NN
Rozbalit Rozbalit vše Re: Bash base64
Odpovědět | | Sbalit | Link | Blokovat | Admin
Take je mozne pouzit prikazy:
uuencode
uudecode
NN

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.