Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Priv-QDNN — قاعدة أكواد بحثية لتقييم الخصوصية في الشبكات العصبية المُكمَّمة: تدرّب نماذج هدف/ظل ضمن PTQ/QAT وتنفّذ هجمات استدلال العضوية (MIA، RMIA، الصندوق الأبيض) مع دفاعات DP. | Kitploit
أدوات/GitHubGitHub/jefffffffu/priv-qdnn
الخصوصيةتعلم الآلةالأوراق والأبحاثالتعلم والتعليمأمن الذكاء الاصطناعي
GitHubjefffffffu/priv-qdnn

Priv-QDNN

قاعدة أكواد بحثية لتقييم الخصوصية في الشبكات العصبية المُكمَّمة: تدرّب نماذج هدف/ظل ضمن PTQ/QAT وتنفّذ هجمات استدلال العضوية (MIA، RMIA، الصندوق الأبيض) مع دفاعات DP.

عرض المستودع
1منذ 2 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Priv-QDNN

يحتوي هذا المستودع على قاعدة شيفرة بحثية من أجل تقييم الخصوصية للشبكات العصبية العميقة المكمّمة. وهو يدعم تدريب النماذج الهدف/الظل ضمن إعدادات التكميم الشائعة بعد التدريب (PTQ) والتكميم الواعي بالتدريب (QAT)، وحفظ ميزات الهجوم الوسيطة على القرص، وتشغيل مجموعة من الهجمات والمقاييس المتعلقة باستدلال العضوية (مثل MIA وRMIA وWhiteBoxMIA وWhiteBoxMIA_Partial). كما يدمج المستودع مسارات تدريب الخصوصية التفاضلية القائمة على Opacus للنماذج المحمية (مثل المتغيرات dropout / DP / adversarial في سكربتات الأمثلة المرفقة).

ينقسم سير عمل التقييم إلى مرحلتين: (1) التدريب (--training target|shadow|both) لإنتاج مخرجات save/<attack_method>/...، و**(2) التقييم بالهجوم فقط** (--training None) الذي يحمّل الاحتمالات اللاحقة/النماذج المحفوظة ويبلّغ عن المقاييس ضمن result/<attack_method>/....

التثبيت

تحتاج إلى جهاز يدعم NVIDIA GPU من أجل التجارب النموذجية. نوصي باستخدام حزم CUDA 12.1 لـ PyTorch (انظر الأوامر أدناه). استخدم Python 3.10 لتطابق الإصدارات المثبّتة في requirements.txt.

يمكنك تثبيت معظم المتطلبات باستخدام:

conda create --name priv-qdnn python=3.10
conda activate priv-qdnn
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu121

ملاحظات:

  • بالنسبة إلى PyTorch المخصّص لوحدة المعالجة المركزية فقط، شغّل pip install -r requirements.txt دون --extra-index-url (حِزم PyPI المخصّصة لوحدة المعالجة المركزية إن كانت متاحة لمنصّتك).
  • إذا كنت تستخدم مسارات التكميم AdaRound / AIMET، فأنت بحاجة إلى تثبيت aimet-torch عامل (انظر quantization/PTQ/adaround.py). إذا تعذّر على pip حلّ aimet-torch على منصّتك، فاتبع تعليمات تثبيت Qualcomm AIMET أولًا، ثم ثبّت بقية التبعيات.

مجموعات البيانات

مجموعات البيانات غير مضمنة في هذا المستودع. هناك أربع مجموعات مدعومة، وهي تختلف في مقدار الإعداد الذي تحتاجه.

CIFAR-100 وCINIC-10 (تلقائي)

يتم جلب كلتيهما عند أول استخدام إلى data/، لذا لا حاجة إلى خطوة يدوية — فقط تأكد من أن الجهاز لديه وصول إلى الشبكة في المرة الأولى التي تشغّل فيها تجربة.

  • يتم تنزيل CIFAR-100 بواسطة torchvision.datasets.CIFAR100(..., download=True) في data/load_data.py.
  • يتم تنزيل CINIC-10 واستخراجه بواسطة fetch_cinic10() في data/cinic10.py من مرآة Edinburgh DataShare. إنه أرشيف كبير، لذا خصّص وقتًا ومساحة قرص للتشغيل الأول.

