متن اصلی توسط Joker:

اطلاعات فایلهای rar یا zip یا 7zip یا … همگی بر اساس پسورد رمز میشوند نه اینکه پسورد جائی ذخیره بشود ، در واقع پسورد هیچکجا ذخیره نمیشود ، اطلاعات با یک رمز کد میشوند ، به عبارت دیگه کل فایل را شما باید کلمه رمز بدونید :) ، و اگه شما هر رمز دیگه ای هم بزنید اطلاعات دیکود میشوند منتها چون رمزاصلی نبوده اطلاعات اشتباه باز میشوند. میشه گفت رمزنگاری یک طرفه محسوب میشوند – راهی جز روش سعی و خطای پسوردها ندارد.

همونطور که توضیحات بالا مشخص هست کرک کردن پسورد فایل های rar با دستکاری شروط برنامه غیر امکان هست . به عبارت ساده تر امنیت فایل ها winrar صرفاً با یک شرط ساده برای بررسی کلمه عبور تامین نمیشه لذا تنها راه دور زدن کلمه عبور فایل های فشرده rar روش سعی و خطا خواهد بود .

برای روشن تر شدن این قضیه و اینکه با روش های رمزگذاری این چنینی آشنا بشید کد زیر رو آماده کردم ، که در ادامه به شرح قسمت های مختلف اون می پردازیم:

 

Function Encode(FileAddress As String, Pass As String)
On Error Resume Next
Randomize Timer
    StrX = Space(FileLen(FileAddress))
    Open FileAddress For Binary As #1
      Get #1, , StrX
    Close #1

    R = Int(Rnd * 5) + 1
    PublicN = "[" & Chr(5) & R & Chr(5) & "]"
    If Len(Pass) > 1 Then
        For j = 1 To Len(Pass) Step 2
            Part = Mid(Pass, j, 2)
            StrX = Replace(StrX, Chr(R + j), "[" & Chr(2) & Coder(Part) & Chr(2) & "]")
        Next j
    Else
    Exit Function
    End If
    Open FileAddress For Output As #1
        Print #1, StrX
        Print #1, PublicN
    Close #1
End Function
Public Function Coder(St As String) As String
    For i = 1 To Len(St)
        s = s & Chr(Asc(Mid(St, i, 1)) + R)
    Next i
    Coder = s
End Function


-

توضیحات تابع بالا : همونطور که مشاهده می کنید تابع دارای 2 پارامتر ورودی با عنواین : آدرس فایل  و کلمه عبور هست . خوشبختانه در خصوص دسترسی به محتویات متنی فایل ،  VB زیاد به پرو پای ما نمی پیچه . در هر صورت با توجه به آنچه در بالا مشاهده می کنید ، محتویات متنی فایل مورد نظرمون رو استخراج کرده و عملیات رمزگذاری رو شروع می کنیم . به طور دلخواه کلمه عبوری ورودی رو به بخش های دو کاراکتری تقسیم بندی کرده و جایگزین رشته کاراکترهای حاصل از کد اسکی جمع اعداد تصادفی (R) و شمارنده (J) می کنیم . و البته کاراکترهای کلمه عبور رو برای قشنگی هم که شده در بین [+کاراکتر اسکی 2+] قرار میدیم . خوب تمام کارهای گفته شده چه فایده ای دارند ؟ در واقع نکته اصلی تمامی موارد گفته شده در همین یک خط خلاصه میشه . با استفاده از اینکار کلمه عبور رو به نقاط مختلف فایل و به صورت کد شده (استفاده از تابع Coder)  تزریق می کنیم . پس به طور حتم برای بازگرداندن فایل به حالت اولیه فقط و فقط کلمه عبور اولیه قابل استفاده خواهد بود . قطعاً اگر در ذهنتون تابع Decode رو تصور کنین متوجه میشین که در این روش شرط (if) معنا نداره . در صورتی که فکر می کنید عکس این موضوع صحت داره می تونید دست به کار شده و کلمه عبور فایل رمزگذاری شده توسط الگوریتم بالا رو کشف کنید !

در نهایت توجه داشته باشید که روش بالا صرفاً برای بیان کلیات روش ذکر شده ، مورد استفاده قرار گرفت .


 دریافت فایل اجرایی رمزگذاری شده توسط الگوریتم بالا