سَنَد منظومة التقييم الآمن
🛡️ معيار نزاهة الاختبارات الرقمية الجديد

تحقيق النزاهة المطلقة لبيئات التقييم الرقمي

منظومة سند (SANAD) المتكاملة توفر حلاً أمنياً شاملاً للمؤسسات الأكاديمية لحماية الاختبارات من خلال إغلاق الأجهزة بالكامل وربطها برمجياً بنظام مودل التعليمي (Moodle) وإدارة تراخيصها سحابياً.

lms.sanad.ws/quiz/attempt.php
السؤال 4 من 10

أي من الخصائص التالية توفر حماية حيوية ضد تزوير التراخيص داخل المنظومة؟

توقيع رقمي تشفيري (Challenge-Response RSA-1024)
تحديد هوية المتصفح عبر User-Agent العادي
حفظ كلمات المرور محلياً في الذاكرة المؤقتة
وضع الكشك نشط - آمن
🔋 98%

أركان منظومة سَنَد البيئية

تعمل جزيئات النظام الثلاثة في تناسق تام لضمان بيئة اختبار خالية من أي محاولات غش أو تجاوز.

📱

تطبيق سند كشك (Android Kiosk)

تطبيق يثبت على مستوى نظام التابلت (Device Owner) يعطل بالكامل أزرار التنقل الرئيسية، شريط الإشعارات، الاختصارات، شاشات المهام المعلقة ولوحات المفاتيح الخارجية، مما يبقي الطالب داخل نظام التقييم حصراً.

  • 🔐 قفل تام للنظام (Kiosk Lock)
  • ⌨️ لوحة مفاتيح آمنة ومطورة (Secure IME)
  • 🚫 حظر لقطات الشاشة وتسجيل الشاشة
🛡️

إضافة مودل للحظر (Moodle Plugin)

قاعدة وصول ذكية تدمج مباشرة في إعدادات اختبارات مودل (Moodle). تتحقق من تشفير رمز المتصفح وبصمة الجهاز الحيوية، وتتحكم ببدء المحاولة وضربات القلب (Heartbeat) وتدير رموز خروج المراقبين.

  • 🔗 ربط المحاولة ببصمة الجهاز (Hardware ID)
  • ⏱️ فحص حيوي متواصل كل 30 ثانية
  • 🚨 تسجيل فوري للمخالفات مع طوابع زمنية
🔑

سيرفر التراخيص (Licensing Server)

خادم إدارة مركزي سحابي يتيح تفعيل الأجهزة تلقائياً دون لمس (Zero-touch)، وتقسيم الأكاديميات وإدارة كوتا الاشتراكات، مع إمكانية تخصيص الهوية والشعارات والمعلومات محلياً بشكل ديناميكي (White-labeling).

  • 🏢 تخصيص الهوية لكل أكاديمية (White-label)
  • 📊 لوحة تحكم إحصائية وإدارة الأدوار (RBAC)
  • 📧 نظام إشعار وتنبيه آلي بالبريد الإلكتروني
🛡️

آليات أمنية غير قابلة للتجاوز

صممت منظومة سند وفق أعلى معايير الحماية الرقمية لضمان مصداقية الاختبارات:

🔑

توقيع رقمي مشفر (RSA-1024 Challenge-Response)

آلية حماية للتحقق من التراخيص بدون اتصال مباشر بالسيرفر، حيث يولد النظام أكواد تفعيل موقعة بمفتاح خاص (Private Key) ولا يمكن فتح الكشك إلا بالتحقق منها بمفتاح عام (Public Key).

🚨

نظام كشف الانتهاكات اللحظي

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

🔍

التحقق من سلامة البيئة ونظام الجهاز

يقوم التطبيق بفحص دوري للتأكد من عدم كسر حماية الجهاز (Root Detection)، وعدم استخدام محاكيات (Emulator check)، والتحقق من التوقيع الرقمي لملف الـ APK الأصلي لمنع التعديل عليه.

تفاصيل الهندسة البرمجية للمنظومة

تحليل أسلوب كتابة الأكواد البرمجية (Kotlin & PHP) والآليات التشفيرية المعتمدة لحظر ومراقبة الاختبارات.

MainActivity.kt — Securing Sandbox
// 1. Prevent Screenshots & screen recording
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)

// 2. Enforce lock task package (Device Owner)
if (dpm.isDeviceOwnerApp(packageName)) {
    dpm.setLockTaskPackages(adminComponent, arrayOf(packageName))
    startLockTask()
    // Block Developer settings & USB debugging
    dpm.addUserRestriction(adminComponent, UserManager.DISALLOW_DEBUGGING_FEATURES)
}

// 3. Enforce custom Secure Qwerty IME
dpm.setSecureSetting(adminComponent, Settings.Secure.DEFAULT_INPUT_METHOD, "com.sanad.securebrowser/.SecureIME")
🔒

فرض وضع الكشك المطلق (Device Owner)

باستخدام صلاحية مدير الجهاز (Device Owner)، يقوم الكود ببرمجة وضع LockTask مما يلغي مفاتيح الرجوع والمهام المعلقة بشكل هاردوير، بالإضافة لتعطيل USB Debugging.