Texas100 وLocation (يدوي)

لا يوجد لهاتين المجموعتين مُنزِّل تلقائي. اجلب الأرشيفات الخام، وفكّ ضغطها تحت data/<dataset>/raw/، ثم حوّلها إلى ملفات .npy التي تتوقعها أدوات التحميل.

مجموعة البياناتالأرشيف الخام
Texas100https://www.comp.nus.edu.sg/~reza/files/dataset_texas.tgz
Locationhttps://github.com/privacytrustlab/datasets (مجموعة location)

التخطيط المتوقع بعد فك الضغط:

data/texas/raw/texas/100/feats
data/texas/raw/texas/100/labels
data/location/raw/bangkok

ثم أنشئ تقسيمات التدريب/الاختبار:

python data/prepare_tabular.py --dataset both

يقبل --dataset القيم texas أو location أو both. استخدم --raw_root للإشارة إلى موقع مختلف (الافتراضي data/<dataset>/raw)، و--test_size / --seed لتغيير التقسيم (القيم الافتراضية 0.2 و41).

يكتب هذا الملفات التي يحمّلها data/tabular_datasets.py:

data/<dataset>/{train_feats,train_labels,test_feats,test_labels}.npy

إذا كانت ملفات .npy هذه مفقودة، فإن أي تشغيل يستخدم --dataset_name texas أو --dataset_name location يفشل بخطأ FileNotFoundError يذكر المسار المفقود.

بنية كود Priv-QDNN

  • attack: تطبيقات الهجوم ونقاط دخول التقييم (MIA، RMIA، WhiteBox_MIA، إلخ).
  • training: حلقات تدريب الهدف/الظل ومتغيرات التدريب المحمية (فروع DP / الخصومة، والأدوات المساعدة).
  • model: تعريفات النماذج والأغلفة المستخدمة في التدريب والهجمات.
  • quantization: خطوط أنابيب وأدوات التكميم PTQ/QAT (بما في ذلك تكامل AIMET AdaRound).
  • data: أدوات مساعدة لتنزيل مجموعات البيانات، ونصوص التحضير، وأغلفة Dataset الخاصة بـ PyTorch.
  • dp: أدوات الخصوصية التفاضلية المستخدمة في مسارات تدريب DP.
  • example: نصوص shell للتجارب الشاملة من البداية إلى النهاية (جمع بيانات MIA + التقييم/الدفاعات القائمة على الهجوم فقط).
  • experiment: الدراسات الميكانيكية الكامنة وراء تحليل الورقة — درجات الحفظ بأسلوب LOOD (memorization.py) وجداول تكميم معيار التدرج (grad_norm_quantization_table.py، grad_norm_range_normalized_table.py).
  • plot: توليد الأشكال والجداول للورقة؛ تُحفظ ملفات PDF وCSV الناتجة في plot/figures/.
  • main.py: نقطة دخول CLI الموحدة (--training يبدّل بين أوضاع التدريب والهجوم فقط).
  • parameter_parser.py: جميع وسائط سطر الأوامر والقيم الافتراضية.
  • extract_last_layer_grad_norm.py: معايير L2 لكل عينة لتدرج مصنّف الطبقة الأخيرة لمجموعات الأعضاء وغير الأعضاء، والتي تُعاد استخدامها بواسطة جداول experiment/.

تجارب تجريبية

جمع بيانات استدلال العضوية + هجوم MIA فقط (CIFAR-100)

يطابق النمط التالي سير العمل المقصود في المستودع: التدريب باستخدام MIA لتعبئة save/MIA/...، ثم تشغيل MIA مع --training None.

