تخطَّ إلى المحتوى
getnextpdf.com

Enterprise الإصدار

التحليل الجنائي

يقرأ «التحليل الجنائي» في ⁨NextPDF Enterprise⁩ تاريخ التحديث التدريجي لملف ⁨PDF⁩ ويُنتج تقريرًا مُنظَّمًا للقراءة فقط بالمراجعات والأحداث المُصنَّفة والتغييرات لكل كائن. ويدعم مسارات التحليل الجنائي. وهو ليس ختمًا مقاومًا للعبث ولا يؤكّد أن مستندًا أصيل أو غير مُعدَّل.

تُشحَن هذه القدرة في ⁨NextPDF Enterprise⁩ (nextpdf/enterprise) وتُفعَّل بمظروف ترخيص من درجة ⁨Enterprise⁩. ولا يُحمِّل نشرٌ دون ذلك الاستحقاق أصناف القدرة. قارِن الإصدارات واحصل على ترخيص.

Terminal window
composer require nextpdf/enterprise:^3

يمكن تحديث ملف ⁨PDF⁩ بإلحاق التغييرات بنهاية الملف بدلًا من إعادة كتابته. ويضيف كل تحديث قسم مرجع تقاطعي جديدًا ومُذيّلًا جديدًا، وتُترَك البايتات الأصلية في مكانها — ⁨ISO 32000-2:2020 §7.5.6⁩. وعند تغيير كائن، يُلحِق التحديث نسخةً جديدة ويسجّل قسم المرجع التقاطعي للتحديث إزاحة بايت تُلغي الإزاحة الأقدم؛ ويَحلّ القارئ النسخة الأحدث — ⁨ISO 32000-2:2020 §7.5.6⁩. وقد تُعدِّل التحديثات اللاحقة بنية الملف الأولية — ⁨ISO 32000-2:2020 §7.5.4⁩. ويَسرُد قسم المرجع التقاطعي للتحديث الكائنات التي أُضيفت أو عُدِّلت أو حُذِفت في ذلك التحديث فقط — ⁨ISO 32000-2:2020 §7.5.5⁩.

يقرأ المُحلِّل هذه البنية الطبقية. ويحلّل جدول المرجع التقاطعي لكل مراجعة، ويشتقّ حدود بايتات المراجعة، ويقارن مدخلات كل مراجعة بالمراجعة الأقدم التالية لتصنيف كل كائن مُضافًا أو مُعدَّلًا أو محذوفًا. ثم يجمّع تغييرات الكائنات في أحداث أعلى مستوى: أُضيف توقيع، أو حُدِّث فهرس المستند، أو ظهر قاموس تشفير، أو أُضيفت مجموعة كائنات أو عُدِّلت أو أُزيلت. والمخرَج كائن تقرير واحد يحمل عدد المراجعات، والحجم الإجمالي، وقائمة ملخّص لكل مراجعة، وخطًّا زمنيًّا مُصنَّفًا للأحداث، وقائمة التغييرات لكل كائن.

المُحلِّل للقراءة فقط. ويكتشف وجود مراجعة توقيع من علامات بنيوية؛ وهو لا يتحقق من أي توقيع، ولا يعيد حساب أي ملخّص، ولا يفحص أي شهادة. والتحقق من التوقيع قدرة ⁨Core⁩ منفصلة. والتقرير المُنتَج وصف بنيوي لتاريخ التحديث كما حُلِّل؛ وهو ليس تقريرًا بأن مستندًا أصيل، أو أن تغييرًا كان غير مُصرَّح به، أو أن كل تعديل قد اكتُشِف. عامِل التقرير بوصفه كشف دلالة عبث كما اختُبِر مقابل رؤية المُحلِّل لسلسلة المراجعات، لا ضمانًا جنائيًّا ولا تصديقًا مقبولًا في المحكمة.

يتوقف المُحلِّل عند البنية عمدًا. فهو يبلّغ بما تحتويه سلسلة المراجعات، ولا يؤكّد أبدًا أن تغييرًا كان مُصرَّحًا به أو أن توقيعًا صالح. فالحضور البنيوي والصلاحية التشفيرية ادّعاءان مختلفان؛ ودمجهما يجعل مستدعيًا يخلط بين دلالة العبث والضمان. ولذلك تبقى صلاحية التوقيع في سطح توقيع ⁨Core⁩ الوحيد، الذي يتركّب معه «التحليل الجنائي» بدلًا من تكراره. والتقرير بيانات وصفية بنيوية قابلة للتسلسل بـ ⁨JSON⁩، فيستوعب ⁨SIEM⁩ تاريخ التحرير دون المساس بمحتوى المستند. خلفية التصميم: التحديثات التدريجية ولماذا تهمّ.

