اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

S1.png.b94d949126a2c6e59bab9ec56849dab2.png

أخواني وأساتذتي ومعلمينا ( دون استثناء )

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

 

الهدف حماية السجلات من العبث ومنع استيرادها بتاتاً .

 

05.png

1. القاعدة غير محمية بكلمة مرور أو حتى أنها غير محفوظة بصيغة Accde ...

2. ما يهمني هو الطريقة التي تم بها الكشف عن الجدول . وليس النتيجة ذاتها :cool: 

Hide TBL.accdb

  • Like 1
قام بنشر
3 ساعات مضت, Foksh said:

S1.png.b94d949126a2c6e59bab9ec56849dab2.png

أخواني وأساتذتي ومعلمينا ( دون استثناء )

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

 

الهدف حماية السجلات من العبث ومنع استيرادها بتاتاً .

 

05.png

القاعدة غير محمية بكلمة مرور أو حتى أنها غير محفوظة بصيغة Accde ...

 

Hide TBL.accdb 416 kB · 2 downloads

تقصد ان كنت اقدر اعرف البيانات ال فى الجدول المخفي 

image.png.c50002db4e904c694f0a427e30263284.png
زذ كده ؟

  • Like 1
قام بنشر

السادة الأفاضل الكرام ،

الأساتذة ( @kanory ، @عمر ضاحى ، @Barna ) الذين ساهموا بمشاركتهم بالتجربة والإفادة بالنتيجة ..

 

بدايةً شكراً لكم لمشاركتكم :wub: ، وأعلم أنكم بخبرتكم قادرون على تحقيق المطلوب بشتى السُبل والطـُرق . كانت البداية بأن الملف بصيغة ACCDB ؛ أي أنني تركت لمن يرغب بالمشاركة - باب التجربة مفتوحاً - بأكواد أو استعلامات أو أي طريقة يراها مناسبة لتحقيق المطلوب .

💥 ولكن كمطور فطبعاً لن يتم تسليم أي مشروع لأي عميل بهذا الشكل - الغير محمي - وبالتالي لا بد من حماية وتشفير الملف وتقفيله بعد إتمام المشروع بصيغة ACCDE مع باقي الإحتياط التي يتخذها المصمم والمطور والمبرمج ، صحيح ؟

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

لذا أرجو منكم الإفادة بالتجربة على نفس الملف ولكن بصيغة ACCDE . مع العلم أن المكون هو جدول واحد و سجل واحد فقط . ولن يهمني كثيراً اسم الجدول بقدر ما يهمني السجل الذي يحتويه الجدول كبيانات :biggrin:

كما أرجو أن يتم ذكر الطريقة التي تم بها التعرف على هذا السجل والجدول . ولن أطلب أي أكواد بقدر ما يهمني الطريقة ذاتها .

 

 

HideTBL V1-32.zip HideTBL V1-64.zip

قام بنشر
3 ساعات مضت, ابوخليل said:

لا ادري كيف ظهر معي 

 

هو المطلوب بعينه ، ولكن إن لم يكن معلمي يدري ، فمن يدري :yes: !!!

  • Thanks 1
قام بنشر

السلام عليكم 🙂

 

ولو اني مشغول لقمة رأسي ومسافر غدا ان شاء الله ، ولكني اردت المشاركة تفاعلا مع اخي ابوخليل 🙂

 

image.png.95913053ea2a54faa2500af4aedbf37f.png

.

وطريقتي:

 

بالاشارة الى موضوعي ، الجزء الاول:

 

واليك الجزء الثاني من الموضوع:

1. عملت ملف اكسس فارغ، وعملت فيه الاستعلام التالي لقراءة جدول MSysObjects برنامجك ، والذي يحتوي على جميع جداول البرنامج :

SELECT MSysObjects.*
FROM [D:\temp\1642.HideTBL V1-32.accde].MSysObjects
ORDER BY MSysObjects.DateUpdate DESC;

.

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

وحتى لو ما عملت الفرز ، فكان بإمكاني عمل كود لفحص الجداول فردا فردا 🙂

 

وحصلت على الجداول التالية:

image.png.0a5fa85c8a22e10d609f87ab8705f520.png

.

ومنها جربت الجدول AccessTbl :

