تفاصيل الحزمة التقنية
تفاصيل الحزمة التقنية
الحزمة التقنية والتبعيات التفصيلية لماسح DuoKey PQC
التقنية الأساسية
الإصدار: المستقر (يُوصى بالأحدث)
لماذا Rust؟
أمان الذاكرة
دون جمع للمهملات، مع ضمانات أمان الذاكرة عند وقت الترجمة
الأداء
تجريدات عديمة التكلفة، مماثلة لـ C/C++
التزامن
تزامن بلا مخاوف عبر نظام الملكية
عبر المنصات
دعم من الدرجة الأولى لـ Linux وmacOS وWindows
- أدوات حديثة: مدير الحزم Cargo، وrustfmt، وclippy
- نظام أنواع قوي: يمنع فئات عديدة من الأخطاء عند وقت الترجمة
التبعيات
rustls (v0.23+)
تنفيذ TLS 1.2/1.3 بلغة Rust بحتة، يُستخدَم مع rustls-pemfile لتحميل PEM.
الميزات:
- لا اعتماد على OpenSSL
- TLS آمن للذاكرة
- مجموعات تشفير حديثة
- دعم TLS 1.3
x509-parser (v0.16+)
تحليل شهادات X.509
القدرات:
- تحليل شهادات DER/PEM
- استخراج المفاتيح العامة
- التحقق من سلاسل الشهادات
- تحليل OID
der و pem (v0.7+ / v3.0+)
ترميز/فك ترميز منخفض المستوى لبيانات DER وPEM.
tokio (v1.35+)
وقت تشغيل غير متزامن (مُفعَّل بمجموعة ميزاته الكاملة).
الميزات المستخدمة:
fs: عمليات نظام ملفات غير متزامنةnet: شبكات TCP/TLSsync: القنوات، والأقفال المتبادلةtime: المؤقّتات، والمهلاتmacros:#[tokio::main]rt-multi-thread: وقت تشغيل متعدد الخيوط
clap (v4.5+)
تحليل وسائط سطر الأوامر (باستخدام ميزات derive وenv وcargo).
الميزات:
- ماكرو derive لتعريف واجهة سطر الأوامر بسهولة
- الأوامر الفرعية
- دعم متغيّرات البيئة
- إكمالات الصدفة
- توليد المساعدة
serde (v1.0+)
إطار عمل التسلسل، مقترنًا بـ serde_json وserde_yaml لصيغتَي مخرجات JSON وYAML.
الصيغ المدعومة:
- JSON (المخرجات الافتراضية)
- YAML (قابلة للقراءة البشرية)
- صيغة SARIF المخصّصة
tracing (v0.1+)
تسجيل مُهيكَل، مع tracing-subscriber (ميزة env-filter) التي تعالج مخرجات التسجيل والترشيح.
الميزات:
- تسجيل مُهيكَل وسياقي
- مستويات تسجيل متعددة
- الترشيح حسب الوحدة
- دعم مخرجات JSON
anyhow و thiserror (v1.0+)
الاستخدام:
anyhow: الأخطاء على مستوى التطبيقthiserror: الأخطاء المخصّصة على مستوى المكتبة
walkdir (v2.4+)
اجتياز الأدلة بشكل تكراري
الميزات:
- مسح تكراري فعّال
- معالجة الروابط الرمزية
- الترشيح
- الوصول إلى البيانات الوصفية
rayon (v1.8+)
توازي البيانات
حالات الاستخدام:
- معالجة الملفات على التوازي
- تحليل الشهادات المتزامن
- مسح متعدد الخيوط
pcap (v2.0+)
التقاط الحزم (غلاف libpcap)
تبعيات المنصة:
- Linux:
libpcap-dev - macOS: libpcap المدمج
- Windows: WinPcap أو Npcap
pnet (v0.35+)
تحليل الحزم
الميزات:
- تحليل حزم TCP/IP
- دعم بروتوكولات الطبقة 2-4
- مساعِدات إعادة تجميع التدفّق
indicatif (v0.17+)
أشرطة التقدّم
ratatui (v0.26+)
إطار عمل واجهة الطرفية، يُستخدَم مع crossterm للتحكّم في الطرفية.
يُستخدَم في:
- العرض الفوري في وضع الشبكة
- الإحصائيات التفاعلية
- مراقبة الحالة
نظام البناء
يُبنى المشروع بواسطة Cargo. تُنشَر الحزمة باسم dke-scanner-agent في الإصدار 1.0.0، وتستهدف إصدار 2021، ومرخّصة ترخيصًا مزدوجًا بموجب MIT أو Apache-2.0. تُنتِج ثنائيًا باسم dke-scanner-agent ومكتبة قابلة لإعادة الاستخدام باسم pqc_scanner.
تُصنَّف تبعيات وقت التشغيل حسب الغرض:
| المجموعة | الصناديق |
|---|---|
| الأساسية | tokio, anyhow, thiserror |
| التشفير | rustls, x509-parser, der, pem |
| واجهة سطر الأوامر | clap |
| التسلسل | serde, serde_json, serde_yaml |
| التسجيل | tracing, tracing-subscriber |
| نظام الملفات | walkdir |
| التوازي | rayon |
| الشبكة | pcap, pnet |
| واجهة المستخدم | indicatif, ratatui, crossterm |
تشمل تبعيات التطوير criterion لقياس الأداء وtempfile للاختبارات. مُهيّأ ملف تعريف الإصدار من أجل الحجم والسرعة: أقصى مستوى تحسين، وتحسين وقت الربط، ووحدة توليد كود واحدة، ورموز تصحيح منزوعة.
التبعيات الخاصة بالمنصة
حزم النظام:
# Ubuntu/Debian
sudo apt-get install libpcap-dev pkg-config build-essential
# RHEL/CentOS
sudo yum install libpcap-devel
# Arch
sudo pacman -S libpcap
حزم النظام:
# libpcap is included with macOS
# Optional: Homebrew for development tools
brew install pkg-config
المتطلبات المسبقة:
- Visual Studio Build Tools أو MSVC
- Npcap (لالتقاط الحزم): https://npcap.com/
# Install Npcap
choco install npcap
الترجمة
cargo build --release
المخرَج: target/release/dke-scanner-agent
خصائص الأداء
حجم الثنائي
| نوع البناء | الحجم | الوصف |
|---|---|---|
| التصحيح | ~50 ميغابايت | غير مُحسَّن مع رموز التصحيح |
| الإصدار | ~8 ميغابايت | مُحسَّن، منزوع |
| الإصدار + UPX | ~3 ميغابايت | مضغوط بواسطة UPX |
استخدام الذاكرة
| الوضع | عادي | الذروة |
|---|---|---|
| الوكيل | 30 ميغابايت | 50 ميغابايت |
| نظام الملفات | 50 ميغابايت | 100 ميغابايت |
| النطاق | 40 ميغابايت | 80 ميغابايت |
| الشبكة | 60 ميغابايت | 150 ميغابايت |
استخدام المعالج
- التحليل أحادي الخيط: نواة واحدة
- مسح نظام الملفات المتوازي: جميع الأنوية
- التقاط الشبكة: 1-2 نواة
تبعيات الاختبار
تعتمد الاختبارات على مجموعة صغيرة من الصناديق المخصّصة للتطوير فقط:
| الصندوق | الغرض |
|---|---|
| criterion | قياس الأداء |
| tempfile | ملفات مؤقتة للاختبارات |
| mockall | إطار عمل المحاكاة |
| proptest | الاختبار المستند إلى الخصائص |
التكامل مع CI/CD
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: cargo test --all-features
- run: cargo clippy -- -D warnings
متطلبات الإصدار
| التبعية | الحد الأدنى للإصدار | الموصى به |
|---|---|---|
| Rust | 1.70 | أحدث إصدار مستقر |
| Cargo | 1.70 | الأحدث |
| libpcap | 1.9.0 | 1.10.0+ |