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

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

قام بنشر

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

قام بنشر
5 دقائق مضت, ابوخليل 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
قام بنشر
15 دقائق مضت, 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

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

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

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

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

سجل حساب جديد

تسجيل دخول

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

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

×
×
  • اضف...

Important Information