SELECT AccessTbl.*
FROM [D:\temp\1642.HideTBL V1-32.accde].AccessTbl

.

وحصلت على النتيجة 🙂

 

جعفر

  • Like 2
قام بنشر
7 ساعات مضت, jjafferr said:

وحصلت على النتيجة 🙂

 

ما شاء الله عليك .. أولاً نشكر معلمنا أبو خليل لمشاركته وجعله الحافز الذي أنرت به موضوعي المتواضع :wub: ..

شرح جميل جداً وطريقة مبتكرة أيضاً وجميلة ..

سلمت تلك الأنامل والأفكار النيراتِ :fff:

  • Thanks 1
قام بنشر

كلنا نعلم ان ليس هناك حماية مطلقة

اقتنعت بهذه المقولة متأخرا

كنت الجأ سابقا في حماية برامجي الى طرق قراقوشية لا تخطر على البال .. غرس ملفات في النظام وبيانات خاصة في الريجستري .. وكأني احمي سر القنبلة الكونبة :cool2:

لكني الآن تركت كل ذلك وجعلت مفتاح البرنامج متاحا في ملف تكست ظاهر بجانب قاعدة البيانات .. ملكا لصاحبه ..

اما قاعدة الجداول فلم اجد افضل لها من كلمة المرور لحماية البيانات من النسخ ,, وان كانت بعض البيانات شديدة الاهمية لجأت لتشفيرها لحجب قرائتها فيما لو تمكن احد  من فك كلمة المرور وتمكن من الدخول الى الجدول .

 

  • Like 1
  • Haha 1
قام بنشر
9 دقائق مضت, ابوخليل said:

كلنا نعلم ان ليس هناك حماية مطلقة

اقتنعت بهذه المقولة متأخرا

كنت الجأ سابقا في حماية برامجي الى طرق قراقوشية لا تخطر على البال .. غرس ملفات في النظام وبيانات خاصة في الريجستري .. وكأني احمي سر القنبلة الكونبة :cool2:

لكني الآن تركت كل ذلك وجعلت مفتاح البرنامج متاحا في ملف تكست ظاهر بجانب قاعدة البيانات .. ملكا لصاحبه ..

اما قاعدة الجداول فلم اجد افضل لها من كلمة المرور لحماية البيانات من النسخ ,, وان كانت بعض البيانات شديدة الاهمية لجأت لتشفيرها لحجب قرائتها فيما لو تمكن احد  من فك كلمة المرور وتمكن من الدخول الى الجدول .

 

أعلم يقيناً ذلك وبقناعة مطلقة ، إلا أنني ..

في أحد المشاريع لبرنامج خاص بمكتب تسهيلات الفيزا لأحد الأصدقاء . كان لي توجه بحيث !!!!!

1. عند تشغيل قاعدة البيانات يتم الإتصال بقاعدة البيانات الخلفية الأساسية . واستخراج قاعدة بيانات خلفية أخرى بنفس الجداول مخفية في مسار داخل الويندوز ( لعدم أهميته لأنه خالي من البيانات )

2. عند الإغلاق يتم إعادة ربط قاعدة البيانات قبل اغلاقها بقاعدة الجداول الخلفية الوهمية ( التي لا تحتوي على بيانات ) .

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

قام بنشر (معدل)

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

Untitled.jpg.7937730c93224d9b0eac30ea7958027d.jpg

وللقيام بذلك قم بتنفيذ الخطوات كالتالي

1- إنسخ الملف تحت القرص D مباشرة (يمكن نسخه إلى أي مكان ولكن هكذا سيكون المسار قصير)

2- إفتح الملف وقم بإنشاء الاستعلام التالي (هذه الخطوة غير مهمة لكم لإني سبق واستخرجت قيمة العمود المطلوب ووضعتها في الكود ولكني ذكرتها للتعرف على الخطوات)

SELECT
    MSysObjects.Flags,
    MSysObjects.Name,
    MSysObjects.Type
FROM
    MSysObjects
WHERE
    (
        ((MSysObjects.Name) NOT LIKE "MSys*")
        AND ((MSysObjects.Type) = 1)
    );

 من خلال هذا الاستعلام سنتعرف على أي جدول Type=1 ولايبدأ بالأحرف MSys لتظهر لنا  النتيجة كما بالصورة