⌨️

عزل لوحة المفاتيح وحظر الحافظة (IME)

يرغم النظام على تشغيل SecureIME المعرّف في الكود البرمجي ويخفي باقي لوحات المفاتيح برمجياً لتفادي استيراد نصوص خارجية، مع إلغاء عمليات اللصق (Paste) تماماً.

🌐

حقن CSS وJS لحظر عناصر التصفح

عند انتهاء تحميل صفحات مودل، يحقن الكود نصوص JS تخفي أشرطة القوائم والروابط الجانبية لمودل وتمنع تحديد النصوص (user-select: none) لحماية الأسئلة من النسخ.

LicenseManager.kt — MD5 & RSA challenge
// 1. Generate Hardware ID fingerprint (MD5)
val rawInfo = androidId + Build.BOARD + Build.BRAND + Build.MODEL
val digest = MessageDigest.getInstance("MD5")
val hex = digest.digest(rawInfo.toByteArray()).toHex()
val hardwareId = hex.take(16).chunked(4).joinToString("-")

// 2. Online verification exchange payload
val payload = JSONObject().apply {
    put("hardware_id", hardwareId)
    put("device_model", Build.MODEL)
}
// POST response fetches status, expiry date, lms url, white-label configs
🆔

توليد بصمة العتاد الفريدة (Hardware ID)

يدمج الكود بيانات معالج وشركة وموديل الجهاز مع معرف الأندرويد لإنشاء رمز تشفيري MD5 من 16 حرفاً، يمثل بصمة التابلت الفريدة التي يرتبط بها ترخيص الأكاديمية.

🔐

توقيع رقمي غير متصل RSA-1024

يدعم النظام تفعيل التابلت أوفلاين عبر تشفير وحقن التواريخ ورمز العتاد بواسطة خوارزمية التوقيع الرقمي RSA، حيث يوقع السيرفر الترخيص بمفتاح خاص ويتحقق منه التابلت بمفتاح عام.

⚙️

تسجيل الأجهزة دون لمس (Zero-Touch)

عند تفعيل الأكاديمية عبر Token، يتم تسجيل الأجهزة آلياً في السيرفر وتنزيل تفاصيل White-label (رابط LMS، الهاتف والدعم الفني وشعار الأكاديمية) مباشرة في ذاكرة التابلت.

api.php & rule.php — Moodle access control
// 1. Validate custom User-Agent and headers
if (strpos($_SERVER['HTTP_USER_AGENT'], 'SanadSecureBrowser') === false) {
    throw_security_exception("Access denied — Secure browser required");
}

// 2. Real-time heartbeat validation & violation logger
if ($action === 'log_violation') {
    $DB->insert_record('quizaccess_sanad_violations', [
        'userid' => $USER->id,
        'quizid' => $data->quizid,
        'violation_type' => $data->type,
        'timecreated' => time()
    ]);
}
🚨

قواعد التحقق الترويسية وحظر الدخول

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

⏱️

سجل ضربات القلب والتحقق المستمر (Heartbeat)

يستمر التابلت في إرسال بنق للسيرفر كل 30 ثانية لتأكيد أمان المحاولة. إذا انقطع الاتصال أو أغلقت جلسة الكشك، ترفض الإضافة إرسال أي إجابات وتلغي المحاولة تلقائياً.

🔑

مفاتيح المرور وباي باس المراقب الموقّع

لحالات الخروج الطارئ، تتيح الإضافة للمراقب الميداني إدخال كلمة مرور مخصصة تُشفر بصيغة SHA-256 محلياً أو يجرى التحقق منها عن بُعد لفتح جهاز الطالب بأمان.

محاكي الكشك التفاعلي لـ سَنَد

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

لوحة تحكم المحاكي

استخدم الأزرار بالأسفل لمحاكاة تصرفات الطالب أثناء الاختبار ومراقبة ردود فعل المنظومة:

سجل الأحداث المباشر (Moodle Logger):
> النظام جاهز... في انتظار تفعيل وضع الكشك.
🌐
متصفح عادي
💬
واتساب
📚
ملخصات المادة

التابلت حالياً في وضع الاستخدام العادي. لتأدية الاختبار، يجب تشغيل وضع الكشك الآمن.

🔒 Sanad Secure Kiosk Browser v1.2 Time Left: 29:58
⚠️ محاولة اختبار الطالب نشطة الآن. تم قفل أزرار التحكم وشريط الإشعارات.
سؤال الرياضيات (تأكيد الهوية):

الرجاء عدم إغلاق التطبيق لتفادي الحظر المباشر.

🚨

تم رصد مخالفة أمنية!

تم محاولة مغادرة التطبيق أو تشغيل واجهة خارجية. تم تسجيل الحدث وإرساله فوراً إلى المدرس والمراقب.

Violaton Code: ERR_FOCUS_LOST Device ID: SANAD-SIM-98F2

بوابة الوصول المباشر للمنظومة

للوصول السريع إلى تطبيقات وواجهات منظومة سند التعليمية والخدمية: