نرم افزار باز کردن فایل های mdb (رمز دارد) نرم افزار مایکروسافت اکسس Microsoft ACCESS
چگونه مطمئن شویم که نرم افزار Code Protector for Microsoft Access واقعا درست عمل می کند.
یکی از نرم افزار های قدرتمند برای برنامه نویسی پایگاه اطلاعات Access است.
که با بهره گیری از محیط برنامه نویسی VBA و ارتباط با ActiveX ها مانند ocx و dll ها ظرفیتی چندبرابر یافته است.
فایل های دیتابیس روزی با پسوند mdb و mde و شبیه به این در اکسس تولید می شدند این پسوندها امروزه با accdb و accde تولید می شوند.
نخستین سئوالی که به آن پاسخ می دهیم، اینستکه تفاوت های accdb با mdb چیست؟ (که طبیعتا تفاوتهای accde با mde نیز خواهند بود)
الف- پایگاه های داده ACCDB امنیت سطح کاربر را مانند پایگاه داده های MDB پشتیبانی نمی کند اما encryptin در یک پایگاه داده ACCDB قوی تر است.
ب- پایگاه های داده ACCDB پشتیبانی چندین نوع مختلف جدید از انواع داده ها(فیلدها) را پشتیبانی می کند که در MDB خبری از آنها نبود.
مانند: multivalue fields و calculated fields و attachment fields که هر یک از انواع فیلدهای جدید، توانمندی های منحصر به فرد و بسیار خوبی دارند که در برنامه نویسی های نرم افزارهای بسیار قدرتمند کاربردهایی خود را به صورت جدی نشان می دهند. توضیح درباره این انواع جدید داده ها در این فرصت نمی گنجد.
ج- پایگاه های داده ACCDB ماکروهای جدول (Table Macros) را پشتیبانی می کند، که در MDB خبری از آنها نبود.
د- پایگاه های داده ACCDB فرم(novel form) و گزارش(report options)، با امکانات جدیدی مانند پوسته(layouts) و تقویم پنجره(popup calendar) را پشتیبانی می کند.
البته تغییرات دیگری در نحوه بکارگیری برخی امکانات داخلی اکسس بین دو فرمت(مانند Replication و link a table) و نحوه استفاده این پایگاهها توسط نرم افزارهای جانبی(مانند Crystal Reports و SQL Server و SharePoint ) بوجود آمده است، که فرصت پرداختن به آنها نیست، و فقط به آنها اشاره کردیم.
دومین سئوالی که به آن پاسخ می دهیم، اینستکه تفاوت های accdb با accde چیست؟ (که طبیعتا تفاوتهای mdb با mde نیز خواهند بود)
مهمترین تفاوت این دو فایل در عبارت locked-down آنها است(یعنی قفل کردن)
وقتی کدهای برنامه نویسی در accdb یا mdb نوشته می شوند قابل مشاهده هستند ولی وقتی فایل های مذکور کامپایل می شوند و به فرمت کامپایل شده تبدیل می شوند. دیگر محتوای آنها توسط چشم انسان قابل خواندن نیستند.
برای اینکه در ادامه مرتب عبارت های accdb و accde, mdb و mde را تکرار نکنیم از اینجا به بعد در این نوشتار دو فایل accdb و mdb را فایل های نوع B وفایل های accde و mde را فایل های نوع E نامگذاری می کنیم.
دومین تفاوت دو فایل در سرعت اجرای آنها است، فایل های B کند تر از فایل های نوع E اجرا می شوند. که دلیل آن کاملا روشن است. چونکه ابتدا کدهای نوشته شده در فایل های B باید کامپایل شوند و بعد اجرا شوند، در حالیکه فایل های نوع E قبلا کامپایل شده اند.
اما آنچه برای برنامه نویس اهمیت دارد اینستکه کدهای نوشته شده او در امنیت کامل و بدون خطر کرک یا هک منتشر شود.
هک یا کرک توسط افراد ناشناس که در قالب مشتریان و یا مشاوران به نرم افزارها دسترسی پیدا می کنند صورت می گیرد.
در اینجا دو راه برای هک یا کرک نرم افزار وجود دارد.
1- هک توسط افرادی که تسلط کافی به رایانه ندارند:
- معمولا افرادی که تسلط کافی به رایانه ندارند و تعدادشان هم بسیار است تمایل دارند بجای پرداخت وجه نرم افزار راهی برای هک آن پیدا کنند.
- این افراد راه هایی را برای هک نرم افزار بررسی می کنند و تا حدودی در رابطه با هک نرم افزار مورد نظرشان، به مقالاتی که در وب سایت ها وجود دارد مراجعه می کنند، گرچه در این مسیر مهارتهایی را هم کسب می کنند، اما این اطلاعات برای هک نرم افزار معمولا کافی نخواهد بود.
- لزوما هک نرم افزار، تخصصی بسیار بیشتر از آنچه که فردی عادی و بدون تخصص نیاز دارد - احتیاج دارد.
مثلا: در این مسیر، اگر علم هک در ابرها باشد، فرد عادی تنها از اعماق دریا به سطح آب می رسد، و تازه متوجه می شود که باید در مسیری گازی شکل خود را به ابرها برساند. در این مسیر فرد عادی باید وقت بسیار زیادی را برای کسب علوم متعدد رایانه ای سپری کند ؛ او به مرور به این نتیجه می رسد که اگر برای هک نرم افزار به یک رشته تحصیلی در یک دانشگاه توجه می کرد و می توانست مدرک تحصیلی مشابه ای را بگیرد، شاید از کاری که آغاز کرده مقرون به صرفه تر بود.
2- هک توسط افرادی که تسلط کافی به رایانه دارند:
کسانی که تسلط کافی به رایانه دارند و علمشان در این زمینه می تواند بدردبخور باشد، معمولا آنقدر سرشان شلوغ است و آنقدر درگیر پروژه های شخصی خود هستند که نیازی به هک نرم افزارهای دیگران ندارند.
افراد مسلط و دارای دانش کافی رایانه ای معمولا مورد توجه دیگران هستند، و به آنها پروژه هایی سپرده شده است و معمولا در حال انجام پروژه های پر سود هستند. آنها وقت خود را برای هک نرم افزار صرف نمی کنند.
کم ارزشترین کار برای افراد دارای تسلط کافی به رایانه هک نرم افزارها است. - چرا که سود چشمگیری برای آنها نخواهد داشت.
اما نمی توان این امکان را نادیده گرفت که شاید فردی مسلط به علوم رایانه، برای سرگرمی یا به سفارش فردی دیگر، یا انگیزه های منفی (مانند: حسادت و تخریب و تلافی و ... ) دست به هک نرم افزاری بزند.
با این مقدمه به بررسی یکی از روش های رمز گذاری توسط مایکرو سافت خواهیم پرداخت:
سئوال اینست: آیا accde کدهای باینری شده ی accdb است؟
همانطور که از سئوال می توان فهیمد برخلاف آنچه که در مقدمه دیده می شد سئوالی بسیار تخصصی مطرح شده است.
اما زمینه بروز این سئوال چه بوده.
سایتی به نام everythingaccess.com وجود دارد که در آن فردی به نام Wayne Phillips ادعا می کند می تواند کدهای باینری تولید شده در accde را مشاهده کند.
در این سایت بخشی وجود دارد که Database Repair Service for Microsoft® Acces نام دارد.
پس از ورود به این بخش با عبارت Send your corrupt file to one of our expert engineers روبرو می شوید که به معنی "ارسال فایل خراب خود را به یکی از مهندسان متخصص ما (از طریق این وب سایت)" است.
باید اول در وب سایت عضو شوید و بعد وارد شوید بعد از شما فایلی را دریافت می کند یعنی فایل را آپلود می کنید(Access Revival Service - Upload File)، بعد از ارسال برایتان یک کد پیگیری صادر می کند . مثلا:
Your database file has successfully been uploaded. Your Recovery Job ID is #ARW-46348996 Please use the Job ID in all correspondence.
سپس فایل را ظرف 48 ساعت به ایملتون ارسال می کنه.
همچنین بخش دیگری در این سایت وجود دارد که MDE to MDB conversion service and ACCDE to ACCDB conversion service نام دارد.
پس از ورود به این بخش باید فایل کامپایل شده اکسس را که با پسوند accde یا mde هست را آپلود کنید.
و بعد یک توضیح درباره Please explain briefly what the software does, or what it is used for به معنی (لطفا خلاصه توضیح دهید نرم افزار چه می کند، و یا آنچه در آن است چه استفاده ای دارد)
در بخش دوم هم خواسته اگر نسخه قدیمی کامپایل نشده فایل رو دارید ارسال کنید.
گرچه این بخش اخلاقا سعی می کند از دکامپایل(یعنی برگرداندن فایل کامپایل شده به کدهای اصلی نوشته شده توسط برنامه نویس)، برای افرادی که مشکوک به هکر هستند جلوگیری کند، اما با فرض اینکه فردی دارای هوش رفتاری(EQ) بالایی باشد، شاید بتواند از این فیلتر که اطمینان چندانی به آن نیست عبور نماید.
نتیجه اینکار ارسال فایل دکامپایل شده به ایمیل درخواست کننده پس از 48 ساعت خواهد بود.
در این سایت حتی پشتیبانی آنلاین نیز وجود دارد.
حال این سئوال پیش می آید که آیا واقعا کدهای موجود در accdb در accde به کدهای باینری تبدیل می شوند؟
این موضوع را بررسی می کنیم>
ابتدا فایلی به نام accdb و با همین پسوند ایجاد می کنیم.
بلافاصله پس از ورود به اکسس از ایجاد هر گونه جزئیات مانند Table و .... پرهیز می کنیم.
کلید F11 صفحه کلید را می زنیم تا وارد بخش Microsoft Visual Basic for Application شویم.
ر اینجا تنها یک Module درست می کنیم.
و ر آن تنها سه خط زیر را تایپ می کنیم.
Function main()
MsgBox "My Text."
End Function
اکنون فایل را ذخیره می کنیم.
و سپس آنرا به فرمت accde استخراج می کنیم.(اینکار در access2010 به بعد از طریق منوی File و گزینه ی Make ACCDE امکانپذیر است)، فایل استخراج شده را به نام accde.accde نامگذاری می کنیم.
تا اینجا کار روتینی را انجام دادیم که معمولا هر فردی هنگام کامپایل دیتابیس خود انجام می دهد.
ما در حال بررسی ساختار باینری فایل accde هستیم.
هر دو فایل accdb.accdb و accde.accde را کاملا ببندید.
از طریق راست کلیک و گزینه ی ...Open with، و Notepad هر دو فایل را باز کنید.
روی Taskbar ویندوز راست کلیک کنید و گزینه show windows side by side را انتخاب کنید تا هر دو فایل در کنار هم قرار بگیرند.
اگر به بالای عنوان هر دو فایل نگاه کنید نام فایل ها نشان داده شده اند.
اکنون در هر دو فایل عبارت My Text را جستجو می کنیم.
در فایل accdb این عبارت پیدا خواهد شد، اما در فایل accde این عبارت پیدا نمی شود و با پیام ."Cannot find "MyText روبرو خواهیم شد.
(اینکه چرا متن در جای خودش پیدا نشده ممکن است به این دلیل باشد که اکسس محتوای رشته را در بخش هایی از حافظه سازماندهی کرده باشد. و این به استراکچر داخلی مایکروسافت اکسس مربوط می شود.)
اکنون منوی Format را در هر دو Notepad باز کنید و دقت کنید که گزینه Word Wrap تیک داشته باشد.(این گزینه را تیکدار کنید)
اکنون به جستجوی عبارت Module=Module1 بپرازید.
و وقتی این عبارت را پیدا کردید از کلید جهتی پایین استفاده کنید و به پایین بروید تا جایی که این عبارت در هر دو فایل در بالای صفحه Notepad واقع شود.
اکنون با دو متن به شکل زیر روبرو خواهیم بود:
در بررسی این دو فایل درخواهیم یافت که محتوای فایل accde به شدت به کدهای باینری نزدیکتر است. و نمی توان محتوای متنی برنامه نویسی را در آن دید.
این در حالیست که محتوای متن فایل accdb قابل شناسایی تر است.
بخش هایی که قابل شناسایی هستند در متن زیر به رنگ سبز نشان داده شده اند.
پس از دیدن این متن به نظر می رسد گرچه کاری که مهندس Wayne Phillips انجام می دهد بسیار سخت است، اما شدنی هم باید باشد.
فایل accde | فایل accdb |
Module=Module1 [Host Extender Info] [Workspace] |
Module=Module1 [Host Extender Info] [Workspace] [Host Extender Info] [Workspace] |
چگونه مطمئن شویم که نرم افزار Code Protector for Microsoft Access واقعا درست عمل می کند.
مهندس Wayne Phillips در بخشی از وب سایتش چنین ادعایی دارد:
Original Source: (taken from Northwind 2000 Sample database)
Sub FixAllDataAccessPages() ' Subroutine: FixAllDataAccessPages ' Purpose: Goes through all of the data access pages in the current database to: ' * Make sure their connection strings are correct and, ' * If necessary, update the link from the database container to the page. Dim CurrentPath As String ' Path to the current Database Dim FullPath As String ' Path & Name of the current Database Dim DPName As String ' Name of Page including extension Dim DBName As String ' Name of the current database Dim Pgs() As String ' Array to hold the list of pages Dim FullNames() As String ' Array to hold the FULL name of the Page Dim Names() As String ' Array to hold the Page Name Dim NumPages As Integer Dim i As Integer ' Simple Counter Dim WasFixed As Boolean Dim NumErrors As Integer ' Number of errors encountered Dim NumDBCUnfixed As Integer ' Set to the number of unfixed DBC links Const strStatusMsg = "Fixing Page Connections" Const strFixErrPrefix = "There were " Const strFixErrSuffix = " errors fixing your data access page " & _ "connections. Some pages may not function as expected." Const strFixErrTitle = "Cannot Fix Pages!" Const strMDEMsgPrefix = "This file is an MDE and contains " Const strMDEMsgSuffix = " links to data access pages which could " & _ "not be fixed. The page sources have been checked." Const strMDEMsgTitle = "Cannot Fix DBC Links!" ' Check if the database is read only, then we won't be able to fix ' anything, so exit now. If (GetAttr(Application.CurrentProject.FullName) And vbReadOnly) Then Exit Sub FullPath = CurrentDb.Name DBName = Mid(FullPath, InStrRev(FullPath, "\", , vbBinaryCompare) + 1) CurrentPath = Left$(FullPath, InStrRev(FullPath, "\", , vbBinaryCompare) - 1) ' Get the total number of Data Access Pages NumPages = CurrentProject.AllDataAccessPages.Count ' Set the array to hold the page names ReDim Preserve FullNames(NumPages - 1) ReDim Preserve Names(NumPages - 1) ' Get all the Page Names and FullNames (Name with and without paths) For i = 0 To NumPages - 1 FullNames(i) = CurrentProject.AllDataAccessPages(i).FullName Names(i) = CurrentProject.AllDataAccessPages(i).Name Next i Application.Echo False, strStatusMsg NumErrors = 0 NumDBCUnfixed = 0 For i = 0 To NumPages - 1 ' Step through each page in the Array ' Removing the path (preserving the extension if any) DPName = Right(FullNames(i), Len(FullNames(i)) - InStrRev(FullNames(i), _ "\", , vbBinaryCompare)) WasFixed = FixPageConnection(CurrentPath, FullNames(i), DPName, DBName, _ Names(i), NumDBCUnfixed) If Not (WasFixed) Then NumErrors = NumErrors + 1 End If Next If NumErrors <> 0 Then MsgBox strFixErrPrefix & NumErrors & strFixErrSuffix, _ vbCritical, strFixErrTitle End If ' If we weren't able to fix some DBC links, it means we're an MDE with bad links If NumDBCUnfixed <> 0 Then MsgBox strMDEMsgPrefix & NumDBCUnfixed & strMDEMsgSuffix, _ vbCritical, strMDEMsgTitle End If Application.Echo True End Sub
Reverse Engineered Source Code: (from a Northwind 2000 MDE database)
Public Sub FixAllDataAccessPages() Dim i As Integer Dim DPName As String Dim FullPath As String Dim DBName As String Dim CurrentPath As String Dim FullNames() As String Dim NumPages As Integer Dim NumDBCUnfixed As Integer Dim Pgs() As String Dim WasFixed As Boolean Dim Names() As String Dim NumErrors As Integer Const strFixErrPrefix As String = "There were " Const strMDEMsgSuffix As String = " links to data access pages which could " & _ "not be fixed. The page sources have been checked." Const strFixErrTitle As String = "Cannot Fix Pages!" Const strStatusMsg As String = "Fixing Page Connections" Const strMDEMsgPrefix As String = "This file is an MDE and contains " Const strFixErrSuffix As String = " errors fixing your data access page " & _ "connections. Some pages may not function as expected." Const strMDEMsgTitle As String = "Cannot Fix DBC Links!" If GetAttr(CurrentProject.FullName) And 1 Then Exit Sub End If FullPath = CurrentDb.Name DBName = Mid(FullPath, InStrRev(FullPath, "\") + 1) CurrentPath = Left$(FullPath, InStrRev(FullPath, "\") - 1) NumPages = CurrentProject.AllDataAccessPages.Count Redim Preserve FullNames(NumPages - 1) Redim Preserve Names(NumPages - 1) For i = 0 To NumPages - 1 FullNames(i) = CurrentProject.AllDataAccessPages(i).FullName Names(i) = CurrentProject.AllDataAccessPages(i).Name Next i Echo 0, strStatusMsg NumErrors = 0 NumDBCUnfixed = 0 For i = 0 To NumPages - 1 DPName = Right(FullNames(i), Len(FullNames(i)) - InStrRev(FullNames(i), "\")) WasFixed = FixPageConnection(CurrentPath, FullNames(i), DPName, DBName, _ Names(i), NumDBCUnfixed) If Not WasFixed Then NumErrors = NumErrors + 1 End If Next i If NumErrors <> 0 Then MsgBox strFixErrPrefix & NumErrors & strFixErrSuffix, _ vbCritical, strFixErrTitle End If If NumDBCUnfixed <> 0 Then MsgBox strMDEMsgPrefix & NumDBCUnfixed & strMDEMsgSuffix, _ vbCritical, strMDEMsgTitle End If Echo -1, vbNullString End Sub
در این متن دیده می شود که فایل از فرمت mde به mdb تغییر محتوا داده شده. و این متن با آنچه که در دو Notepad دیده شد خیلی متفاوت بود.
آخرین سئوالی را که در این نوشتار پاسخ می دهیم اینست:
آیا برنامه نویسی در محیط vba در Access امن است؟
پاسخ بلی است.
اما توضیحاتی نیز وجود دارد:
اجازه دهید یک مثال بزنم
به یاد دارم که در دوره ای برای کاری مجبور به سوراخ کرن قطعه ای فلزی بودم، به همین منظور به ابزار فروش های شهر و محله زندگی خود می رفتم و از آنها درخواست مته ای را می کردم که بتواند آن قطعه را سوراخ کند، بهترین مته ها را سفارش می دادم، و فروشنده اطمینان می داد که بهتر این مته را پیدا نخواهم کرد. اما وقتی مته را در کارگاه به دلر متصل می کردم و روی قطع می گذاشتم با سرعت کم و یا زیاد، مته به شدت آسیب می دید. به این نتیجه رسیدم که جنس قطعه من باید از آلیاژ خاصی باشد. به همین منظور به مرکز خرید ابزار پایتخت(تهران) رفتم. در آنجا موضوع را با چند نفر در میان گذاشتم و مرا به فروشگاههای مختلفی راهنمایی کردند، اتفاقا مته هایی را که قبلا خریده بودم و آسیب دیده بودند را به همراه داشتم. بالاخره کسی را یافتم که هم با سواد و هم با تجربه و هم توانمند در بحث ورود ابزار از تامین کنندگان قطعات خاص بود. او به من گفت این قطعه از آلیاژ خاصی است و باید مته ای خاص را که او می شناسد بخرم و از آن استفاده کنم. پس از مدتی مته را پیدا کردم، و مشکل ام به راحتی آب خوردن حل شد.
ادامه دارد....
پروژههای منتشر شده برای عموم (Published):
نمایش، ویرایش و چاپ متون فارسی تحت DOS در ویندوز
تبدیل متن فارسی داس به ویندوز اکسلTXLSx
نرم افزار ویرایش DSKKAR00 و DSKWOR00 لیست بیمه
حذف کاراکتر های جدولی از گزارش های تحت DOS
تبدیل متن و جداول گزارش های تحت DOS به Excel
چاپ فرم های ارزشیابی 100 امتیازی کارمندان
حضور و غیاب و موارد انضباطی (ماهناز)
کارنامه ماهانه توصیفی (ماهتوس)
حفاظت از برنامه نویسی در DOS تحت Windows با قفلگذاری روی Flash USB
حفاظت از پروژههای Autoplay Media Studio
حفاظت از پروژههای SetupFactory
حفاظت از پروژههای Multimedia Builder
حفاظت از فایلهای PDF ، بر اساس کدفعالسازی برای هر فایل متناسب با شماره سریال سخت افزاری
تولید فایلهای EXE از فایل های PDF بدون امکان چاپ و ذخیره PDF to EXE (pdf2exe)
حفاظت از فایلهای اکسل Excel، بر اساس تبدیل فایل به EXE
حفاظت از کدهاي برنامه نويسي شده در محيط VBA-Access
تغيير تصوير بک گراند صفحه ورود به Windows 7
بروزآوري آيکن هاي ويندوز Refresh Desktop Icons
فلوچارت و الگوریتم Flowgorithm
تکنیکهای ماکرونویسی در Powerpoint
نرم افزار نمایش محتوای فایل vcf به خصوص فایل های vcf موبایل
تغییر وضوح اسلاید پاورپوینت در استخراج با فرمت تصویر PNG و JPG
دانلود کد PHP نمایش آنلاین کارنامه های PDF
قفل کردن Google Chrome (chromeblocker)