A vicc az, hogy a beagyazott MS Office fajlokkal nincs kulonosebb gond, Openoffice szepen megoldja. Viszont a beagyazott PDF-fel nem tud mit kezdeni: "General Error" hibauzenet fogad, ha megprobalom megnyitni.
Az egyszeruseg kedveert tetelezzuk fel, hogy docx (xlsx, pptx) a formatum. Sima doc/xls/ppt mar level 2-es feladat.
Eloszor is segit az unzip, a docx belsejeben egyebek mellett ilyesmi fajlokat fogunk talalni:
/word/embeddings/
Microsoft_Office_Word_97_-_2003_Document1.doc
Microsoft_Office_Word_97_-_2003_Document2.doc
Microsoft_Office_Word_97_-_2003_Document3.doc
oleObject1.bin
oleObject2.bin
oleObject3.bin
Remek, a beagyazott .doc fajlok megvannak, meg is nyithatok. A PDF-ek nyilvan az oleObject.bin fajlokban lesznek, csakhogy a PDF nezo szerint megsem.
file oleObject1.bin
oleObject1.bin: CDF V2 Document, corrupt: Cannot read summary info
Valoban nem PDF...
Ez a problema nem csak engem erint, masnak is elojott, ahol egyreszt kiderult a baj forrasa: az "egyeb" beagyazott dokumentumokat valami OLE objektumba csomagolva taroljak. Tovabba azt tanacsoltak, ahogy tekintsuk meg az Apache POIFS projektet, amivel Java API-n keresztul tudunk manipulalni ilyen dokumentumokat.
Most nem vagyok olyan hangulatban, hogy elkezdjek egy command line toolt irni, ami ezzel az library-vel megoldja a fajlok kinyereset. Legyen ez majd kesobb a - fent mar emlitett - level 2 megoldas.
Hatha megy ez egyszerubben is.
hexdump -C oleObject1.bin
00000000 d0 cf 11 e0 a1 b1 1a e1 00 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 3b 00 03 00 fe ff 09 00 |........;.......|
00000020 06 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|
00000030 01 00 00 00 00 00 00 00 00 10 00 00 02 00 00 00 |................|
Igen, hat ez nem ugy kezdodik, mintha pdf lenne, de nezzuk csak lejjebb...
00000840 01 00 fe ff 03 0a 00 00 ff ff ff ff 65 ca 01 b8 |............e...|
00000850 fc a1 d0 11 85 ad 44 45 53 54 00 00 11 00 00 00 |......DEST......|
00000860 41 63 72 6f 62 61 74 20 44 6f 63 75 6d 65 6e 74 |Acrobat Document|
00000870 00 00 00 00 00 14 00 00 00 41 63 72 6f 45 78 63 |.........AcroExc|
00000880 68 2e 44 6f 63 75 6d 65 6e 74 2e 37 00 f4 39 b2 |h.Document.7..9.|
00000890 71 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |q...............|
000008a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000008c0 40 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 |@...............|
000008d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000a00 43 00 4f 00 4e 00 54 00 45 00 4e 00 54 00 53 00 |C.O.N.T.E.N.T.S.|
00000a10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000a40 12 00 02 00 ff ff ff ff ff ff ff ff ff ff ff ff |................|
00000a50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000a70 00 00 00 00 05 00 00 00 7c 72 00 00 00 00 00 00 |........|r......|
00000a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000c00 25 50 44 46 2d 31 2e 34 0a 25 c7 ec 8f a2 0a 35 |%PDF-1.4.%.....5|
00000c10 20 30 20 6f 62 6a 0a 3c 3c 2f 4c 65 6e 67 74 68 | 0 obj.<</Length|
00000c20 20 36 20 30 20 52 2f 46 69 6c 74 65 72 20 2f 46 | 6 0 R/Filter /F|
Hoppa, 0x0c00-tol kezdve ott figyel a PDF header! Vajon hol lehet a vege?
00007e50 36 39 31 41 41 32 30 42 43 35 34 44 36 35 35 41 |691AA20BC54D655A|
00007e60 3e 5d 0a 3e 3e 0a 73 74 61 72 74 78 72 65 66 0a |>].>>.startxref.|
00007e70 32 38 35 37 34 0a 25 25 45 4f 46 0a 00 00 00 00 |28574.%%EOF.....|
00007e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00008000
Ez a legvege a fajlnak. Bar nem vagyok akkora PDF guru, hogy fejbol ismerjem a szintaxist, de a szimatom azt sugja, hogy a %%EOF-nal er veget a PDF. Utana mar csak 0-k jonnek az eredeti bin fajl vegeig.
Proba szerencse, remeljuk, hogy nincs kodolva a pdf torzse:
dd if=oleObject1.bin skip=3072 of=oleObject1.pdf bs=1
evince oleObject1.pdf
Es ezt mar mindenfele PDF nezovel meg lehet nyitni, elso pillantasra a tartalma is korrektnek tunik.
Edit:
timar javasolt meg tovabbi idevonatkozo projekteket, amik elso nekifutasra elkerultek a figyelmemet. (Talan nem eleg kozismertek? Legalabbis a Gugliban keresgelesnel, az elso par oldalon szereplo talalatokban senkinek nem jutott eszebe javasolni oket):
- libgsf
- oletoy
Ezeket is erdemes lehet megnezni, mert talan kulturaltabban meg lehet oldani a feladatot veluk.
- XMI blogja
- A hozzászóláshoz be kell jelentkezni
- 1388 megtekintés
Hozzászólások
Ügyes.
- A hozzászóláshoz be kell jelentkezni
Na igen, nekem a vim hexa módja (%!xxd) és szintén dd segítségével sikerült a múltkor openwrt firmware "képfájlból" a SquashFS részt kiszedni, majd unsquash után hasznosítani. :)
A hexa legyen veled! :D
- A hozzászóláshoz be kell jelentkezni
"Hogyan lehetne hozzajutni a beagyazott doksik tartalmahoz?"
Megnyitod Wordben :)
--
cythoon
- A hozzászóláshoz be kell jelentkezni
Namost a tortenet igazabol ott kezdodott, hogy a Word sem nyitotta meg. :) Feltehetoen nem volt OLE provider rendesen regisztralva hozza.
A balladai homalyban hagyott reszlet az volt, hogy .doc-bol Worddel csinaltam .docx-et. :)
---
Internet Memetikai Tanszék
- A hozzászóláshoz be kell jelentkezni
Nem mindenkinek van Wordje. Pl. nekem sincs. Venni meg nem fogok csak azért, mert másoknak viszont van. :)
- A hozzászóláshoz be kell jelentkezni
Van ingyen word viewer. :)
- A hozzászóláshoz be kell jelentkezni
Aham, és akkor ha a word nem nyitotta meg, ez majd meg fogja? :-) Illetve nekem úgy tűnik, hogy nem feltétlen read only hozzáférésre gondolt a post írója.
- A hozzászóláshoz be kell jelentkezni
Ebben a szálban szó nem volt arról, hogy a word nem nyitja meg. Meg arról se, hogy nem elég az ro access.
- A hozzászóláshoz be kell jelentkezni
He? XMI fentebb épp ezt írta: "Namost a tortenet igazabol ott kezdodott, hogy a Word sem nyitotta meg. :)" Az pedig, hogy "Embedded fajlok kiszedese word dokumentumbol" szerintem leginkább azt jelenti, hogy ki akarja szedni, nem pedig azt, hogy csak el akarja olvasni. :-)
- A hozzászóláshoz be kell jelentkezni
(Az OLE-objektumban lévő PDF-et nem nyitotta meg, mert "Feltehetoen nem volt OLE provider rendesen regisztralva hozza.")
:)
- A hozzászóláshoz be kell jelentkezni
Fogd fel a szálakat úgy, mint egy gráf (fa). Azaz XMI hozzászólása nem ebben a szálban van. :)
- A hozzászóláshoz be kell jelentkezni
Ügyes, de ezzel csak a "zip" docx-ekkel, illetve adott esetben gondolom az odf-ekkel lehet varázsolni. A sima doc-okkal nemigazán, pedig érdekes lenne. Mondjuk ha valami úton-módon esetleg a libre/open office konvertálni tudná, ha megjeleníteni nem is... de ez csak egy ötlet.
- A hozzászóláshoz be kell jelentkezni
Itt jon kepbe az a java-s library (http://poi.apache.org/poifs/index.html), amit most lusta voltam elovenni. Ki kene egyszer probalni azt is.
---
Internet Memetikai Tanszék
- A hozzászóláshoz be kell jelentkezni
Van még a libgsf is, Linuxokon megtalálható szokott lenni.
$ gsf list Doc1.doc
$ gsf cat Doc1.doc $(gsf list Doc1.doc | grep Ole10Native | sed -e "s/^.*Obj/Obj/") > ojjektum
De biztos lehet a libgsf-re alapozva okosabb toolt is írni.
Az oletoy megvan? Csak hogy legyen minden egy helyen. :)
- A hozzászóláshoz be kell jelentkezni
Kosz, ezeket beraktam a post vegere.
De biztos lehet a libgsf-re alapozva okosabb toolt is írni.
Ez a gsf ebben a formaban mar majdnem olyan kulturalt, hogy elore koszon. ;)
---
Internet Memetikai Tanszék
- A hozzászóláshoz be kell jelentkezni
Archon nem látok ilyet, csak a libet, ez minek a része?
- A hozzászóláshoz be kell jelentkezni
Nálam openSUSE-n a libgsf része, de el tudom képzelni, hogy máshol kiherélik a csomagot, és ezt a "példaprogramot" nem csomagolják, mert minek az.
- A hozzászóláshoz be kell jelentkezni
Megnéztem a PKGBUILD-ot, nincs semmi extra paraméter kiherélésre :-) Gyanítom, hogy ezesetben inkább vmi extráról lehet szó, de megnézem mostmár.
szerk: nos, úgy tűnik, hogy a forrás tools mappája alatt figyel ilyen wrapper script meg bináris. Ami miatt én nem találtam, az az, hogy nem volt a csomag telepítve :-D Ezt persze teljesen nem értem, mert volt fenn koffice, ami meg dependál rá, és calligra meg van is, ez viszont nem dependál rá... mondjuk lehet legyaktam a többi orphan csomaggal, mert elég kevés a hely ezen a kis gépen.
- A hozzászóláshoz be kell jelentkezni
Régen (Ubuntu alatt) mc-ben a fájlon Enter, és megnyitotta a tömörítvényt. Ezután a szokásos módon lehetett másolni a kívánt fájlokat a másik panelre. Talán egyszerűbb így. Vagy nem. :-)
Most Sabayont használok, szerkeszteni kellett a kiterjesztésfájlt (Parancsok menü, alulról a harmadik pont -> ods, ... formátumokhoz a zip formátumnál lévő parancsokat átmásolni), és utána itt is működik a dolog. Igaz, hogy csak ods-sel és odt-vel próbáltam, mert nem találtam docx-et, de azzal is működnie kell.
Ettől még az OLE "bűvészkedést" nem lehet megúszni.
-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.
- A hozzászóláshoz be kell jelentkezni
Megintcsak balladai homalyban hagyott reszlet, de az emlitett "unzip" muvelet valojaban tenyleg az "mc-vel ranyomok entert"-et takarta. :)
---
Internet Memetikai Tanszék
- A hozzászóláshoz be kell jelentkezni