Domanda:
Strumento GUI open source per la scomposizione di un PDF
Lizz
2013-04-03 08:09:07 UTC
view on stackexchange narkive permalink

Stavo cercando uno strumento GUI open source per estrarre PDF in modo automatico su sistemi Windows. Ho utilizzato gli strumenti di Didier Steven con grande interesse per un po ', ma non riesco a capire come utilizzare i suoi strumenti di decomposizione PDF / analisi, anche dopo aver visto alcuni dei suoi video . Sembra che richiedano una comprensione significativa della costruzione PDF sottostante e forse molto di più.

Per i file SWF, lo strumento SWFScan è il tipo che sto cercando: si carica il file in questione nello strumento. Da lì, puoi esplorare i collegamenti, gli script e le immagini. Analizza anche automaticamente il codice e mostra quali parti possono presentare problemi di sicurezza e qual è il problema per ciascuna di esse, quindi fornisce un riferimento a una pagina Web con ulteriori informazioni.

Qualcuno conosce una buona GUI open source per Windows che può caricare un PDF e non eseguirlo ma estrarre tutti gli script, il codice compilato, il testo, i collegamenti, le immagini, ecc.? Idealmente, mostrerebbe la relazione di ciascuno, come quando fai clic su una determinata immagine, ti direbbe quali script vengono eseguiti, a quale URL vanno e ti consente di vedere l'immagine da sola.

I PDF sono così comuni, accanto a SWF, che questo tipo di strumento sembra che sarebbe già comune. Potrei averlo trascurato / loro.