11.jpg.f7cfd0a81a515e80e5ca5b1c1e767392.jpg

مايهمنا هنا هي قيمة العمود الأول Flags بعد ذلك قم بإغلاق التطبيق بدون حفظ اي شيء

3- إفتح أي قاعدة بيانات أخرى (سواء قاعدة بيانات فارغة أو مستخدمة لايهم) وفي أي وحدة نمطية (جديدة أو فيها اكواد لايهم) والصق فيها الإجراء التالي

Sub sbUnHideTables()
Dim app As Access.Application
Dim wks As Workspace
Dim db As dao.Database
Dim rst As dao.Recordset
Dim tdf As TableDef

    Set app = New Access.Application
    Set wks = app.DBEngine(0)
	'الإصدار 64
    Set db = wks.OpenDatabase("D:\HideTBL V1-64.accde") 		'مسار الملف   
	
	'الإصدار 32
    'Set db = wks.OpenDatabase("D:\HideTBL V1-32.accde") 		'مسار الملف  

    For Each tdf In db.TableDefs
        If tdf.Attributes = -2147483645 Then tdf.Attributes = 0		'تغيير قيمة العمود Flags
    Next tdf
    Set db = Nothing
End Sub

4- انقر الزر F5 لتشغيل الإجراء حيث سيقوم بتغيير قيمة العمود Flags إلى القيمة صفر

5- اغلق قاعدة البيانات التي قمنا بتنفيذ الكود فيها (حفظ الكود من عدمه راجع لك)

6- الان إذهب إلى القرص D وقم بفتح الملف (HideTBL V1-64.accde او HideTBL V1-32.accde وفقاً لإصدار أوفيس لديك) لتجد أن الجدول قد ظهر في جزء التنقل

تحياتي

 

 

تم تعديل بواسطه منتصر الانسي
  • Like 1
قام بنشر

جميل جداً هذا التوضيح والطريقة الجميلة أيضاً .. 

16 دقائق مضت, منتصر الانسي said:

 من خلال هذا الاستعلام سنتعرف على أي جدول Type=1 ولايبدأ بالأحرف MSys لتظهر لنا  النتيجة كما بالصورة

 

التعرف على أنه إذا كانت Type = 1 وبالتالي النوع 1 = جدول هي بحد ذاتها أيضاً فكرة جميلة . 

 

اقتباس

مايهمنا هنا هي قيمة العمود الأول Flags بعد ذلك قم بإغلاق التطبيق بدون حفظ اي شيء

وبما أن قيمة الـتعليمة Flags = -2147483645 وهي قيمة ثابتة في اكسيس لجميع إصدارات أوفيس ، وهي للتوضيح الواجب أنه ليس لأوفيس علاقة بفرضها بهذه القيمة . بل يفرضها نظام التشغيل نفسه ( Windows ) على حد علمي .

 

أما بخصوص السطر والفكرة التالية :-

33 دقائق مضت, منتصر الانسي said:
If tdf.Attributes = -2147483645 Then tdf.Attributes = 0	

فهي بحد ذاتها جريئة وإلتفاته فتحت لي أفكاراً جديدة في هذا الخصوص .

 

:wub: فشكراً لك ولكل من ساهم بإثراء الموضوع بمشاركته الجميلة والقيمة كجوهره :wub:

  • Like 1
قام بنشر
في 20‏/11‏/2025 at 19:50, منتصر الانسي said:

إفتح الملف وقم بإنشاء الاستعلام التالي

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

لكن ماذا لو كانت القاعدة غير متاحة بالإضافة 😉 ؟؟؟

قام بنشر

اعجني الموضوع
من اول انشغالي بالاكسيس تيقنت ان الاكسيس من اضغف الحمايات
لكني قكرة بان اسال الذكاء الصناعي
سالت CHATGPT عن فكرة مجنونة لم يفكر بها احد لحماية الجداول
 ادعوا اخواني لتجربة الفكر المقترحة وانا ساجربها معكم مع توفر الوقت لدي
سارفق الاجابة والسؤال الذي سالته
انقر هنا
 

  • Like 2
قام بنشر
56 دقائق مضت, محب العقيدة said:

