Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
FARO — FARO - كاشف حساسية المستندات | Kitploit
أدوات/GitHubGitHub/gradiant/faro
التحليل الثابتتحليل الثغرات الأمنيةتدقيق التكوينتسريب البياناتجمع المعلوماتكشف الأسرارتعلم الآلةالتعلم والتعليم
GitHubgradiant/faro

FARO

FARO - كاشف حساسية المستندات

عرض المستودع
108منذ 3 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

FARO (Document Sensitivity Detector)

FARO LOGO

جدول المحتويات

  • ما هذا؟
  • ماذا يوجد هنا؟
  • تشغيل FARO باستخدام Docker
  • تشغيل FARO على الجهاز المضيف
    • المتطلبات الأساسية
    • البيئة الافتراضية
    • التبعيات
    • نماذج NER
    • FARO Spider
    • كشف ملف واحد
  • التفاصيل التقنية
    • كاشف الكيانات في FARO
    • الإعداد
    • صيغ ملفات الإدخال المدعومة
    • التقنيات
    • الاختبار
    • تثبيت Git-LFS
    • وسائط إضافية لكشف FARO
    • المشاكل المعروفة
  • المساهمون

ما هذا؟

FARO هي أداة لكشف المعلومات الحساسة في المستندات داخل المؤسسة. وهي موجّهة للاستخدام من قبل الشركات الصغيرة والأفراد الذين يرغبون في تتبع مستنداتهم الحساسة داخل مؤسساتهم ولكنهم لا يستطيعون قضاء الكثير من الوقت والمال في إعداد أدوات حماية بيانات معقدة.

يستخرج FARO مؤشرات الحساسية من المستندات (مثل معرّفات المستندات، الكميات النقدية، رسائل البريد الإلكتروني الشخصية) ويمنح المستند درجة حساسية (من منخفضة إلى عالية) باستخدام تواتر ونوع المؤشرات في المستند.

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

هذه الأداة مطوّرة من قبل TEGRA R&D Cybersecurity Center.

ماذا يوجد هنا؟

يحتوي المشروع على المجلدات التالية:

  • faro/: هذه هي وحدة FARO مع الوظيفة الرئيسية.
  • config/: ملفات إعداد yaml توضع هنا. يوجد ملف yaml واحد لكل لغة (بالإضافة إلى ملف nolanguage.yaml لتوفير وظيفة أساسية للغات غير المكتشفة) وملف yaml واحد بإعدادات مشتركة لجميع اللغات config/commons.yaml.
  • models/: هذا هو المجلد المخصص لوضع نماذج FARO.
  • faro_detection.py: مشغّل FARO للتشغيل المستقل على ملف واحد.
  • faro_spider.sh: برنامج نصي للمعالجة بالجملة.
  • docker_build_faro.sh: برنامج نصي لبناء صورة FARO على Docker في Linux و Mac OS.
  • docker_build_faro.bat: برنامج نصي لبناء صورة FARO على Docker في Windows.
  • docker_run_faro.sh: برنامج نصي لتشغيل حاوية FARO على Linux و Mac OS.
  • docker_run_faro.bat: برنامج نصي لتشغيل حاوية FARO على Windows.
  • CHANGELOG: سجل تغييرات FARO.

تشغيل FARO باستخدام Docker

يمكن تشغيل FARO كحاوية مستقلة باستخدام Docker. يمكنك بناء الصورة بنفسك أو الحصول عليها من مستودع Docker Hub.

الحصول على صورة FARO من Docker Hub

بشرط أن يكون Docker مثبتًا وقيد التشغيل على نظامك، نفّذ الأمر التالي للحصول على أحدث صورة FARO من Docker Hub.

root@kitploit:~
docker pull gradiant/faro

لتشغيل صورة docker استخدم البرامج النصية docker_run_faro.sh (Linux/Mac OS) أو docker_run_faro.bat (Windows). يمكنك العثور عليها في جذر المشروع أو في الإصدار الأحدث.

بناء صورة FARO

بشرط أن يكون Docker مثبتًا وقيد التشغيل على نظامك، قم بما يلي لبناء صورة FARO.

Linux و Mac OS

root@kitploit:~
./docker_build_faro.sh

Windows

root@kitploit:~
docker_build_faro.bat

تشغيل حاوية FARO

لتشغيل حاوية FARO، يتم توفير بعض البرامج النصية في جذر المشروع. يمكنك نسخ واستخدام هذه البرامج النصية من أي مكان آخر للراحة. سيتم إنشاء مجلد "output" داخل دليلك الحالي.