النوعالصنفالدورالاستقرارمنذ
ForensicAnalyzerclassيحلّل ملف ⁨PDF⁩ ويُرجِع تقريرًا جنائيًّا (الثابتة analyze)stable1.10.0
ForensicReportclassنتيجة التحليل؛ JsonSerializable للتصدير إلى ⁨SIEM⁩stable1.10.0
RevisionSummaryclassحقائق لكل مراجعة: عدد الكائنات، والحجم، وحدود البايتات، ورايات الحضورstable1.10.0
ForensicEventclassحدث مُصنَّف واحد مع قائمة كائنات متأثّرةstable1.10.0
ForensicEventTypeenumفئات الأحداث (أُضيف توقيع، حُدِّث الفهرس، أُضيفت كائنات، وغيرها)stable1.10.0
ObjectChangeclassسجل تغيير كائن واحد عبر مراجعتينstable1.10.0
ObjectChangeTypeenumمُضاف أو مُعدَّل أو محذوفstable1.10.0

يعرض ForensicReport الدوال hasIncrementalUpdates() وhasAnySignature() وgetEventsByType() وgetChangesForRevision() وjsonSerialize(). وراية hasSignature على ملخّص مراجعة إشارة حضور بنيوي، لا نتيجة صلاحية.

Analyze the revision history of a PDF
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Forensics\ForensicAnalyzer;
/**
* Produce a forensic report from PDF bytes.
*
* @param string $pdfData Raw PDF file bytes.
*
* @return array{revisions: int, incremental: bool, signedRevisionPresent: bool}
*/
function inspect(string $pdfData): array
{
$report = ForensicAnalyzer::analyze($pdfData);
return [
'revisions' => $report->revisionCount,
'incremental' => $report->hasIncrementalUpdates(),
'signedRevisionPresent' => $report->hasAnySignature(),
];
}

يبلّغ hasAnySignature() بأن مراجعة توقيع حاضرة في البنية. وهو لا يذكر أن التوقيع صالح.

Forensic analysis with SIEM export and fail-closed handling
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Forensics\ForensicAnalyzer;
use NextPDF\Enterprise\Forensics\ForensicEventType;
use Psr\Log\LoggerInterface;
final readonly class RevisionAuditor
{
public function __construct(private LoggerInterface $logger) {}
/**
* Analyze a document and emit a structural JSON record for the SIEM.
*
* @param string $pdfData The PDF bytes to inspect.
*
* @return string A JSON forensic report (no document content).
*/
public function audit(string $pdfData): string
{
try {
$report = ForensicAnalyzer::analyze($pdfData);
$this->logger->info('Forensic analysis complete', [
'revisions' => $report->revisionCount,
'sizeBytes' => $report->totalSizeBytes,
'signatureAddedEvents' => count(
$report->getEventsByType(ForensicEventType::SignatureAdded),
),
]);
return json_encode($report, JSON_THROW_ON_ERROR);
} catch (\Throwable $e) {
$this->logger->error('Forensic analysis failed', ['error' => $e->getMessage()]);
throw $e;
}
}
}

يحمل سجل التسجيل أعدادًا وأحجامًا فقط. وهو لا يحمل نص مستند. وتعيد كتلة الالتقاط رفع الاستثناء؛ وهي لا تبتلع إخفاق تحليل.

  • ليس لمستند ذي مراجعة واحدة تاريخ تدريجي. وقائمة التغييرات فارغة؛ وهذا ليس دليلًا على الأصالة.
  • يعني حدث SignatureAdded أن مراجعة توقيع حاضرة بنيويًّا. وهو ليس نتيجة صلاحية توقيع. تحقّق من التوقيع بسطح توقيع ⁨Core⁩.
  • إعادة استخدام الكائنات أمر معتاد: يحتفظ كائن مُحدَّث برقم كائنه وتُلحَق نسخة جديدة. ويبلّغ المُحلِّل بذلك بوصفه Modified، لا إزالةً وإعادة إنشاء.
  • تصنيف Deleted انتقال مدخل حرّ في سلسلة المرجع التقاطعي. وقد يَحلّ قارئ نسخةً أقدم من ذلك الكائن؛ والحذف على مستوى البنية ليس ضمانًا بعدم القابليّة للاسترداد.
  • يبلّغ المُحلِّل بما رصده المُحلِّل. وقد يُنتج مستند مُصمَّم لإرباك مُحلِّل تقريرًا لا يطابق رؤية أداة أخرى. والتقرير ليس ادّعاءً بأن كل تعديل قد اكتُشِف.
  • المُدخَل محدود. ويفشل مستند مفرط الحجم أو مفرط عدد المراجعات بإحكام باستثناء تحليل مُمَيَّع النوع بدلًا من استهلاك ذاكرة غير محدودة.

تتناسب كلفة التحليل مع عدد المراجعات وعدد الكائنات، لا مع تعقيد الصفحة المُصيَّرة. وتغطّي ميزانية الجدار البالغة 1500 ms مستندًا تجاريًّا متعدّد المراجعات نموذجيًّا. وملف إعادة الإنتاج هو structural: فالتقرير حتمي لمُدخَل معيَّن، لكن إزاحات البايتات المطلقة تعكس الملف المُدخَل بالضبط وليست قابلة للنقل عبر النسخ المُعاد حفظها.

المُحلِّل للقراءة فقط ولا يكتب أبدًا إلى المُدخَل. وهو سطح تحليلي، لا تحويلي. ويكتشف وجود علامات توقيع وتشفير لكنه لا يؤدّي أي عملية تشفير، فلا يقدّم أي ادّعاء ⁨FIPS⁩. ويصف التقرير تاريخ التحديث المُحلَّل؛ وهو ليس تأكيد أصالة ويجب ألّا يُقدَّم بوصفه مقاومًا للعبث أو مضمونًا جنائيًّا أو مقبولًا في المحكمة. ويستخلص المُشغِّل الاستنتاجات؛ وتبلّغ المكتبة بالبنية.

إقامة البيانات وتخفيفات البيانات الشخصية

قسم بعنوان «إقامة البيانات وتخفيفات البيانات الشخصية»

يعمل التحليل داخل العملية على المضيف الذي يحمل ملف ⁨PDF⁩. ولا يغادر أي محتوى مستند المضيف. ويحمل التقرير أرقام الكائنات، وفهارس المراجعات، والأحجام، وحدود البايتات، وفئات الأحداث — بيانات وصفية بنيوية، لا نص مستند ولا بيانات شخصية مُكتشَفة. وما إذا كان ملف ⁨PDF⁩ المُدخَل أو التقرير نفسه يحتوي بيانات شخصية، وأين يُخزَّن كلٌّ منهما، مسؤولية نشر خارج حدّ المكتبة.

قياسات آمنة وتنقية السجلات

قسم بعنوان «قياسات آمنة وتنقية السجلات»

ترفع المكتبة استثناءات مُمَيَّعة النوع برسائل بنيوية ولا تضع بايتات مستند في نص الاستثناء. ويجب على نشر يسجّل حول التحليل أن يسجّل أعداد التقرير وفئاته — كما يُبيِّن نموذج الإنتاج — وألّا يسجّل حِمولة ⁨PDF⁩ الخام في السجلات أو في خلفية ⁨APM⁩. وتقرير ⁨JSON⁩ هو الأثر الآمن لإعادة توجيهه إلى ⁨SIEM⁩.

لا تجري أي عملية تشفير في هذه الوحدة، فلا يوجد سلوك خاصّ بوضع ⁨FIPS⁩. والتحقق من التوقيع، وهو تشفيري، قدرة ⁨Core⁩ منفصلة ومُوثَّقة هناك.

الادّعاءالمعيارالبند
تُلحِق التحديثات اللاحقة عناصر إضافية بنهاية الملف؛ وتُعدِّل التحديثات اللاحقة البنية الأصلية.ISO 32000-2:2020§7.5.6
يُلحَق كائن مُحدَّث بوصفه نسخةً جديدة ويُلغي مدخل المرجع التقاطعي للتحديث إزاحة البايت الأقدم؛ ويَحلّ القارئ النسخة الأحدث.ISO 32000-2:2020§7.5.6
قد تُعدِّل التحديثات اللاحقة بنية الملف الأولية.ISO 32000-2:2020§7.5.4
يحتوي قسم المرجع التقاطعي للتحديث مدخلات للكائنات المُضافة أو المُعدَّلة أو المحذوفة فقط.ISO 32000-2:2020§7.5.5
يسجّل قاموس التوقيع ما هو موقَّع.ISO 32000-2:2020§12.8.1
يحدّد ⁨ByteRange⁩ مدى البايتات الذي يغطّيه التوقيع (التحقق من التوقيع قدرة ⁨Core⁩ منفصلة).ISO 32000-2:2020§12.8.1
يحتفظ مخزن أمان المستند بمادة التحقق طويل الأمد في مراجعة لاحقة.ISO 32000-2:2020§12.8.4