Gli strumenti di Didier Stevens sono ampiamente utilizzati, ma hai ragione, hai bisogno di una comprensione del formato del file PDF se vuoi capirlo. Ho un (un po 'lungo) [post sul blog] (http://www.amccormack.net/anatomy-of-a-pdf-document/) che esamina un file PDF riga per riga per spiegare le basi della struttura, ma nessuno di questi utilizza strumenti GUI. Didier ha anche un [modello] (http://blog.didierstevens.com/programs/pdf-tools/) per [010 Editor] (http://www.sweetscape.com/010editor/). 010 ha una solida reputazione e puoi provarlo gratuitamente per 30 giorni
@amccormack Ottimo commento, modifica dei tag e ottimo articolo: lo sto leggendo ora. È interessante notare che mi sta convincendo che lo strumento che sto cercando * dovrebbe * esistere, anche se solo commercialmente, cosa che pagherei se fosse buono. Pensavo che gli strumenti migliori di solito fossero basati su testo / riga di comando, ma casi come questo mi fanno capire che un'immagine a volte vale più di 1.000 parole. Anche con una complessità maggiore rispetto ai file SWF, esiste ancora una struttura che potrebbe trarre vantaggio da tale strumento.
Non mantenuto dal 2006, ma ancora uno strumento interessante: http://multivalent.sourceforge.net/
Inoltre, https://github.com/qpdf/qpdf può aiutare, può convertire il pdf in un formato più leggibile dall'uomo, a livello di origine.
Non riesco più ad accedere al post del blog di @amccormack's sotto il link nel suo commento; Lo trovo qui, con un URL leggermente modificato: https://amccormack.net/2012-01-22-anatomy-of-a-pdf-document.html Grazie!
Cinque risposte:
#1
+30
Mick
2013-04-03 23:14:38 UTC
view on stackexchange narkive permalink

Il framework Origami di Sogeti viene fornito con una GUI basata su GTK.

Che cos'è?

origami è un framework Ruby progettato per analizzare, analizzare e falsificare documenti PDF. Questa NON è una libreria di rendering PDF. Mira a fornire uno strumento di scripting per generare e analizzare file PDF dannosi. Inoltre, può essere utilizzato per creare PDF personalizzati al volo o per iniettare codice (malvagio) in documenti già esistenti.

  • Crea documenti PDF da zero.
  • Analizza i documenti esistenti, modificali e ricompilali.
  • Esplora i documenti a livello di oggetto, approfondendo la struttura del documento, decomprimendo flussi di oggetti PDF e desoffuscando nomi e stringhe.
  • Operazioni di alto livello, come crittografia / decrittografia, firma, file allegati ...
  • Un'interfaccia GTK per navigare rapidamente nel contenuto del documento.

enter image description here

Ecco come l'ho installato sul mio sistema Windows 7:

  • Assicurati di avere Ruby v1.9.3 installato per Windows http://rubyinstaller.org/downloads/
  • NOTA: potrebbe funzionare su versioni di Ruby più recenti / precedenti, ma ho provato solo su v1.9.3 su Windows 7. (Funziona con ruby ​​v1.8.7 sul mio sistema Linux)
  • Successivamente, installa origami aprendo un ADMIN prompt di cmd e in esecuzione:

    gem install origami

  • Successivamente, dovrai installare ruby -gtk2 . Dallo stesso prompt ADMIN cmd di prima, esegui:

    gem install gtk2

  • Successivamente installa pdfwalker, poiché è stato spostato in una gemma separata:

    gem install pdfwalker

Infine, esegui semplicemente pdfwalker da un prompt di cmd.

Se questo non funziona per te, ti suggerisco di provare i passaggi precedenti da Cygwin, dove puoi essenzialmente seguire le istruzioni per l'installazione su * nix.

Se lo stai installando su Ubuntu / Debian

Installa ruby ​​con il seguente comando:

apt install ruby-full

Successivamente installa origami come elencato sopra:

gem install origami

Se vuoi usare la GUI lo farai probabilmente è necessario installare libgtk2.0-dev e ottenere il rake gem installato per poter installare gtk2:

  apt install libgtk2.0-devgem install rakegem install gtk2  

Dato che pdfwalker necessita anche di libcanberra, è una buona idea installarlo ora:

apt install libcanberra-gtk-module

Successivamente installa pdfwalker, poiché è stato spostato in una gemma separata:

gem install pdfwalker

E dovrebbe essere eseguito dalla riga di comando come descritto sopra.

Sarebbe fantastico, ma non riesco a installare / eseguire la GUI "pdfwalker". Guardando la pagina web, non vedo il supporto di Windows. Puoi indicarmi come posso far funzionare la GUI di questa app su Windows?
Ho aggiornato la mia risposta con i passaggi per l'installazione su Windows. Adesso è in esecuzione sul mio sistema Windows 7.
Aggiornamento per Ruby 2.2., Gtk2-2.2.5: sono necessari molti pacchetti Cygwin per farlo funzionare. Oltre a gcc e make, l'elenco delle librerie non è ovvio e implica l'esecuzione di `gem install origami` e [http://superuser.com/questions/923190/gem-installation-failling-with-the-compiler-failed-to- generate-an-executable-fi] (leggendo mkmf.log) per vedere su quali librerie fallisce. Richiede anche l'installazione di un server X, avviarlo, `export DISPLAY =: 0.0` e anche io ottengo:` /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:54:in `require ': superclass mismatch for class Data (TypeError) `
#2
+8
Denis Laskov
2013-04-03 12:23:08 UTC
view on stackexchange narkive permalink

Per estrarre principalmente contenuti dannosi, come script ed exploit, puoi cercare strumenti online:

Wepawet - toolkit online per l'analisi di file js \ pdf \ flash.

Jsunpack - toolkit online per l'analisi di file, che possono contenere codice JavaScript compresso \ encoded, come PDF \ HTML \ JS. funziona anche con file .pcap

Inoltre - strumento offline per Linux (beh, non GUI, ma un buon strumento) per estrarre codici shell e campi nascosti:

Pdfextract - Una libreria e uno strumento della riga di comando offline in grado di estrarre varie aree di testo da un PDF.

#3
+6
broadway
2013-04-03 12:21:09 UTC
view on stackexchange narkive permalink

Forse PdfStreamDumper è abbastanza vicino a quello che vuoi, ma avrai comunque bisogno di una certa conoscenza del PDF per usarlo in modo efficace.

Aggiungere una breve descrizione del collegamento e / o dell'argomento pertinente. Le risposte di solo collegamento non sono considerate risposte.
#4
+5
jduck
2013-04-04 00:37:08 UTC
view on stackexchange narkive permalink

Consiglio vivamente Cerbero Profiler!

Il Cerbero Profiler è uno strumento progettato principalmente per il malware e l'analisi forense. Supporta un numero enorme di formati di file (elencati di seguito) su cui esegue l'analisi e consente all'utente di ispezionare il layout interno. Il Profiler viene spesso utilizzato per identificare le minacce 0-day e le informazioni personali all'interno dei file. Tuttavia, data la portata del progetto, ha molti altri usi e ti invitiamo a visitare il nostro blog per vedere il Profiler in azione.

Potresti anche voler dare un'occhiata il mio strumento di dissezione dei file open source. Ho scritto un parser PDF per questo, ma non l'ho ancora eseguito. Mi dispiace, so che non aiuta molto. Alla fine però lo spingerò verso l'alto.

#5
+2
tibar
2017-11-16 20:36:00 UTC
view on stackexchange narkive permalink

Anche se non esiste una GUI, credo che valga la pena menzionare gli strumenti da riga di comando che aiuteranno con la parte in modo automatico della tua domanda. Ho utilizzato personalmente lo strumento della riga di comando associato mupdf : mutool.

Ad esempio lavorando sul seguente File PDF, ecco cosa faresti per estrarre il flusso JPX incapsulato:

  $ mutool info Bug691816.pdf Bug691816.pdf: PDF-1.5Info object (49 0 R ): << / ModDate (D: 20101122114310-08'00 ') / CreationDate (D: 20101122114251-08'00') / Title (ID1561x.indd) / Creator (Adobe InDesign 1.5.2) / Producer (Adobe PDF Library 4.16 ) >>Pagine: 1Retrieving info from pages 1-1 ... Mediaboxes (1): 1 (54 0 R): [0 0 612 792] Images (1): 1 (54 0 R): [JPX] 300x161 8bpc Idx ( 58 0 R)  

Quindi devi semplicemente:

  $ mutool show -be -o obj58.jp2 Bug691816.pdf 58  

Puoi verificare:

  $ file obj58.jp2obj58.jp2: JPEG 2000 Part 1 (JP2)  

Vedi documentazione:


Per PDF / A-3: EmbeddedFile (come in questo file) puoi anche eseguire:

  $ mutool portfolio ZUGFeRD_1p0_BASIC_Einfach.pdf x 0 ZUGFeRD- invoice.xml $ head ZUGFeRD-invoice.xml<? xml version = "1.0" encoding = "UTF-8"? ><! - Nutzungsrechte ZUGFeRD Datenformat Version 1.0, 25.6.2014Beischeen der Forums eV ("FeRD") ist ua die Schaffung und Spezifizierung eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht diskriminierender, standardisierter Technologien ("ZUGFeRD Datenformat")  

Vedi documentazione:

OP richiede lo strumento GUI
In effetti mi è sfuggito, questo è in conflitto con "in modo automatico" imho
nella maggior parte dei casi sì, ma non è necessario


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...