Linux و Mac OS

root@kitploit:~
./docker_run_faro.sh <your folder with files>

Windows

root@kitploit:~
docker_run_faro.bat <your folder with files>

لقد أضفنا دعم OCR إلى tika من خلال تكامله مع tesseract. يمكن تخصيص بعض إعدادات عملية OCR من خلال استخدام ملف env يجب توفير مساره كوسيط ثانٍ للبرنامج النصي. لقد قدمنا مثالًا مشروحًا ليكون قالبًا هنا

root@kitploit:~
./docker_run_faro.sh <your folder with files> <path to env file>

على سبيل المثال:

root@kitploit:~
./docker_run_faro.sh ../data docker_faro_env_example.list

النتائج

ينشئ FARO مجلد "output" داخل المجلد الحالي ويخزّن نتائج التنفيذ في ملفين:

  • output/scan.$CURRENT_TIME.csv: هو ملف csv يحتوي على الدرجة المعطاة للمستند وتواتر المؤشرات في كل ملف.
root@kitploit:~
filepath,score,person_position_organization,monetary_quantity,signature,personal_email,mobile_phone_number,financial_data,document_id,custom_words,meta:content-type,meta:author,meta:pages,meta:lang,meta:date,meta:filesize,meta:num_words,meta:num_chars,meta:ocr
/Users/test/code/FARO_datasets/quick_test_data/Factura_NRU_0_1_001.pdf,high,0,0,0,0,0,0,1,4,application/pdf,Powered By Crystal,1,es,,85739,219,1185,False
/Users/test/code/FARO_datasets/quick_test_data/Factura_Plancha.pdf,high,0,6,0,0,0,0,2,8,application/pdf,Python PDF Library - http://pybrary.net/pyPdf/,1,es,,77171,259,1524,True
/Users/test/code/FARO_datasets/quick_test_data/20190912-FS2019.pdf,high,0,3,0,0,0,0,1,2,application/pdf,FPDF 1.6,1,es,2019-09-12T20:08:19Z,1545,62,648,False
  • output/scan.$CURRENT_TIME.entity: هو ملف json يحتوي على قائمة المؤشرات (المفصّلة) المستخرجة من ملف. على سبيل المثال:
root@kitploit:~
{"filepath": "/Users/test/code/FARO_datasets/quick_test_data/Factura_NRU_0_1_001.pdf", "entities": {"custom_words": {"facturar": 3, "total": 1}, "prob_currency": {"12,0021": 1, "12,00": 1, "9,92": 1, "3,9921": 1, "3,99": 1, "3,30": 1, "15,99": 1, "13,21": 1, "1.106.166": 1, "1,00": 1, "99,00": 1}, "document_id": {"89821284M": 1}}, "datetime": "2019-12-11 14:19:17"}
{"filepath": "/Users/test/code/FARO_datasets/quick_test_data/Factura_Plancha.pdf", "entities": {"document_id": {"H82547761": 1, "21809943D": 2}, "custom_words": {"factura": 2, "facturar": 2, "total": 2, "importe": 2}, "monetary_quantity": {"156,20": 4, "2,84": 2, "0,00": 2, "159,04": 2, "32,80": 4, "191,84": 2}, "prob_currency": {"1,00": 6, "189,00": 2}}, "datetime": "2019-12-11 14:19:27"}
{"filepath": "/Users/test/code/FARO_datasets/quick_test_data/20190912-FS2019.pdf", "entities": {"document_id": {"C-01107564": 1}, "custom_words": {"factura": 1, "total": 1}, "monetary_quantity": {"3,06": 1, "0,64": 1, "3,70": 1}}, "datetime": "2019-12-11 14:19:33"}

تشغيل FARO على الجهاز المضيف

ملاحظة: فقط LINUX و MAC OS X

المتطلبات الأساسية

