একটি বৈধ পিডিএফ "জাভা সিরিয়ালাইজেশন ডেটা" হতে পারে?


1

আমার একটি পিডিএফ ফাইল রয়েছে যা আমার পাঠক (জাথুরা) খুলবেন না। আমার অন্য পাঠক আছে (এমপিডিএফ) যা এটি খুলবে। আমি বিশ্বাস করি যে জাথুরা ফাইলের যাদু মান সনাক্ত করার উপর নির্ভর করে (প্রথম কয়েকটি বাইট) কারণ এটি পিডিএফ ছাড়াও অন্যান্য ফর্ম্যাটগুলি খুলতে পারে।

পরিদর্শন করার সময়, আমি লক্ষ্য করেছি যে এটি হিসাবে চিহ্নিত হয়েছে Java serialisation data, version 5

$ file document.pdf
document.pdf: Java serialization data, version 5

প্রথম কয়েকটি বাইট পরিদর্শন করা:

00000000: aced 0005 7572 0002 5b42 acf3 17f8 0608 ....ur..[B......
00000010: 54e0 0200 0078 7000 0389 9525 5044 462d T....xp....%PDF-

সাধারণত একটি পিডিএফ শুরু হবে %PDFবাইট 0 দিয়ে।

আমি যদি প্রথম 27 বাইটগুলি সরিয়ে ফেলি তবে আমি ফাইলটি খুলতে পারি:

$ dd if=~/Downloads/file.pdf skip=27 bs=1 of=/tmp/file.pdf

আরও পরিদর্শন দেখায় যে ফাইলটি অ্যাপাচি এফওপি সংস্করণ 1.1 দ্বারা উত্পাদিত হয়েছিল। গুগলের বেশ কিছুটা সত্ত্বেও আমি পিডিএফের জন্য এই বিন্যাসের কোনও সন্ধান খুঁজে পাচ্ছি না।

এটি কি পিডিএফের জন্য বৈধ বিন্যাস?


আপডেটটি শিরোনামটিতে কিছুটা vedুকে পড়ে এটি জাভা সিরিয়ালযুক্ত অ্যারে বলে মনে হয় যেখানে 'অ্যারে' পিডিএফ ফাইলের ডেটা রয়েছে। আমি দিকে তাকিয়ে বৈশিষ্ট ধারাবাহিকতাতে প্রোটোকল এবং বিশেষ করে, ব্যাকরণ বিবরণ যা থেকে আমি 27 বাইট হেডার যেমন ডিকোড পারে:

  • AC ED= STREAM_MAGICফাইলের সামগ্রীটি সিরিয়ালাইজেশন প্রোটোকল হিসাবে চিহ্নিত করে।

  • 00 05= STREAM_VERSIONসিরিয়ালকরণ সংস্করণ।

  • 75 = TC_ARRAY
  • 72 = TC_CLASSDESC
  • 00 02 = শ্রেণীর নামের দৈর্ঘ্য।
  • 5b 42 = শ্রেণীর নাম ur
  • AC F3 17 F8 06 08 54 E0= SerialVersionUID, শ্রেণীর ক্রমিক সংস্করণ সনাক্তকারী।
  • 02= পতাকা SC_SERIALIZABLE- অবজেক্ট সিরিয়ালাইজেশন সমর্থন করে।
  • 00 00 = এই শ্রেণিতে ক্ষেত্রের সংখ্যা (শূন্য!)
  • 78= TC_ENDBLOCKDATA
  • 70= TC_NULL(অবজেক্টের কোনও প্যারেন্ট ক্লাস নেই)।
  • 00 03 89 95 = "অ্যারে" এর দৈর্ঘ্য = 231829 = বাইটগুলিতে ডেটার আকার

উত্তোলিত পিডিএফ প্রকৃতপক্ষে 231829 বাইট দীর্ঘ

$ dd if=document.pdf skip=27 bs=1 | wc -c
231829 bytes 

এটি সূচিত করবে যে ফাইলটি দুর্নীতিগ্রস্থ নয় এবং প্রকৃতপক্ষে একটি জাভা সিরিয়ালযুক্ত অ্যারে যা পিডিএফ ডকুমেন্ট ধারণ করে। তবে এটিকে কি একটি বৈধ পিডিএফ হিসাবে বিবেচনা করা হবে?

উত্তর:


1

রেফারেন্স এই বলে জানিয়েছে:

3.4.1 File Header

The first line of a PDF file is a header identifying the version of the PDF
specification to which the file conforms. For a file conforming to PDF 1.7, 
the header should be

    %PDF−1.7

যে লাইন আমার ব্যাখ্যা যে কঠোরভাবে বলতে, আপনি যে ফাইলটি আছে হয় না কোন বৈধ PDF ফাইল। প্রথম লাইনটি সঠিক মান দিয়ে শেষ হয় তবে এর আগে এটি অতিরিক্ত "আবর্জনা" ধারণ করে।

সেই মৌমাছিটি বলেছিল, পিডিএফ রিডারটি কীভাবে যাদুটি সন্ধান করতে হবে তা বাস্তবায়নের উপর %PDF-x.xনির্ভর করে এবং আমার ধারণাটি হ'ল যে 0D 0Aআপনারা পিডিএফ-মার্কারের পরে ঠিকঠাক হয়ে যাওয়ার আগে সবচেয়ে বেশি পড়েন ততক্ষণ পর্যন্ত তারা পড়েন না ।

সিরিয়ালাইজেশন ডেটাতে যদি 0D 0Aমানটি থাকে তবে আমার অনুমান যে এমপিডিএফ এটি পড়তে ব্যর্থ হবে।


আমি একই উত্তর লিখছিলাম, আপনি কিন্তু কিছুটা দ্রুত ছিল। আমি সম্পূর্ণভাবে রাজী. কোনও উপযুক্ত পিডিএফ রিডারকে এ জাতীয় ফাইলটি বৈধ হিসাবে গ্রহণ করা উচিত নয়। অতিরিক্ত তথ্য নির্বিশেষে কেউ কেউ করেন নিছক ভাগ্য।
টনি

এটি কেবলমাত্র একা 0Aযা শিরোলেখ অনুসরণ করে (আসলে অনুমানের পরামর্শ অনুসারে একটি মন্তব্য-রেখা 0a 25aa abac ad0a ) - তবে আপনার বক্তব্যটি বোঝায় যে যখন আরও বেশি স্বাচ্ছন্দ্যবোধক পাঠক কেন মোকাবেলা করতে পারেন যখন এই অনুশীলনের সাথে চলেন তারা যখন করেন না।
স্টারফাই

দেখে মনে হচ্ছে যে কোনও সমন্বয় 0A, 0Dবা 0D 0Aকাজ করে .. আমার ডেস্কটপে আমার দুটি পিডিএফ ফাইল রয়েছে 0Dএবং একটিতে রয়েছে এবং অন্যটির রয়েছে 0D 0A। :)
ম্যাগনাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.