Portál AbcLinuxu, 13. května 2024 03:48


Dotaz: Dekódování base64

2.9.2009 10:46 jben | skóre: 4
Dekódování base64
Přečteno: 886×
Odpovědět | Admin

Potřebuji z bash skriptu provést dekódování souboru, abych z něj následně mohl vytáhnout nějaké údaje. Soubor je emailová zpráva, která v těle obsahuje část zakódovanou base64. Z práva jako taková mě nazajímá. Pro jistotu uvádím začátek oné části:

 Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64

Cgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9u
YWwvL0VOIj4KPGh0bWw+Cjxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiPgoK
...

Moje pokusy s recode a hledání nebylo úspěšné (určitě hlavně proto, že je mi tato oblast naprosto neznámá), může někdo poradit nebo nasměrovat, kde a co hledat? Předem dík.

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

Odpovědi

2.9.2009 11:23 camel1cz | skóre: 25
Rozbalit Rozbalit vše Re: Dekódování base64
Odpovědět | | Sbalit | Link | Blokovat | Admin

Na podobné věci používám perlovou utilitku mimedecode, která je ke stažení zde.

Dekóduje to všechny přílohy mailu a uloží do daného adresáře - tělo ignoruje. Jediná věc k řešení je, že zachovává jména příloh, tak to bude třeba v tom bashi nějak poladit :-)

 

Z toho celého balíku je třeba jen  ten jeden soubor mimedecode (a knihovny perlu na manipulaci s MIME, které jsou snad v každém distru - Debian je má v libmime-tools-perl)

2.9.2009 11:45 jben | skóre: 4
Rozbalit Rozbalit vše Re: Dekódování base64

Podívám se na to, ale ta zakódovaná část není příloha, ale vlastní tělo zprávy, bude to i zde použitelné?

3.9.2009 02:15 camel1cz | skóre: 25
Rozbalit Rozbalit vše Re: Dekódování base64

No tak to nezabere... ale co třeba:

 

# reformime -x/tmp/ < mail.raw

 

Rozbalí všechny mime party (včetně těla atd.)... pak stačí chytit ten správnej... takhle na slepo je těžké radit přesněji...

Cubic avatar 2.9.2009 12:18 Cubic | skóre: 24 | blog: obcasne_vyplody | Essex
Rozbalit Rozbalit vše Re: Dekódování base64
Odpovědět | | Sbalit | Link | Blokovat | Admin
base64 --decode ?
Do you like what you see? No? Well, bloody look harder.
2.9.2009 13:10 jben | skóre: 4
Rozbalit Rozbalit vše Re: Dekódování base64

nedaří se, použil jsem

base64 -di mail.txt ,

ale končí to vždy chybou (obdobně i při nepoužití -i)

base64: invalid input

a na obrazovku nebo do souboru se zapíše

..z{Sʗ.{...V...Z.ǭ
2.9.2009 13:21 nejsem | skóre: 14 | blog: nejsem
Rozbalit Rozbalit vše Re: Dekódování base64

a `$ openssl enc -d -base64 -in myfile.b64 -out myfile.decrypt` zabere?

------------------------------- A vy snad těm počítačům věříte?
2.9.2009 13:32 jben | skóre: 4
Rozbalit Rozbalit vše Re: Dekódování base64

Podobné jako předchozí, celý zakódovaný soubor je v pořádku, ale skutečný soubor je z části nekódovaný a to je problém. Tentokrát to nekončí chybou, ale výsledek je nějaký rozsypaný čaj.

2.9.2009 13:23 jben | skóre: 4
Rozbalit Rozbalit vše Re: Dekódování base64

Beru zpět tu nefunkčnost, problém je s tím, že base64 je jen část dokumentu a ono to spadne na začátku na nekódované části. Pokud je v souboru jen ta zkódovaná část, tak to jde. Tím ale vznikl jiný, pro mě asi stejně komplikovaný zádrhel, že bych napřed musel nějak soubor vyčistit.

Cubic avatar 2.9.2009 16:32 Cubic | skóre: 24 | blog: obcasne_vyplody | Essex
Rozbalit Rozbalit vše Re: Dekódování base64
pokud ten soubor vypda jak jsi nastinil a nema zadne zapati ci podpis (kodovana cast je az do konce souboru) tak muzes hlavicku odstranit pomoci csplit vstupni_soubor %base64%+1 vznikne ti soubor xx00(jmeno mozno zmeni viz man csplit) kde je jenom base64 kodovana cast

nebo pokud ma hlavicka konstantni pocet radku v kazde zprave muzes zkusit sed '1,3d' vstupni_soubor | base64 -d kde cisla 1 a 3 urcuji rozsah radek ktere se maji z puvodniho souboru smazat

nejsem zadny guru takze to co jsem predvedl jsou asi osklive hacky proti elegantnim resenim ktera urcite nekde existuji ale mne zrovna nenapadaji, pokud je tvuj slotitejsi tak zkus zverejnit jeho strukturu a mozna neco vymyslime
2.9.2009 21:04 jben | skóre: 4
Rozbalit Rozbalit vše Re: Dekódování base64

Ten soubor má standardní hlavičku emailu a v těle jsou dvě části zakodované (jednou pro html, jednou pro plain) , každá tato část má hlavičku o kódování (viz výše) a řetězec ukončující každou část. Nerad bych to zveřejňoval, protože se tam objevují kontakty, které právě potřebuji vytáhnout a uložit.

Poradil jsem si podobným způsobem jak radíš, z mejlu ořežu vše co je navíc a pak to jde, ale je to hnusné řešení, kterým se nemůžu pochlubit a musím spoléhat na to, že se struktura zprávy nezmění v důležitých bodech.

 

 

Tarmaq avatar 2.9.2009 16:32 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Dekódování base64
Odpovědět | | Sbalit | Link | Blokovat | Admin
na toto staci jednoduchy base64 -d.
$ cat foo
Cgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KPGh0bWw+Cjxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiPgo

$ base64 -d < foo

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body bgcolor="#ffffff" text="#000000">
base64: invalid input
Ten error ktery to vyhodilo je zpusobem tim, ze jsi nam poskytl jenom uryvek.. staci na konec doplnit "=" a uz to projde v pohode..
Don't panic!
2.9.2009 21:10 jben | skóre: 4
Rozbalit Rozbalit vše Re: Dekódování base64

Ano stačí, ale jak bylo napsáno výš, musí být z toho souboru odstraněno vše, co není právě tím kódem.

Hledám řešení (pokud je), jak to dekódovat celé bez úprav souboru. Třeba i s tím, že nekódovaná část souboru bude nějak znetvořena, nezajímá mě.

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.