اعجني الموضوع
من اول انشغالي بالاكسيس تيقنت ان الاكسيس من اضغف الحمايات
لكني قكرة بان اسال الذكاء الصناعي
سالت CHATGPT عن فكرة مجنونة لم يفكر بها احد لحماية الجداول
 ادعوا اخواني لتجربة الفكر المقترحة وانا ساجربها معكم مع توفر الوقت لدي
سارفق الاجابة والسؤال الذي سالته
انقر هنا
 

عجيب هذا الخادم العفريت  😳

قام بنشر
3 ساعات مضت, محب العقيدة said:

ادعوا اخواني لتجربة الفكر المقترحة وانا ساجربها معكم مع توفر الوقت لدي

من واقع التجربة ، ودون أي تردد وبلا أي شك ، فأنا ( أعوذ بالله من كلمة أنا ومن شر نفسي ) والكثيرين نتفق مؤيدين لكلام أساتذتنا ومعلمينا ، وحتى تعليمات مايكروسوفت ، أن آكسيس غير قادر على حماية البيانات وتأمينها .
ومن خلال التجارب المريرة التي مررت بها وفكرت بها ، فإن الحل والسبيل الوحيد لتأمين البيانات سيكون خارج قاعدة البيانات نفسها .

( أو بحماية قاعدة البيانات الخلفية بكلمة مرور محكمة ) - ومع ذلك فالهندسة العكسية قادرة على الوصول إلى كلمة المرور - وبالتالي النجاح تشوبه بعض الشوائب . ولذا ذكرت في جملتي التالية :-

في 20‏/11‏/2025 at 19:33, Foksh said:

2. عند الإغلاق يتم إعادة ربط قاعدة البيانات قبل اغلاقها بقاعدة الجداول الخلفية الوهمية ( التي لا تحتوي على بيانات ) .

 

 

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

قام بنشر
19 ساعات مضت, Foksh said:

لكن ماذا لو كانت القاعدة غير متاحة بالإضافة 😉 ؟؟؟

ماذا تقصد بغير متاحة ؟

- إن كنت تقصد بإنها مؤمنة بكلمة سر فأنت تعلم بأنه يمكن كسر هذا التأمين بسهولة

- وإن كنت تقصد تأمين قاعدة البيانات عن طريق الكود بحيث أننا لن نستطيع فتحها عن طريق مفتاح Shift فيمكننا تنفيذ الاستعلام من أي قاعدة بيانات أخرى

- وإذا تقصد أنك ستقوم بإخفاء قاعدة البيانات هذه للدرجة التي لايمكن أن يصل إليها أحد فأعتقد أن هذا هو أقوى تأمين ولن نحتاج للقلق من الوصول إلى البيانات داخلها

فهل فكرتك هي ضمن هذه الحالات أم أن لديك فكرة أخرى؟

قام بنشر
7 دقائق مضت, منتصر الانسي said:

ماذا تقصد بغير متاحة ؟

 

أنك غير قادر على إضافة الاستعلام لقاعدة البيانات كونها محمية بمفتاح الشيفت + ACCDE .

8 دقائق مضت, منتصر الانسي said:

- وإذا تقصد أنك ستقوم بإخفاء قاعدة البيانات هذه للدرجة التي لايمكن أن يصل إليها أحد فأعتقد أن هذا هو أقوى تأمين ولن نحتاج للقلق من الوصول إلى البيانات داخلها

 

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

 

لكني كنت قد علّقت على موضع الإستعلام ان كانت القاعدة Hide Access + منع مفتاح الشيفت .

قام بنشر
17 دقائق مضت, Foksh said:

أنك غير قادر على إضافة الاستعلام لقاعدة البيانات كونها محمية بمفتاح الشيفت + ACCDE .

بسيطة إستخدم هذا الإستعلام من أي قاعدة بيانات أخرى

SELECT
    MSysObjects.Flags,
    MSysObjects.Name,
    MSysObjects.Type
FROM
    MSysObjects IN 'D:\HideTBL V1-64.accde'
WHERE
    (
        ((MSysObjects.Name) NOT LIKE "MSys*")
        AND ((MSysObjects.Type) = 1)
    );

وذلك على إفتراض أن الملف موجود تحت القرص D مباشرة وإلا قم بتعديل المسار

تحياتي

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information