يتطلب هذا الوضع بعض متطلبات نظام التشغيل والمكتبات لكي يعمل بشكل صحيح

  • Linux أو Mac OS
  • Java 1.7 أو أحدث
  • virtualenv (غير مطلوب ولكن يُنصح به بشدة)
  • GNU parallel (لتسريع برنامجنا النصي spider. يمكنك الاطلاع على مزيد من المعلومات حول الأداة هنا
  • git lfs مثبت.

البيئة الافتراضية

يُنصح باستخدام بيئة افتراضية منفصلة. لإنشاء بيئة افتراضية باستخدام virtualenv.

root@kitploit:~
virtualenv -p `which python3` <yourenvname>

لتفعيل البيئة الافتراضية على الطرفية اكتب فقط:

root@kitploit:~
source <yourenvname>/bin/activate

التبعيات

أسهل طريقة لتشغيل النظام هي تثبيت التبعيات بهذه الطريقة

root@kitploit:~
pip install -r requirements.txt

قائمة التبعيات هي التالية:

  • SpaCy مع نموذج اللغة الإسبانية على الأقل
  • numpy
  • scipy
  • sklearn
  • gensim
  • sklearn-crfsuite
  • fuzzywuzzy
  • tika
  • gensim
  • pyyaml
  • pandas

هذه التبعيات الأخرى تُستخدم للاختبار:

  • mox
  • unittest-xml-reporting

نماذج NER

يعتمد FARO على عدة نماذج تعلم آلي لكي يعمل.

root@kitploit:~
detection:
    nlp_model : es_core_news_sm
    crf_ner_list: models/crf_professions_v1.joblib
    personal_email_detection: models/email_detector.joblib
    target_list: models/legal.txt
    crf_ner_classic: models/crf_classic_step1.joblib,models/crf_classic_step2.joblib,models/crf_classic_step3.joblib,models/crf_classic_step4.joblib,models/crf_classic_step5.joblib
    corp_mail_list: models/corp_mail_list.txt

في مستودعنا، نتعامل مع النماذج من خلال Git LFS بسبب حجمها. إذا كان لديك git-lfs مثبتًا، فيجب أن تحصل تلقائيًا على النماذج التي تم تنزيلها عند استنساخ مستودعنا لأول مرة.

إذا كنت تريد تنزيل النماذج يدويًا، نفّذ الأمر التالي من جذر المشروع.

root@kitploit:~
git lfs pull

تحقق من أن المسارات الموضحة أدناه داخل ملف config/es.yml تشير إلى النماذج.

FARO spider

البرنامج النصي spider خاصتنا هو برنامج نصي لتحليل المستندات داخل مجلد بشكل متكرر، مع تخزين نتائج التحليل في ملف.

root@kitploit:~
./faro_spider.sh <your folder with files>

بعد إضافة OCR، توجد بعض الإعدادات التي يمكن تخصيصها لتنفيذ FARO من خلال متغيرات البيئة:

  • FARO_DISABLE_OCR: إذا تم العثور على هذا المتغير (بأي قيمة)، فلن ينفذ FARO OCR على المستندات
  • FARO_REQUESTS_TIMEOUT: عدد الثواني قبل أن يحدث انتهاء مهلة في FARO إذا لم يستجب خادم tika (الافتراضي: 60)
  • FARO_PDF_OCR_RATIO: البايتات لكل حرف المستخدمة في مستندات PDF المختلطة (نص وصور) لفرض OCR (الافتراضي: 150 بايت/حرف)

يمكن أيضًا إعداد تسجيل السجلات من خلال متغيرات البيئة:

  • FARO_LOG_LEVEL: مستوى تسجيل Faro (الافتراضي: INFO)
  • FARO_LOG_FILE: ملف تسجيل Faro (الافتراضي: None). عند استخدام docker، تأكد من تعيينه داخل مجلد output للحفاظ عليه على الجهاز المضيف.

كشف ملف واحد

يمكنك تنفيذ كشف FARO على ملف واحد باستخدام البرنامج النصي faro_detection.py

root@kitploit:~
./faro_detection.py -i <your_file>

يتم إنشاء ملفي مخرجات بالمسارات <your_file>.entity و <your_file>.score.

أ) <your_file>.entity: ملف json بقائمة الكيانات مرتبة حسب نوعها وعدد مرات الظهور (مخرجات وحدة كشف الكيانات):

root@kitploit:~
{"LOC": {"Pontevedra": 1}, "MONEY": {"1.000 euros": 2}, "PER": {"Betty Corti\u00f1as": 1, "Eva Expósito": 1, "Belén Portela": 1, "Marta Rivadulla": 1, "Miguel Rivas": 1}, "PROF": {"el tutor": 1}, "ORG": {"Centro de Recursos Educativos": 1}}

ب) <your_file>.score: ملف json بأنواع الكيانات وعدد مرات ظهور هذا النوع من الكيانات في النص. يحتوي هذا json أيضًا على درجة الحساسية في الخاصية "score" (يمكن أن تكون "low" و "medium" و "high").

root@kitploit:~
{"score": "high", "summary": {"monetary_quantity": 1, "person_position": 1, "mobile_phone_number": 1, "personal_email": 1, "credit_account_number": 2}}

للحصول على معلومات حول الوسائط الإضافية التي يمكن تمريرها إلى برنامج الكشف الخاص بنا، ألقِ نظرة هنا.

التفاصيل التقنية

كاشف الكيانات في FARO

يقوم كاشف كيانات FARO بخطوتين:

  1. استخراج مؤشرات الحساسية: المؤشرات هي كيانات وعناصر نصية أخرى (مثل الكميات النقدية) التي يُرجّح ظهورها في المستندات الحساسة.

قائمة المؤشرات هي التالية:

  • person_position_organization: هذه مجموعة من الكيانات (شخص، وظيفة - منصب، منظمة) التي تم استخراجها وربطها معًا من المستندات.

  • monetary_quantity: كمية نقدية (حاليًا يتم دعم اليورو والدولار فقط).

  • signature: يُخرج الشخص الذي يوقّع المستند

  • personal_email: رسائل البريد الإلكتروني غير المؤسسية (مثل info@ rrhh@)

  • mobile_phone_number: أرقام الهواتف المحمولة (مع استبعاد غير المحمولة منها)

  • financial_data: بطاقات الائتمان وأرقام حسابات IBAN

  • document_id: NIF و CIF الإسبانية.

يتم تجميع العدادات الفريدة لهذه الجمل في كائن json وإرسالها كمدخلات إلى الخطوة التالية.

  1. تسجيل درجة حساسية المستند: يتم تطبيق قاعدة تصنيف (باستخدام عتبات) على المؤشرات المستخرجة في المرحلة 1 لتعيين درجة حساسية للمستند.

يتم تطبيق القواعد التالية:

  • يضع كل مستوى حساسية عتبات لمؤشرات الحساسية. يجب أن يفي المستند بواحد على الأقل من العتبات (الحد الأدنى والحد الأقصى) للحصول على تلك الدرجة.

  • إذا ظهرت عتبات حساسية مختلفة في المستند (مُعدّة حاليًا على ثلاثة)، يرتفع مستوى حساسية المستند حتى لو استوفى جميع العتبات لهذا المستوى.

  • يتم أيضًا تعيين درجة "low" للمستندات التي لم يتم العثور على أي مؤشر حساسية فيها

الإعداد

يستخدم مجموعة ملفات YAML لإعداد وظائفه (توجد ملفات YAML داخل مجلد "config")

  • common.yaml: يحتوي على الوظيفة المشتركة لكل لغة

  • .yaml: يحتوي على الإعداد المحدد للغة (حاليًا يتم دعم الإسبانية فقط: كود "es"). يشير أيضًا إلى مكان وجود نماذج ML (على سبيل المثال، افتراضيًا داخل مجلد "models")

إعداد درجة الحساسية

تلك مجموعة من الشروط التي تختار درجة ما وفقًا لمواصفات ملف الإعداد. يتم إعداد المستويات في sensitivity_list مرتبة حسب شدتها (من الأقل إلى الأكثر حساسية). يحتوي قاموس sensitivity على الشروط (min, max) مرتبة حسب نوع الكيان. يحتاج النظام فقط إلى استيفاء شرط واحد من مستوى معين لتمييز المستند بهذا المستوى من الحساسية. علاوة على ذلك، إذا تم العثور على عدة مؤشرات أداء لمستوى معين في المستند (كما هو محدد بواسطة معامل sensitivity_multiple_kpis)، يرفع النظام مستوى حساسيتها (على سبيل المثال من medium إلى high).

root@kitploit:~
sensitivity_list:
    - low
    - medium
    - high


sensitivity_multiple_kpis: 3

sensitivity:
    low:
        person_position:
            min: 1
            max: 5
        monetary_quantity:
            min: 1
            max: 5

        signature:
            min: 0
            max: 0

        personal_email:
            min: 0
            max: 0

        ....

  • sensitivity_list هي قائمة درجات الحساسية المختلفة مرتبة حسب الشدة.

  • sensitivity_multiple_kpis يشير هذا الرقم إلى العدد المتزامن من الدرجات في مستوى ما المسموح به قبل رفع درجة الحساسية

  • sensitivity هو قاموس بشروط الحساسية التي يجب استيفاؤها للوصول إلى مستوى حساسية معين.

صيغ ملفات الإدخال المدعومة

يستخدم تطبيق FARO Tika لمعالجة المستندات. لذلك، يمكن استخدام جميع الصيغ التي يعالجها Tika كمدخلات. ومع ذلك، فإن البرنامجين النصيين faro_spider.sh/faro_spider.bat للمعالجة بالجملة مقيدان بالامتدادات التالية: .doc، .docx، .pptx، .ppt، .xls، .pdf، .odt، .ods، .odp، .txt و .rtf.

