นอกเหนือจากเครื่องมือที่ใช้ GUI ที่กล่าวถึงในคำตอบอื่น ๆ แล้วยังมีเครื่องมือบรรทัดคำสั่งบางอย่างที่สามารถแปลงซอร์สโค้ด PDF ดั้งเดิมให้เป็นการแสดงที่แตกต่างกันซึ่งช่วยให้คุณตรวจสอบ (ไฟล์ที่แก้ไขในขณะนี้) ด้วยโปรแกรมแก้ไขข้อความ เครื่องมือทั้งหมดด้านล่างทำงานบน Linux, Mac OS X, ระบบ Unix อื่น ๆ หรือ Windows
qpdf
(ของโปรด)
ใช้qpdfเพื่อคลายการบีบอัดสตรีมของวัตถุ (ส่วนใหญ่) และแยกObjStm
วัตถุออกเป็นวัตถุทางอ้อม:
qpdf --qdf --object-streams=disable orig.pdf uncompressed-qpdf.pdf
qpdf
อธิบายตัวเองเป็นเครื่องมือที่ไม่ได้"โครงสร้างการเปลี่ยนแปลงเนื้อหาที่รักษาในไฟล์ PDF"
จากนั้นเปิด + ตรวจสอบuncompressed-qpdf.pdf
ไฟล์ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ ไบต์ที่บีบอัดก่อนหน้านี้ส่วนใหญ่ (และด้วยเหตุนี้ไบนารี) จะเป็นข้อความธรรมดา
mutool
นอกจากนี้ยังมีmutool
เครื่องมือบรรทัดคำสั่งที่มาพร้อมกับโปรแกรมดูไฟล์ PDF MuPDF (ซึ่งเป็นผลิตภัณฑ์ในเครือของ Ghostscript ที่ผลิตโดย บริษัท เดียวกันArtifex ) คำสั่งต่อไปนี้ยังคลายการบีบอัดสตรีมและทำให้ง่ายต่อการตรวจสอบผ่านโปรแกรมแก้ไขข้อความ:
mutool clean -d orig.pdf uncompressed-mutool.pdf
podofouncompress
PoDoFoเป็นไลบรารี FreeSoftware / OpenSource เพื่อทำงานกับรูปแบบ PDF และมีเครื่องมือบรรทัดคำสั่งบางอย่างรวมถึงpodofouncompress
ไฟล์. ใช้วิธีนี้เพื่อคลายการบีบอัดสตรีม PDF:
podofouncompress orig.pdf uncompressed-podofo.pdf
peepdf.py
PeePDFเป็นเครื่องมือที่ใช้ Python ซึ่งช่วยให้คุณสำรวจไฟล์ PDF จุดประสงค์เดิมคือเพื่อการวิจัยและการวิเคราะห์มัลแวร์ที่ใช้ PDF แต่ฉันพบว่ามันมีประโยชน์ในการตรวจสอบโครงสร้างของไฟล์ PDF ที่ไม่เป็นอันตราย
สามารถใช้แบบโต้ตอบเพื่อ "เรียกดู" วัตถุและสตรีมที่อยู่ใน PDF
ฉันจะไม่ให้ตัวอย่างการใช้งานที่นี่ แต่เป็นเพียงลิงก์ไปยังเอกสารประกอบเท่านั้น:
pdfid.py
และ pdf-parser.py
pdfid.py
และpdf-parser.py
เป็นเครื่องมือ PDFสองชุดโดย Didier Stevens ที่เขียนด้วยภาษา Python
พื้นหลังของพวกเขายังช่วยในการสำรวจPDF ที่เป็นอันตรายแต่ฉันก็พบว่ามีประโยชน์ในการวิเคราะห์โครงสร้างและเนื้อหาของไฟล์ PDF ที่ไม่เป็นพิษเป็นภัย
นี่คือตัวอย่างวิธีที่ฉันจะแยกสตรีมของวัตถุ PDF ที่ไม่มีการบีบอัด 5 ลงในไฟล์ * .dump:
pdf-parser.py -o 5 -f -d obj5.dump my.pdf
หมายเหตุสุดท้าย
โปรดทราบว่าส่วนไบนารีบางส่วนใน PDF นั้นไม่จำเป็นต้องบีบอัด (หรือถอดรหัสเป็นรหัส ASCII ที่มนุษย์อ่านได้) เนื่องจากถูกฝังและใช้ในรูปแบบดั้งเดิมภายใน PDF ส่วน PDF ดังกล่าว ได้แก่ ภาพ JPEG แบบอักษรหรือโปรไฟล์สี ICC
หากคุณเปรียบเทียบเครื่องมือข้างต้นกับตัวอย่างบรรทัดคำสั่งที่ระบุคุณจะพบว่าเครื่องมือเหล่านี้ไม่ได้ให้ผลลัพธ์ที่เหมือนกันทั้งหมด ความพยายามในการเปรียบเทียบความแตกต่างในตัวมันเองสามารถช่วยให้คุณเข้าใจลักษณะของไวยากรณ์ PDF และรูปแบบไฟล์ได้ดีขึ้น