كل البنود مُلخَّصة. ولا يُعيد ⁨NextPDF⁩ إنتاج نص معياري. راجِع المعيار المنشور للصياغة الموثوقة. ولا يدّعي ⁨NextPDF⁩ أي اعتماد جنائي؛ ويصف التقرير بنية التحديث المُحلَّلة، لا تقريرًا مُعتمَدًا بسلامة المستند.

  • المُحلِّل للقراءة فقط: إذ لا يكتب أبدًا إلى المستند المُدخَل ولا يؤدّي أي عملية تشفير.
  • يحلّل جدول المرجع التقاطعي لكل مراجعة، ويشتقّ حدود بايتات المراجعة، ويصنّف كل كائن مُضافًا أو مُعدَّلًا أو محذوفًا، ثم يجمّع التغييرات في خطّ زمني مُصنَّف للأحداث.
  • يعني حدث SignatureAdded أن مراجعة توقيع حاضرة بنيويًّا؛ وهو ليس نتيجة صلاحية توقيع — والتحقق قدرة ⁨Core⁩ منفصلة.
  • لمستند ذي مراجعة واحدة قائمة تغييرات فارغة (لا دليل على الأصالة)؛ وتصنيف Deleted انتقال مدخل حرّ، لا ضمان بعدم القابليّة للاسترداد.
  • المُدخَل محدود: ويفشل مستند مفرط الحجم أو مفرط عدد المراجعات بإحكام باستثناء تحليل مُمَيَّع النوع. والتقرير كشف دلالة عبث كما اختُبِر، لا ضمان جنائي ولا تصديق مقبول في المحكمة.

توثّق هذه الصفحة السلوك القابل للرصد خارجيًّا وسطح واجهة البرمجة العام المدعوم فقط. ومسارات النطاقات الداخلية، والأصناف المساعدة، وجداول الآليات، وأسماء ملفات أدلّة التشغيل، وبادئات التذاكر خارج النطاق.

‏⁨NextPDF Core⁩ (⁨Apache-2.0⁩) لا يملك مُحلِّلًا جنائيًّا لتاريخ المراجعات — لا شيء؛ ولهذه القدرة لا مكافئ في درجة ⁨Core⁩. ويوفّر ⁨Core⁩ سطح التحقق الموثوق من التوقيع، الذي يتركّب معه المُحلِّل لكنه لا يحلّ محلّه.

‏⁨NextPDF Pro⁩ لا يملك مُحلِّلًا جنائيًّا لتاريخ المراجعات — لا شيء؛ ولهذه القدرة لا مكافئ في درجة ⁨Pro⁩. ويُشحَن الإبلاغ بالمراجعات والتغييرات لكل كائن للقراءة فقط وتقرير ⁨SIEM⁩ القابل للتسلسل بـ ⁨JSON⁩ في حزمة nextpdf/enterprise فقط.

يُوصَف مُحلِّل المراجعات، وتصنيف التغييرات، والخطّ الزمني للأحداث على مستوى السلوك. وبواطن المُحلِّل وأي تفصيل تصنيف داخلي خارج نطاق السطح العام. وصلاحية التوقيع ليست في النطاق هنا عمدًا — فهي مسؤولية سطح توقيع ⁨Core⁩.

يعمل التحليل داخل العملية على المضيف الذي يحمل ملف ⁨PDF⁩؛ ولا يغادر أي محتوى مستند المضيف. وما إذا كان ملف ⁨PDF⁩ المُدخَل أو التقرير يحتوي بيانات شخصية، وأين يُخزَّن كلٌّ منهما، مسؤولية نشر خارج حدّ المكتبة. ويستخلص المُشغِّل الاستنتاجات من التقرير؛ وتبلّغ المكتبة بالبنية ولا تؤكّد أصالة المستند.

لا تنطبق أي قيود ضوابط تصدير على سطح التحليل الجنائي. ويجب ألّا يُقدَّم التقرير بوصفه مقاومًا للعبث أو مضمونًا جنائيًّا أو مقبولًا في المحكمة. وهذه الوثيقة ليست رأيًا قانونيًّا؛ استشِر مستشاريك في الامتثال والشؤون القانونية.