التقنيات

يستخدم FARO NER (المبنية باستخدام CRFs) لاستخراج الكيانات الكلاسيكية (شخص، منظمة، موقع) والمناصب الوظيفية.

يتم استخراج المؤشرات الأخرى باستخدام RegExp (معرّفات المستندات، أرقام الهاتف وبطاقات الائتمان، إلخ).

يتم استخراج رسائل البريد باستخدام RegExp. يُستخدم مصنف تعلم آلي وطرق استدلالية للتمييز بين رسائل البريد المؤسسية والشخصية.

الاختبار

لدى FARO عدة اختبارات للتحقق من وظائف النظام (حاليًا تغطي الاختبارات التعبيرات النمطية فقط). يمكن تنفيذ الاختبارات بالأمر التالي:

root@kitploit:~
python test_suite.py

وسائط إضافية لكشف FARO

--dump: يقوم النظام بإلقاء معلومات ملف <your_file>.score إلى stdout بصيغة csv. على سبيل المثال، قد يكون مثال الإخراج:

root@kitploit:~
id_file,score,person_jobposition_organization,monetary_quantity,sign,personal_email,mobile_phone_number,credit_account_number,id_document
data/test/test2.pdf,medium,3,0,1,0,0,0,0

يمكن تعيين مسارات ملفات الإخراج صراحةً في سطر الأوامر باستخدام --output_entity_file و --output_score_file

root@kitploit:~
python faro_detection.py --input_file <your_file> --output_entity_file <path to output> --output_score_file <path to output>

السلوك الافتراضي لبرنامج الكشف الخاص بنا هو إظهار نوع الكيانات التي تؤثر مباشرة على درجة الحساسية فقط. لإظهار جميع الكيانات المكتشفة، استخدم المعامل --verbose في سطر الأوامر.

يوجد معامل إضافي (--split_lines) يجب استخدامه مع المستندات التي يكون فيها كل سطر من المستند جملة (أو فقرة). افتراضيًا، يحاول FARO دمج الأسطر في المستند لأنه في كثير من الحالات لا يعني السطر المختلف جملة مختلفة (على سبيل المثال في ملفات PDF).

تثبيت Git-lfs

اتبع التعليمات لتثبيت git-lfs (تخزين ملفات GIT الكبيرة) اعتمادًا على

Linux

نزّل الحزمة من https://git-lfs.github.com/ واتبع تعليمات التثبيت.

Windows

ثبّت "git bash" على Windows (راجع قسم Windows في هذا الرابط https://git-scm.com/downloads) ثم قم بزيارة https://git-lfs.github.com/ واتبع تعليمات التثبيت.

Mac OS

root@kitploit:~
brew install git-lfs
git lfs install

سيتم إنشاء مجلد models يحتوي على جميع النماذج بداخله.

المشاكل المعروفة

  • الوظيفة الكاملة تعمل فقط مع المستندات الإسبانية على الرغم من أنه يمكن توسيعها بسهولة مع لغات جديدة (خاصة إذا كانت مدعومة بـ SpaCy، أداة معالجة اللغة الطبيعية المستخدمة لمعالجة الجمل والمستندات).

  • يستخدم النظام SpaCy لتحليل الجمل والمعالجة المسبقة لأجزاء الكلام. على الرغم من أن SpaCy يوفر نظام NER مُدرَّبًا للكيانات الكلاسيكية، إلا أنه يتم استخدام NER مخصصة لاستخراج الكيانات الكلاسيكية (شخص، منظمة، موقع) والمهن/المناصب الوظيفية.

المساهمون

TEGRA هو مركز أبحاث وتطوير في مجال الأمن السيبراني مقره في غاليسيا (إسبانيا). وهو جهد مشترك بين Telefónica، شركة اتصالات دولية رائدة، عبر ElevenPaths، وحدتها العالمية للأمن السيبراني، و Gradiant، مركز أبحاث وتطوير في تكنولوجيا المعلومات والاتصالات يضم أكثر من 100 متخصص يعملون في مجالات مثل الاتصال والأمن والذكاء، لإنشاء منتجات وخدمات مبتكرة في مجال الأمن السيبراني.

يتركز عمل TEGRA على مجالين ضمن مشهد الأمن السيبراني: أمن البيانات وتحليلات الأمان. نحن ملتزمون بإنشاء تقنيات متطورة يمكنها تغذية منتجاتنا وبالتالي توفير قيمة تمييزية لها.

راجع ملف CONTRIBUTORS.

تنزيل الأداة