# Stage 1: train target + shadow and save MIA artifacts
python main.py \
  --dataset_name cifar100 \
  --net_name resnet18 \
  --quantization hawq --a_bit 8 --w_bit 8 \
  --attack_method MIA \
  --training both \
  --num_epochs 50 --trials 3 \
  --device cuda:0

# Stage 2: attack-only MIA evaluation (confidence threshold attack only)
python main.py \
  --dataset_name cifar100 \
  --net_name resnet18 \
  --quantization hawq --a_bit 8 --w_bit 8 \
  --attack_method MIA \
  --compleaknr_attacks confidence \
  --training None \
  --trials 3 \
  --device cuda:0

لكل تشغيل هجوم، ستطبع وحدة التحكم التقدم من تنفيذ الهجوم المقابل (على سبيل المثال، المقاييس لكل تجربة لـ MIA؛ عمليات التشغيل الخاصة بالهجوم فقط تُحفظ في result/MIA/...).

اختيار هجمات الصندوق الأسود التي تريد تشغيلها

يتحكم --compleaknr_attacks في إدخال MIA الخاص بالهجوم فقط:

  • confidence — يشغّل هجوم عتبة الثقة فقط. يستهلك فقط الاحتمالات اللاحقة المحفوظة، لذا فهو سريع ولا يحتاج إلى ملفات النموذج.
  • all (القيمة الافتراضية للوسيط) — يشغّل جميع المتغيرات الستة للصندوق الأسود: عتبة الثقة، عتبة الإنتروبيا، الإنتروبيا المعدّلة، هجومان قائمان على التدريب (LR/RF على الاحتمالات اللاحقة، وعلى الاحتمالات اللاحقة بالإضافة إلى التسمية)، وSAMIA.

لاحظ أن الوضعين لهما متطلبات مختلفة. تقرأ المتغيرات الخمسة الأولى فقط الاحتمالات اللاحقة المحفوظة، لكن SAMIA يحمّل بالإضافة إلى ذلك النموذج الهدف ونماذج الظل المحفوظة من save/MIA/.../target/<trial>/model.pth وsave/MIA/.../shadow/0/model.pth ويستعلمها على مدخلات مضطربة لتقدير حساسية المخرجات. لا يزال هذا صندوقًا أسود بمعنى أنه لا تُستخدم سوى مخرجات النموذج — لا تدرجات ولا تنشيطات داخلية — لكنه يتطلب وجود تلك نقاط التحقق، وهو أبطأ بكثير.

إذا حذفت --compleaknr_attacks، فستعمل الستة جميعًا. مرّر confidence صراحةً، كما هو موضح أعلاه، عندما تريد المسار السريع فقط أو عندما تكون نقاط تحقق النموذج غير متاحة.

نصوص الدفعات (الدفاع + MIA)

يمكنك أيضًا إعادة إنتاج عمليات مسح أوسع عبر:

bash example/MIA_cifar100_train.sh
bash example/MIA_cinic10_train.sh
bash example/defense/run_adv.sh
bash example/defense/run_dp.sh
bash example/defense/run_dropout.sh
bash example/RMIA.sh

عدّل معرّفات الأجهزة (cuda:*) والمعاملات الفائقة داخل تلك السكربتات بما يناسب عنقودك.

أمثلة الدفاع (CIFAR-100)

فيما يلي أمثلة مصغّرة للنماذج المحمية، باستخدام --compleaknr_attacks confidence في وضع الهجوم فقط.

# Dropout defense (resnet18_drop010): train target, then black-box confidence attack
python main.py --training target --attack_method MIA --dataset cifar100 --net_name resnet18_drop010 --quantization Original --a_bit 32 --w_bit 32 --trials 1 --device cuda:0
python main.py --attack_method MIA --compleaknr_attacks confidence --dataset_name cifar100 --net_name resnet18_drop010 --quantization Original --a_bit 32 --w_bit 32 --training None --trials 1 --device cuda:0
تنزيل الأداة