কোনও এক্সেল ভিবিএ প্রকল্পে পাসওয়ার্ড ক্র্যাক করার কোনও উপায় আছে কি?


485

আমাকে কিছু এক্সেল 2003 ম্যাক্রো আপডেট করতে বলা হয়েছে, তবে ভিবিএ প্রকল্পগুলি পাসওয়ার্ড দ্বারা সুরক্ষিত রয়েছে এবং মনে হয় নথিপত্রের অভাব আছে ... পাসওয়ার্ডগুলি কেউ জানে না।

কোনও ভিবিএ প্রকল্পে পাসওয়ার্ড মুছে ফেলার বা ক্র্যাক করার কোনও উপায় আছে?


আপনার লিঙ্কের উদাহরণগুলির হিসাবে আপনি কি .xla এর পরিবর্তে একটি .xls সংরক্ষণ করতে পারবেন? এটি কোনও পার্থক্য তৈরি করবে কিনা তা নিশ্চিত নয়।
বি হার্ট

4
জেনে রাখা ভাল: xlsb পাসওয়ার্ড ক্র্যাকিং কৌশলগুলির বিরুদ্ধে শক্ত
Qbik

19
@ ফানডাঙ্গো 68 এই প্রশ্নটি বহু বছর আগে মেটা নিয়ে আলোচনা হয়েছিল । টিএলডিআর: এসও সম্পর্কিত প্রচুর প্রশ্ন (বেশিরভাগ?) খারাপ অভিনেতারা আপত্তিজনকভাবে ব্যবহার করতে পারেন, তবে অন্যায়ের কোনও স্পষ্ট প্রমাণ না পাওয়া পর্যন্ত আমরা সৎ বিশ্বাস গ্রহণ করি। ভিবিএ পাসওয়ার্ড ক্র্যাক করার জন্য বৈধভাবে আইনী এবং নৈতিকতার প্রচুর কারণ রয়েছে। অধিকন্তু, বর্তমান সিস্টেমগুলির দুর্বলতাগুলি নিয়ে আলোচনা শেষ পর্যন্ত ভবিষ্যতে আরও ভাল সুরক্ষায় অবদান রাখে এবং মানুষ এখন অনিরাপদ সিস্টেমগুলিতে অন্ধভাবে নির্ভর করা থেকে নিরুৎসাহিত করে।
jmbpiano

উত্তর:


698

আপনি এই সরাসরি VBAপদ্ধতির চেষ্টা করতে পারেন যার জন্য এইচএক্স সম্পাদনা দরকার নেই। এটি কোনও ফাইল (* .xls, * .xlsm, * .xlam ...) এর জন্য কাজ করবে।

পরীক্ষিত এবং এতে কাজ করে:

এক্সেল 2007
এক্সেল 2010
এক্সেল 2013 - 32 বিট সংস্করণ
এক্সেল 2016 - 32 বিট সংস্করণ

64 বিট সংস্করণ খুঁজছেন? এই উত্তর দেখুন

কিভাবে এটা কাজ করে

এটি কীভাবে কাজ করে তা ব্যাখ্যা করার জন্য আমি যথাসাধ্য চেষ্টা করব - দয়া করে আমার ইংরেজিটি ক্ষমা করুন।

  1. পাসওয়ার্ড ডায়ালগ বাক্স তৈরি করতে VBE একটি সিস্টেম ফাংশন কল করবে।
  2. যদি ব্যবহারকারী সঠিক পাসওয়ার্ড প্রবেশ করে ওকে ক্লিক করে, তবে এই ফাংশনটি ফিরে আসে 1. যদি ব্যবহারকারী ভুল পাসওয়ার্ড প্রবেশ করে বা বাতিল ক্লিক করুন, এই ফাংশনটি 0 ফিরে আসে।
  3. ডায়লগ বাক্সটি বন্ধ হওয়ার পরে, ভিবিই সিস্টেম ফাংশনটির ফিরে আসা মানটি পরীক্ষা করে
  4. যদি এই মানটি 1 হয়, তবে ভিবিই "ভাববে" যে পাসওয়ার্ডটি সঠিক, তাই লক করা ভিবিএ প্রকল্পটি খোলা হবে।
  5. নীচের কোডটি একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন দিয়ে পাসওয়ার্ড ডায়লগ প্রদর্শন করতে ব্যবহৃত মূল ফাংশনের স্মৃতিটিকে অদলবদল করে যা ডাকা হওয়ার সময় সর্বদা 1 ফিরে আসবে।

কোড ব্যবহার করে

প্রথমে আপনার ফাইলগুলি ব্যাকআপ করুন!

  1. আপনার লক করা ভিবিএ প্রকল্পগুলি ধারণ করে এমন ফাইল (গুলি) খুলুন
  2. একটি নতুন এক্সএলএসএম ফাইল তৈরি করুন এবং মডিউল 1 এ এই কোডটি সংরক্ষণ করুন

    code credited to Siwtom (nick name), a Vietnamese developer

    Option Explicit
    
    Private Const PAGE_EXECUTE_READWRITE = &H40
    
    Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
            (Destination As Long, Source As Long, ByVal Length As Long)
    
    Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Long, _
            ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long
    
    Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long
    
    Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _
            ByVal lpProcName As String) As Long
    
    Private Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As Long, _
            ByVal pTemplateName As Long, ByVal hWndParent As Long, _
            ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer
    
    Dim HookBytes(0 To 5) As Byte
    Dim OriginBytes(0 To 5) As Byte
    Dim pFunc As Long
    Dim Flag As Boolean
    
    Private Function GetPtr(ByVal Value As Long) As Long
        GetPtr = Value
    End Function
    
    Public Sub RecoverBytes()
        If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6
    End Sub
    
    Public Function Hook() As Boolean
        Dim TmpBytes(0 To 5) As Byte
        Dim p As Long
        Dim OriginProtect As Long
    
        Hook = False
    
        pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")
    
    
        If VirtualProtect(ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then
    
            MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6
            If TmpBytes(0) <> &H68 Then
    
                MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6
    
                p = GetPtr(AddressOf MyDialogBoxParam)
    
                HookBytes(0) = &H68
                MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4
                HookBytes(5) = &HC3
    
                MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6
                Flag = True
                Hook = True
            End If
        End If
    End Function
    
    Private Function MyDialogBoxParam(ByVal hInstance As Long, _
            ByVal pTemplateName As Long, ByVal hWndParent As Long, _
            ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer
        If pTemplateName = 4070 Then
            MyDialogBoxParam = 1
        Else
            RecoverBytes
            MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _
                               hWndParent, lpDialogFunc, dwInitParam)
            Hook
        End If
    End Function
    
  3. এই কোডটি মডিউল 1 এ উপরের কোডের নীচে আটকান এবং এটি চালান

    Sub unprotected()
        If Hook Then
            MsgBox "VBA Project is unprotected!", vbInformation, "*****"
        End If
    End Sub
    
  4. আপনার ভিবিএ প্রকল্পগুলিতে ফিরে আসুন এবং উপভোগ করুন।


4
@ ক্রিস আপনি একদম ঠিক আছেন কারণ উইন্ডোজ এপিআই ফাংশনগুলি এই কোডটিতে 32 টি জয়ের জন্য সংজ্ঞায়িত করা হয়েছে।
Thanc থানহ এনগুইন

8
এটি কীভাবে কাজ করছে তার কিছু ব্যাখ্যা খুব সুন্দর হবে।
ডেনিস জি

20
এখন একমাত্র প্রশ্ন বাকি (এই চিত্তাকর্ষক পদ্ধতিটি পুরোপুরি কাজ করে দেখার পরে), আমি কীভাবে আমার ভিবিএ প্রকল্পটিকে অন্যদের যাতে এই হ্যাক ব্যবহার করা থেকে বিরত রাখতে সক্ষম করে তা আরও শক্তিশালী করে তুলতে পারি :)
ইরানজি

6
এই কোডটি ভিবিএ কোডটি আনলক করতে পুরোপুরি কাজ করে যদিও প্রতিবার আমি এটি ব্যবহার করেছি এটি আমাকে অন্য পাসওয়ার্ড দিয়ে প্রকল্পটি পুনরায় সুরক্ষা দিতে বাধা দেয়, অন্য কারও কি এই সমস্যা হয়েছে?
ম্যাথু বন্ড

2
আমি এটি এক্সিল ফাইলে ভিবিএ প্রকল্পকে দূষিত করে ফেলেছি তাই আমাকে সমস্ত মডিউল / শ্রেণি রফতানি করতে হবে, তারপরে ফাইলটিকে এক্সএলএক্সএক্স (নন-ম্যাক্রো) হিসাবে সংরক্ষণ করতে হবে, তারপরে ফাইলটি (স্টুপিড এক্সেল) বন্ধ করুন, তারপরে পুনরায় খুলুন, তারপরে ক্লাস ফাইলগুলি থেকে মডিউল এবং কপির কোড আমদানি করুন। এই মুহুর্তে, আমি ভিবিএ প্রকল্পে আমার নিজের পাসওয়ার্ড সহ ফাইলকে এক্সএলএসএম হিসাবে সংরক্ষণ করতে পারি।
বিএইচ

217

হ্যাঁ, যতক্ষণ আপনি একটি .xlsফর্ম্যাট স্প্রেডশিট ব্যবহার করছেন (2003 পর্যন্ত এক্সেলের জন্য ডিফল্ট)। এক্সেল 2007 এর পরে, ডিফল্টটি হ'ল .xlsxএটি মোটামুটি সুরক্ষিত ফর্ম্যাট এবং এই পদ্ধতিটি কার্যকর হবে না।

ট্রেব যেমন বলেছেন, এটি একটি সহজ তুলনা। একটি পদ্ধতি হ'ল একটি হেক্স সম্পাদক ব্যবহার করে ফাইলের পাসওয়ার্ড এন্ট্রি সরিয়ে আনা ( উইন্ডোজের জন্য হেক্স সম্পাদকরা দেখুন )। ধাপে ধাপে উদাহরণ:

  1. একটি নতুন সাধারণ এক্সেল ফাইল তৈরি করুন।
  2. ভিবিএ অংশে একটি সাধারণ পাসওয়ার্ড সেট করুন (বলুন - 1234)।
  3. ফাইল এবং সংরক্ষণ করে প্রস্থান করুন। তারপরে ফাইলের আকারটি যাচাই করুন - স্টিওববের গ্যাচা দেখুন
  4. আপনি সবেমাত্র একটি হেক্স সম্পাদক দিয়ে তৈরি ফাইলটি খুলুন।
  5. নিম্নলিখিত কীগুলি দিয়ে শুরু করা লাইনগুলি অনুলিপি করুন:

    CMG=....
    DPB=...
    GC=...
    
  6. প্রথমে আপনি যে ভিউবিএ পাসওয়ার্ডটি জানেন না সেই এক্সেল ফাইলটি ব্যাকআপ করুন, তারপরে এটি আপনার হেক্স সম্পাদকের সাথে খুলুন এবং ডামি ফাইল থেকে উপরের অনুলিপি করা লাইনগুলি আটকে দিন।

  7. এক্সেল ফাইলটি সংরক্ষণ করুন এবং প্রস্থান করুন।
  8. এখন, আপনাকে ভিবিএ কোডটি দেখতে হবে এমন এক্সেল ফাইলটি খুলুন the ভিবিএ কোডটির পাসওয়ার্ডটি কেবল 1234 হবে (উদাহরণ হিসাবে আমি এখানে দেখছি)।

আপনার যদি এক্সেল 2007 বা 2010 এর সাথে কাজ করার দরকার হয় তবে নীচে আরও কয়েকটি উত্তর রয়েছে যা বিশেষত এগুলি সহায়তা করতে পারে: 1 , 2 , 3

ফেব্রুয়ারী 2015 সম্পাদনা করুন : খুব আশাব্যঞ্জক বলে মনে হচ্ছে এমন আরও একটি পদ্ধতির জন্য, Thanc থানহ এনগুইনের এই নতুন উত্তরটি দেখুন ।


সিএমজি = দিয়ে শুরু হওয়া লাইন না থাকলে কী হবে ...?
সিস্টেমেভিচ

1
ফাঁকা এক্সেল ফাইলে, না লকডটি? ফাঁকা ফাইলের ফাইলের আকার পরীক্ষা করুন। যদি এটি লক করা ফাইল হয় তবে আপনার ব্যাকআপটি নিরাপদ রয়েছে তা নিশ্চিত করুন, তবে অন্য দুটি লাইন পরিবর্তন করার চেষ্টা করুন। আপনি কি নিশ্চিত যে এটি ফাইল এনক্রিপ্ট হয়েছে?
কলিন পিকার্ড

6
এক্সেল 2007 পাসওয়ার্ড সুরক্ষা (এবং ফাইল ফর্ম্যাট) এক্সেল 2003 এর থেকে একেবারে আলাদা। আমি নীচে আমার উত্তরে এ সম্পর্কে কিছু স্পেসিফিকেশন অন্তর্ভুক্ত করেছি। আমার মতে, এক্সেল 2007 ফাইলের পাসওয়ার্ড সুরক্ষিত বিকল্পটি মাইক্রোসফ্ট অফিসের ইতিহাসে প্রথমবারের মতো যে তারা যুক্তিসঙ্গতভাবে নিরাপদ ফাইল তৈরি করেছে।
স্টিভবব

1
আমি এক্সেল 2016 নতুন ফাইলে ভিবিএ পাসওয়ার্ড সেট করতে সক্ষম হইনি। কেউ কি সহজেই 1234 এর সাথে প্রতিস্থাপন করতে এইচএক্স ভাগ করে নিতে পারেন? নাকি এটি মেশিন থেকে মেশিনে পরিবর্তিত হতে পারে?
মেসকালিটো

1
এই পদ্ধতিটি আমার জন্য .xlsm ফাইলে কাজ করেছিল। আমি এটি একটি এক্সএলএস হিসাবে সংরক্ষণ করেছি, এটি করেছি এবং তারপরে এটি আবার। Xlsm এ রূপান্তরিত করেছি। এটি লক্ষ করা উচিত যে যদি নতুন CMG...স্ট্রিংটি মূলের চেয়ে দীর্ঘ হয় তবে আপনি নিরাপদে ফাইলটির দৈর্ঘ্য বাড়াতে পারবেন ।
ড্রিউ চ্যাপিন

173

এই পদ্ধতিটিকে এক্সেলের 64৪-বিট সংস্করণ দিয়ে কাজ করার অনুমতি দেওয়ার জন্য আমি থানহ এনগুইনের দুর্দান্ত উত্তর তৈরি করেছি। আমি এক্সেল 2010 64-বিট 64-বিট উইন্ডোজ 7 এ চালাচ্ছি।

  1. আপনার লক করা ভিবিএ প্রকল্পগুলি ধারণ করে এমন ফাইল (গুলি) খুলুন।
  2. একটি নতুন এক্সএলএসএম ফাইল তৈরি করুন এবং মডিউল 1 এ এই কোডটি সংরক্ষণ করুন

    Option Explicit
    
    Private Const PAGE_EXECUTE_READWRITE = &H40
    
    Private Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As LongPtr, Source As LongPtr, ByVal Length As LongPtr)
    
    Private Declare PtrSafe Function VirtualProtect Lib "kernel32" (lpAddress As LongPtr, _
    ByVal dwSize As LongPtr, ByVal flNewProtect As LongPtr, lpflOldProtect As LongPtr) As LongPtr
    
    Private Declare PtrSafe Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As LongPtr
    
    Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongPtr, _
    ByVal lpProcName As String) As LongPtr
    
    Private Declare PtrSafe Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
    Dim HookBytes(0 To 5) As Byte
    Dim OriginBytes(0 To 5) As Byte
    Dim pFunc As LongPtr
    Dim Flag As Boolean
    
    Private Function GetPtr(ByVal Value As LongPtr) As LongPtr
        GetPtr = Value
    End Function
    
    Public Sub RecoverBytes()
        If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6
    End Sub
    
    Public Function Hook() As Boolean
        Dim TmpBytes(0 To 5) As Byte
        Dim p As LongPtr
        Dim OriginProtect As LongPtr
    
        Hook = False
    
        pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")
    
    
        If VirtualProtect(ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then
    
            MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6
            If TmpBytes(0) <> &H68 Then
    
                MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6
    
                p = GetPtr(AddressOf MyDialogBoxParam)
    
                HookBytes(0) = &H68
                MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4
                HookBytes(5) = &HC3
    
                MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6
                Flag = True
                Hook = True
            End If
        End If
    End Function
    
    Private Function MyDialogBoxParam(ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
        If pTemplateName = 4070 Then
            MyDialogBoxParam = 1
        Else
            RecoverBytes
            MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _
                       hWndParent, lpDialogFunc, dwInitParam)
            Hook
        End If
    End Function
    
  3. এই কোডটি মডিউল 2আটকান এবং এটি চালান

    Sub unprotected()
        If Hook Then
            MsgBox "VBA Project is unprotected!", vbInformation, "*****"
        End If
    End Sub
    

অস্বীকৃতি এটি আমার পক্ষে কাজ করেছে এবং আমি আশা করি এটি কারওর পক্ষে সহায়তা করবে বলে এখানে এটি নথিভুক্ত করেছি। আমি এটি পুরোপুরি পরীক্ষা করে দেখিনি । এই বিকল্পটি নিয়ে এগিয়ে যাওয়ার আগে দয়া করে সমস্ত খোলা ফাইলগুলি সংরক্ষণ করার বিষয়ে নিশ্চিত হন।


1
আমি নিশ্চিত না কেন তবে আমি যখন এটি 365 এমএসপি 64৪-বিট এক্সেল ক্র্যাশ হয়ে এক্সেলে চালিত করি তখন এটি ফাইলগুলি বন্ধ করে দেয় এবং যখন আমি এটি পুনরায় চালু করি তখন পাসওয়ার্ডটি এখনও সেখানে থাকে।
ইওরবাথ

প্রসঙ্গ মেনুতে বিকল্পগুলি ধূসর হয়ে গেছে তাই আপনি মডিউলটি তৈরি করতে পারবেন না বলে এটি আর এক্সেলে করা যাবে না।
Thanos.a

170

আকারের সমস্যা ছাড়াই অন্য একটি (কিছুটা সহজ) সমাধান রয়েছে। আমি আজ এই পদ্ধতির ব্যবহার করেছি (এক্সেল 2007 ব্যবহার করে 2003 এর একটি এক্সএলএস ফাইল) এবং সফল হয়েছি।

  1. এক্সএলএস ফাইলটি ব্যাকআপ করুন
  2. এইচএক্স সম্পাদকটিতে ফাইলটি খুলুন এবং DPB=...অংশটি সন্ধান করুন
  3. DPB=...স্ট্রিং এ পরিবর্তন করুনDPx=...
  4. এক্সএলে এক্সএলএস ফাইলটি খুলুন
  5. ভিবিএ সম্পাদক খুলুন ( ALT+ F11)
  6. যাদু: এক্সেলটি একটি অবৈধ কী (ডিপিএক্স) আবিষ্কার করে এবং আপনি প্রকল্পটি লোড করা চালিয়ে যেতে চান কিনা তা জিজ্ঞাসা করে (মূলত সুরক্ষা উপেক্ষা করে)
  7. আপনি পাসওয়ার্ড ওভাররাইট করতে সক্ষম হবেন, তাই এটিকে এমন কোনও কিছুতে পরিবর্তন করুন যা আপনি মনে রাখতে পারেন
  8. এক্সএলএস ফাইল সংরক্ষণ করুন *
  9. ডকুমেন্টটি বন্ধ এবং পুনরায় খুলুন এবং আপনার ভিবিএ যাদুতে কাজ করুন!

* দ্রষ্টব্য: নিশ্চিত হয়ে নিন যে আপনি পাসওয়ার্ডটি একটি নতুন মূল্যে পরিবর্তন করেছেন, অন্যথায় আপনি স্প্রেডশিট এক্সেলটি খোলার পরে ত্রুটিগুলি (অপ্রত্যাশিত ত্রুটি) প্রতিবেদন করবেন, তারপরে আপনি ভিবিএ মডিউলগুলির তালিকাটি অ্যাক্সেস করার পরে আপনি এখন এর নামগুলি দেখতে পাবেন ফর্ম / কোড / ইত্যাদি খোলার চেষ্টা করার সময় উত্স মডিউলগুলি কিন্তু অন্য একটি ত্রুটি গ্রহণ করে। এর প্রতিকারের জন্য, ভিবিএ প্রকল্পের বৈশিষ্ট্যগুলিতে ফিরে যান এবং পাসওয়ার্ডটিকে একটি নতুন মানতে সেট করুন। এক্সেল ডকুমেন্টটি সংরক্ষণ করুন এবং পুনরায় খুলুন এবং আপনার যাওয়া ভাল হবে!


3
দুর্ভাগ্যক্রমে, এটি আমার জন্য ম্যাক 2011 v14.2.5 এর জন্য এক্সেলের সাথে কাজ করে নি। আমি ফাইলটি মেরামত করার জন্য বিকল্প পেয়েছি, পাসওয়ার্ডটি পুনরায় সেট করার জন্য নয়, এবং প্রভাবটি সমস্ত ভিবিএ স্ক্রিপ্টগুলি হারাচ্ছে।
জো ক্যারল

নিখুঁত সমাধান - আমি এইচএক্সডি হেক্স সম্পাদক
ক্রিস ডাব্লু

4
আমি কেবল এটি চেষ্টা করেছি (.xls, এক্সেল 2007) এবং এটি কার্যকর হয়নি। ফলাফলটি হ'ল: মডিউলগুলি দৃশ্যমান, কোডটি কার্যত কার্যকর বলে মনে হয় না, তবে মডিউলটি খোলার সময় এটি অপ্রত্যাশিত ত্রুটি (40230) বলে
কেকুসেমু

2
এখানে একই ত্রুটি (এক্সেল 2010) - তবে আমি বুঝতে পেরেছি যে আমি পিটার থেকে 'একটি নতুন পাসওয়ার্ড সেট করেছি এবং সংরক্ষণ / পুনরায় খুলি' (পদক্ষেপ 7-9) এড়িয়ে গেছি।
ওভেন বি

+1 এই পদ্ধতিটি আমাদের দুর্বল বিকাশিত অ্যাক্সেস (.mdb) ফাইলেও কাজ করেছে! এখন আমরা জিনিসটি আরও ভাল করতে পারি, এর জন্য ধন্যবাদ!
এর গ্যাব্রিয়েল ডরোনিলা

65

কলিন পিকার্ডের একটি দুর্দান্ত উত্তর রয়েছে তবে এটির সাথে একটি 'নজর রাখুন' রয়েছে। উদাহরণ রয়েছে (এখনও আমি কারণটি বের করতে পারি নি) যেখানে "সিএমজি = ........ জিসি = ...." ফাইলের মোট দৈর্ঘ্য একটি এক্সেল ফাইল থেকে আলাদা পরবর্তী. কিছু ক্ষেত্রে, এই এন্ট্রিটি 137 বাইট হবে এবং অন্যদের মধ্যে এটি 143 বাইট হবে। 137 বাইটের দৈর্ঘ্যটি বিজোড় এবং এটি '1234' পাসওয়ার্ড দিয়ে আপনার ফাইলটি তৈরি করার সময় যদি ঘটে থাকে তবে কেবল অন্য একটি ফাইল তৈরি করুন এবং এটি 143 বাইট দৈর্ঘ্যে লাফিয়ে উঠতে হবে।

আপনি যদি ফাইলটিতে ভুল নম্বর বাইট করার চেষ্টা করেন, আপনি যখন এক্সেলের সাহায্যে ফাইলটি খোলার চেষ্টা করবেন তখন আপনি আপনার ভিবিএ প্রকল্পটি হারাবেন।

সম্পাদনা

এটি এক্সেল 2007/2010 ফাইলগুলির জন্য বৈধ নয়। স্ট্যান্ডার্ড .xlsx ফাইল ফর্ম্যাটটি আসলে একটি .zip ফাইল যা ফরম্যাট, লেআউট, বিষয়বস্তু, ইত্যাদিসহ অসংখ্য সাব-ফোল্ডারগুলি এক্সএমএল ডেটা হিসাবে সঞ্চিত। একটি অরক্ষিত এক্সেল 2007 ফাইলের জন্য, আপনি কেবল .xlsx এক্সটেনশনটি .zip এ পরিবর্তন করতে পারেন, তারপরে জিপ ফাইলটি খুলুন এবং সমস্ত এক্সএমএল ডেটা সন্ধান করুন। এটা খুব সোজা।

তবে, আপনি যখন পাসওয়ার্ডটি একটি এক্সেল 2007 ফাইল সুরক্ষিত করেন তখন পুরো .zip (.xlsx) ফাইলটি আরএসএ এনক্রিপশন ব্যবহার করে আসলে এনক্রিপ্ট করা হয়। এক্সটেনশনটি .zip এবং ফাইলের সামগ্রীগুলিতে ব্রাউজ করা এখন আর সম্ভব নয়।


তারপরে আপনাকে স্ট্যান্ডার্ড জিপ হ্যাকিং সরঞ্জামগুলি ব্যবহার করতে হবে। এটি আর "কীভাবে কোনও এক্সেল ফাইলটিকে ব্যাক করব" সমস্যাটি আর নেই।
বেনামে টাইপ

3
@ নামবিহীন প্রকার: আমি মনে করি একটি জিপ ক্র্যাকিংয়ের সরঞ্জাম সাহায্য করবে না। আমি যেমন স্টিওববকে বুঝতে পারি, এটি জিপ ফাইলটিতে এনক্রিপ্ট করা ফাইলের এন্ট্রিগুলি নয়, পুরো জিপ ফাইলটি নিজেই, যাতে শিরোনাম এবং কেন্দ্রীয় ডিরেক্টরি অন্তর্ভুক্ত করা উচিত।
ট্রেব

2
কেবল কৌতূহল: আমি যখন কেবল একটি পাসওয়ার্ড (প্রতিসামগ্রী) প্রবেশ করি তখন এটি আরএসএ কীভাবে হতে পারে?
kizzx2

আপনি যে ফাইলটিতে যেতে চান তার সংক্ষিপ্ত কীগুলি কীভাবে হবে? আপনি 137 আছে এমনটি না পাওয়া পর্যন্ত কেবল ভিবিএ ডক্স তৈরি করা চালিয়ে যান?
একমাত্র

1
আপনি কি ভিবিএ প্রকল্পটি লক করার সময় নিশ্চিত যে পুরো জিপফিলটি এনক্রিপ্ট হয়েছে? আমি এখনও জিপ ফাইলটি খুলতে পারি এবং ফাইলের কাঠামোটি দেখতে পারি .... এবং সাবফোল্ডার xl v vbaProject.bin ফাইলটি ধারণ করে যা পরিচিত "সিএমজি = ... জিসি =" হ্যাশিং ব্লক রয়েছে।
নাইজেল হেফারনন

63

একটি .xlsmবা .dotmফাইল টাইপের জন্য আপনাকে এটি কিছুটা ভিন্ন উপায়ে করতে হবে।

  1. .xlsmফাইলটির এক্সটেনশন এতে পরিবর্তন করুন .zip
  2. .Zip ফাইলটি খুলুন (উইনজিপ বা উইনআর ইত্যাদি সহ) এবং এক্সএল ফোল্ডারে যান।
  3. vbaProject.binফাইলটি বের করুন এবং একটি হেক্স সম্পাদক এ খুলুন (আমি HxD ব্যবহার করি , এটি সম্পূর্ণ নিখরচায় এবং হালকা ওজনের weight )
  4. অনুসন্ধান DPBএবং প্রতিস্থাপন DPxএবং ফাইল সংরক্ষণ করুন।
  5. পুরানো vbaProject.binফাইলটি জিপ করা ফাইলটিতে এই নতুন দিয়ে প্রতিস্থাপন করুন।
  6. ফাইল এক্সটেনশানটি এতে ফিরে যান .xlsm
  7. ওয়ার্কবুকটি সতর্কতা বার্তাগুলির মধ্য দিয়ে যান।
  8. এক্সেলের ভিতরে ভিজ্যুয়াল বেসিক খুলুন।
  9. সরঞ্জামসমূহ> ভিবিএপ্রজেক্ট সম্পত্তি> সুরক্ষা ট্যাবে যান।
  10. একটি নতুন পাসওয়ার্ড রাখুন এবং .xlsmফাইলটি সংরক্ষণ করুন।
  11. বন্ধ করুন এবং আবার খুলুন এবং আপনার নতুন পাসওয়ার্ড কাজ করবে।

8
এক্সেল 2016 এ কাজ করেছেন, উইন্ডোজ 10 64 বিট। (এক্সএলএসএম ফাইল)
লিমানাথহক

3
ওয়ার্ড 2016 এ কাজ করেছেন, উইন্ডোজ 10 64 বিট (ডটম ফাইল)
এনবাজানকা

7
দুর্দান্ত সমাধান, এক্সেল 2013 সালে আমার জন্য কাজ করেছে 64 বিট bit আপনি .zipযদি 7-জিপ ইনস্টল করে থাকেন তবে ফাইল এক্সটেনশানগুলি পরিবর্তন করা এড়িয়ে যেতে পারেন । এই ক্ষেত্রে, আপনি কেবল .xlsmফাইলটিতে ডান-ক্লিক করতে পারেন এবং "7-জিপ -> সংরক্ষণাগার খুলুন"
এনকাটসর

ওয়ার্ড 2013, উইন 7 এক্স 64 নিয়ে কাজ করে। (এটি অত্যন্ত দুঃখজনক, কোডটি কিছুটা সুরক্ষিত বলে বিশ্বাস করার জন্য এত সহজে চালিত হওয়া)।
বেরি সাকালা

1
পূর্ববর্তী সমাধানগুলি এবং পরীক্ষার এবং ত্রুটির সম্মিলন
ম্যাট

35

এটি উল্লেখ করার মতো যে যদি আপনার কাছে এক্সেল 2007 (xlsm) ফাইল থাকে তবে আপনি কেবল এটি একটি এক্সেল 2003 (এক্সএলএস) ফাইল হিসাবে সংরক্ষণ করতে পারেন এবং অন্যান্য উত্তরে বর্ণিত পদ্ধতিগুলি ব্যবহার করতে পারেন।


4
এটি সত্য নয়, আমি ফাইলগুলির সাথে কাজ করেছি যার জন্য এক্সএলএসএম থেকে এক্সএলএস / এক্সএল রূপান্তর করা অসম্ভব ছিল, এক্সেল 2007 এবং 2010 প্রতিবার ক্র্যাশ হয়ে গেছে, আমি এক দোষের বার্তা থেকে বিভিন্ন দৃষ্টান্ত চেষ্টা করেছি - কোড উইজেক্টটুক: c0000005 প্রিজেসুনিসি উইকিউক্কু: 005d211d
কিবিক

4
হ্যাঁ, আপনি এটা করতে পারেন. অনেকবার করেছি। যদি শীটগুলিতে এমন কিছু থাকে যা প্রয়োজনীয় এবং যা পুরানো সংস্করণে স্থানান্তরিত হয়নি আমি এটি করি: 1..xlsm কে 2..xls 3.রূপান্তর করুন .xls কোডটি .xlsm .xlsx রূপান্তর করুন 4.। মডিউল থেকে .xls এ কোডটি রাখুন। xlsx এবং .xlsm হিসাবে সেভ করুন
জাইজিডি

এটি xlsm কে উত্তর হিসাবে রূপান্তরিত করার পরে কাজ করে।
পুরস

31

আমার পালা দিয়ে, এটি কায়েবী ৯৯ এর দুর্দান্ত উত্তরের উপর ভিত্তি করে তৈরি করা হয়েছে যা অফিস থানার এনজিও এবং এমডি both64 সংস্করণের সাথে এই পদ্ধতিটিকে কাজ করার অনুমতি দেওয়ার জন্য থানহ এনগুইনের দুর্দান্ত উত্তরটির উপর নির্মিত হয়েছে।

কী পরিবর্তিত হয়েছে তার একটি সংক্ষিপ্ত বিবরণ, আমরা ধাক্কা / ret এড়াতে যা 32 বিট ঠিকানার মধ্যে সীমাবদ্ধ এবং এটি মুভি / জেএমপি রেজি দ্বারা প্রতিস্থাপন করি।

পরীক্ষিত এবং কাজ করে

শব্দ / এক্সেল 2016 - 32 বিট সংস্করণ
শব্দ / এক্সেল 2016 - 64 বিট সংস্করণ

কিভাবে এটা কাজ করে

  1. আপনার লক করা ভিবিএ প্রকল্পগুলি ধারণ করে এমন ফাইল (গুলি) খুলুন।
  2. উপরের মত একই ধরণের একটি নতুন ফাইল তৈরি করুন এবং মডিউল 1 এ এই কোডটি সংরক্ষণ করুন

    Option Explicit
    
    Private Const PAGE_EXECUTE_READWRITE = &H40
    
    Private Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As LongPtr, Source As LongPtr, ByVal Length As LongPtr)
    
    Private Declare PtrSafe Function VirtualProtect Lib "kernel32" (lpAddress As LongPtr, _
    ByVal dwSize As LongPtr, ByVal flNewProtect As LongPtr, lpflOldProtect As LongPtr) As LongPtr
    
    Private Declare PtrSafe Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As LongPtr
    
    Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongPtr, _
    ByVal lpProcName As String) As LongPtr
    
    Private Declare PtrSafe Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
    Dim HookBytes(0 To 11) As Byte
    Dim OriginBytes(0 To 11) As Byte
    Dim pFunc As LongPtr
    Dim Flag As Boolean
    
    Private Function GetPtr(ByVal Value As LongPtr) As LongPtr
        GetPtr = Value
    End Function
    
    Public Sub RecoverBytes()
        If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 12
    End Sub
    
    Public Function Hook() As Boolean
        Dim TmpBytes(0 To 11) As Byte
        Dim p As LongPtr, osi As Byte
        Dim OriginProtect As LongPtr
    
        Hook = False
    
        #If Win64 Then
            osi = 1
        #Else
            osi = 0
        #End If
    
        pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")
    
        If VirtualProtect(ByVal pFunc, 12, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then
    
            MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, osi+1
            If TmpBytes(osi) <> &HB8 Then
    
                MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 12
    
                p = GetPtr(AddressOf MyDialogBoxParam)
    
                If osi Then HookBytes(0) = &H48
                HookBytes(osi) = &HB8
                osi = osi + 1
                MoveMemory ByVal VarPtr(HookBytes(osi)), ByVal VarPtr(p), 4 * osi
                HookBytes(osi + 4 * osi) = &HFF
                HookBytes(osi + 4 * osi + 1) = &HE0
    
                MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 12
                Flag = True
                Hook = True
            End If
        End If
    End Function
    
    Private Function MyDialogBoxParam(ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
        If pTemplateName = 4070 Then
            MyDialogBoxParam = 1
        Else
            RecoverBytes
            MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _
                       hWndParent, lpDialogFunc, dwInitParam)
            Hook
        End If
    End Function
  3. এই কোডটি মডিউল 2আটকান এবং এটি চালান

    Sub unprotected()
        If Hook Then
            MsgBox "VBA Project is unprotected!", vbInformation, "*****"
        End If
    End Sub

3
পারফেক্ট! উইন্ডোজ সার্ভারের সাথে কাজ করুন 2016, এক্সেল 2016 32 বিট
জিন মিন

এটি এক্সেল অফিস 365 এ .xlsm ফাইলে কাজ করেছে Thank আপনাকে ধন্যবাদ!
রায়ান জেমস

2019 সালে এখনও কাজ করে, অফিস 365 64 ব্রেট লেটস তৈরি করে, দুর্দান্ত লোকেরা!
জাভিয়েরাম

আপডেট হওয়া কোডের জন্য ধন্যবাদ, আমি পূর্ববর্তী সংস্করণ (
-৪

দুর্দান্ত ... পুরোপুরি কাজ করেছেন
মাহদি

17

আপনি কি ওপেনঅফিস.আর.এস. এ কেবল এগুলি খোলার চেষ্টা করেছেন?

আমি কিছুক্ষণ আগে একইরকম সমস্যা পেয়েছি এবং দেখেছি এক্সেল এবং ক্যালক একে অপরের এনক্রিপশন বুঝতে পারে না, এবং তাই প্রায় সব কিছুতে সরাসরি অ্যাক্সেসের অনুমতি দেয়।

এটি কিছুক্ষণ আগে ছিল, সুতরাং যদি এটি আমার পক্ষ থেকে কেবল একটি তাত্পর্য না হয় তবে এটিও প্যাচ করা যেতে পারে।


15

ঘটনা আপনার ব্লক যে CMG="XXXX"\r\nDPB="XXXXX"\r\nGC="XXXXXX" আপনার 'পরিচিত পাসওয়ার্ড' ফাইলে 'অজানা পাসওয়ার্ড' ফাইলে বিদ্যমান ব্লক, প্যাড শূন্য trailing সঠিক দৈর্ঘ্য পৌঁছানোর সঙ্গে আপনার হেক্স স্ট্রিং চেয়ে খাটো হয়।

যেমন

CMG="xxxxxx"\r\nDPB="xxxxxxxx"\r\nGC="xxxxxxxxxx"

অজানা পাসওয়ার্ড ফাইলে সেট করা উচিত

CMG="XXXX00"\r\nDPB="XXXXX000"\r\nGC="XXXXXX0000" ফাইল দৈর্ঘ্য সংরক্ষণ করতে।

অফিস 2007 সালে .XLA (97/2003 ফর্ম্যাট) ফাইলগুলির সাথেও এটি কাজ করেছি।


1
এটি কাজ করে, তবে যেমনটি আমি সম্প্রতি আবিষ্কার করেছি (উপরে মন্তব্য করেছেন) আপনি একই দৈর্ঘ্যটি আঘাত না করা পর্যন্ত আপনি জিসি = "..." ব্লকটিতে চূড়ান্ত নিকটবর্তী উদ্ধৃতিটির পরে খালি অক্ষরগুলিও যুক্ত করতে পারেন।
tobriand

13

এক্সেল 2007 এর পরে আপনার ফাইল এক্সটেনশনটি .zip এ পরিবর্তন করতে হবে সংরক্ষণাগারে একটি সাবফোল্ডার এক্সএল আছে, সেখানে আপনি ভিবাপ্রজেক্ট.বিন পাবেন। VbaProject.bin দিয়ে উপরের পদক্ষেপটি অনুসরণ করুন এবং সংরক্ষণাগারে এটি আবার সংরক্ষণ করুন। আপনার এক্সটেনশানটি পরিবর্তন করুন এবং ভয়েইল! (অর্থ উপরের পদক্ষেপগুলি অনুসরণ করুন)


1
আমি এক্সেল 2010 এর সাথে .xlam ফাইলগুলির জন্য এটি কাজ করে তা নিশ্চিত করতে পারি। +1 টি!
জিমলিস্ট

12

অ্যাক্সেস, এক্সেল, পাওয়ারপয়েন্ট বা ওয়ার্ড ডকুমেন্টগুলিতে ভিবিএ প্রকল্পের পাসওয়ার্ডগুলি ( 2007, 2010, 2013 or 2016এক্সটেনশন সহ সংস্করণ .ACCDB .XLSM .XLTM .DOCM .DOTM .POTM .PPSM) সহজেই মুছে ফেলা যায়

এটি কেবল ফাইল নাম এক্সটেনশানটিতে পরিবর্তন করা .ZIP, ফাইলটি আনজিপ করা এবং বিদ্যমান পাসওয়ার্ডটিকে "ব্রেক" করতে কোনও বেসিক হেক্স সম্পাদক ( XVI32 এর মতো ) ব্যবহার করা, যা অফিস "বিভ্রান্ত" করে তাই পরবর্তী সময়ে ফাইলটি নতুন পাসওয়ার্ডের জন্য অনুরোধ করে খোলা হয়েছে।

পদক্ষেপের সংক্ষিপ্তসার:

  • ফাইলটির পুনরায় নামকরণ করুন যাতে এটির একটি .ZIPএক্সটেনশন থাকে।
  • খুলুন ZIPএবং XLফোল্ডারে যান।
  • এক্সট্রাক্ট করে vbaProject.binএকটি হেক্স সম্পাদক দিয়ে এটি খুলুন
  • "অনুসন্ধান ও প্রতিস্থাপন করা" পরিবর্তন "সব প্রতিস্থাপন করুন" DPBথেকে DPX
  • পরিবর্তনগুলি সংরক্ষণ করুন, .binফাইলটি জিপটিতে ফিরিয়ে দিন, এটিকে স্বাভাবিক বর্ধনে ফিরিয়ে দিন এবং ফাইলটিকে স্বাভাবিকের মতো খুলুন।
  • ALT + F11 ভিবি সম্পাদক প্রবেশ করতে এবং চয়ন করতে প্রকল্প এক্সপ্লোরার ডান ক্লিক করুন VBA Project Properties
  • উপর Protectionট্যাব, একটি নতুন পাসওয়ার্ড সেট করুন।
  • ক্লিক করুন OK, ফাইলটি বন্ধ করুন , এটি আবার খুলুন, ALT + F11 চাপুন।
  • আপনার সেট করা নতুন পাসওয়ার্ডটি প্রবেশ করান।

আপনি যদি চান তবে এই মুহুর্তে আপনি পাসওয়ার্ডটি পুরোপুরি সরিয়ে ফেলতে পারেন।

সম্পূর্ণ নির্দেশাবলী একটি ধাপে ধাপে ভিডিওর সাথে আমি তৈরি "পথ ফিরে যখন" উপর ইউটিউব এখানে

এটি এক ধরণের ধাক্কা দেওয়ার বিষয় যে এই বছরের পর বছর ধরে এই ব্যবস্থার বাইরে রয়েছে এবং মাইক্রোসফ্ট বিষয়টি সমাধান করে নি।


গল্পটির সারাংশ হলো?

কোনও সংবেদনশীল তথ্যের সুরক্ষার জন্য মাইক্রোসফ্ট অফিস ভিবিএ প্রকল্পের পাসওয়ার্ডগুলির উপর নির্ভর করা উচিত নয় । সুরক্ষা গুরুত্বপূর্ণ হলে তৃতীয় পক্ষের এনক্রিপশন সফ্টওয়্যার ব্যবহার করুন।


9

কলিন পিকার্ড বেশিরভাগই সঠিক, তবে ভিবিএ পাসওয়ার্ড সুরক্ষার সাহায্যে পুরো ফাইলটির জন্য "পাসওয়ার্ড খুলতে" সুরক্ষাটি গুলিয়ে ফেলবেন না, যা পূর্বের থেকে সম্পূর্ণ আলাদা এবং অফিস 2003 এবং 2007 এর জন্য একই (অফিস 2007 এর জন্য নাম পরিবর্তন করুন) ফাইলটি .zip করতে এবং জিপের ভিতরে vbaProject.bin সন্ধান করুন)। এবং প্রযুক্তিগতভাবে ফাইলটি সম্পাদনা করার সঠিক উপায় হ'ল সিএমএফএক্সের মতো একটি ওএইলডি যৌগিক নথি দর্শকের সঠিক প্রবাহটি খোলার জন্য ব্যবহার করা। অবশ্যই, আপনি যদি কেবলমাত্র বাইটগুলি প্রতিস্থাপন করেন তবে সাধারণ প্লেইন বাইনারি সম্পাদক কাজ করতে পারে।

বিটিডাব্লু, আপনি যদি এই ক্ষেত্রগুলির সঠিক ফর্ম্যাটটি সম্পর্কে ভাবছেন তবে তাদের এখন তা নথিভুক্ত করা হয়েছে:

http://msdn.microsoft.com/en-us/library/dd926151%28v=office.12%29.aspx


2
নিম্নলিখিত লিঙ্কটি এক্সএসএলএম ফর্ম্যাট ফাইলগুলির জন্য বিশদ দেয়। gbanik.blogspot.co.uk/2010/08/… সমাধানটি উপরের ইউহং বাও দ্বারা বর্ণিত সমান হিসাবে একই, তবে আকর্ষণীয় পড়ার জন্য তৈরি করে এবং এতে স্ক্রিনশট অন্তর্ভুক্ত রয়েছে।
জনএলবিয়ান

7

যদি ফাইলটি একটি বৈধ জিপ ফাইল হয় (প্রথম কয়েকটি বাইটগুলি 50 4Bব্যবহৃত হয় - যেমন ফর্ম্যাটে ব্যবহৃত হয় .xlsm), তবে ফাইলটি আনজিপ করুন এবং সাবফাইলটি সন্ধান করুন xl/vbaProject.bin। এটি .xlsফাইলগুলির মতো একটি সিএফবি ফাইল। এক্সএলএস ফর্ম্যাট (সাবফাইলে প্রয়োগ করা) এর জন্য নির্দেশাবলী অনুসরণ করুন এবং তারপরে কেবল সামগ্রীগুলি জিপ করুন।

এক্সএলএস ফর্ম্যাটের জন্য, আপনি এই পোস্টের অন্যান্য কয়েকটি পদ্ধতি অনুসরণ করতে পারেন। আমি ব্যক্তিগতভাবে DPB=ব্লকটি অনুসন্ধান করা এবং পাঠ্যটি প্রতিস্থাপন করতে পছন্দ করি

CMG="..."
DPB="..."
GC="..."

ফাঁকা স্থান সহ। এটি সিএফবি ধারক আকারের সমস্যাগুলি মেনে চলে।


7

আমি উপরের কয়েকটি সমাধানের চেষ্টা করেছি এবং সেগুলির কোনওোটাই আমার পক্ষে কাজ করে না (এক্সেল 2007 এক্সএলএসএম ফাইল)। তারপরে আমি আরও একটি সমাধান পেয়েছি যা এমনকি পাসওয়ার্ড পুনরুদ্ধার করে, কেবল এটি ক্র্যাক করে না।

এই কোডটি মডিউলে sertোকান, এটি চালান এবং কিছু সময় দিন। এটি জোর করে আপনার পাসওয়ার্ড পুনরুদ্ধার করবে।

Sub PasswordBreaker()

'Breaks worksheet password protection.

Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

1
নিস! আমি মনে করি আপনি একটি ডাউনভোট পেয়েছেন কারণ আপনার সমাধান ভিবিএ মডিউলটির চেয়ে ওয়ার্কশিটটি আনলক করে। তবুও আমি এটি সহায়ক বলে মনে করেছি - তাই ধন্যবাদ!
পিবিডি 10017

1
আমার কাছে এটি আমার ব্যক্তিগত ওয়ার্কবুক রয়েছে। লেখক বব ম্যাককর্মিককে মূল লেখক হিসাবে উদ্ধৃত করেছিলেন পরে নরম্যান হার্কার এবং জেই ম্যাকগিম্পসী 2002 দ্বারা সংশোধন করেছিলেন।
চার্লস বায়ার্ন

5

ElcomSoft তোলে উন্নত অফিস পাসওয়ার্ড ছেদক এবং উন্নত অফিস পাসওয়ার্ড রিকভারি পণ্য যা, এই ক্ষেত্রে প্রযোজ্য হতে পারে যতদিন ডকুমেন্ট অফিস 2007 বা পূর্বে সালে নির্মিত হয়েছিল।


4

টম - আমি বাইটের আকারটি না দেখায় প্রাথমিকভাবে আমি একটি স্কুলয়ের ত্রুটি করেছি এবং পরিবর্তে পরবর্তীকালে প্রবেশের জন্য সেট আপ করা "সিএমজি" থেকে অনুলিপি করে আটকিয়েছি। এটি দুটি ফাইলের মধ্যে দুটি পৃথক পাঠ্য আকার ছিল, যদিও, এবং স্টিওবব যেমন সতর্ক করেছিলেন ঠিক তেমনই আমি ভিবিএ প্রকল্পটি হারিয়েছি।

এইচএক্সডি ব্যবহার করে, আপনি কতটা ফাইল নির্বাচন করছেন তা অনুসরণ করার একটি কাউন্টার রয়েছে। কাউন্টারটি 8F পড়ার আগ পর্যন্ত সিএমজি থেকে শুরু হওয়া অনুলিপি (143 এর জন্য হেক্স) এবং তেমনিভাবে লক করা ফাইলটিতে আটকানোর সময় - আমি পেস্টের শেষে দ্বিগুণ "..." দিয়ে শেষ করেছি, যা কিছুটা অদ্ভুত লাগছিল এবং প্রায় অনুভূত হয়েছিল অপ্রাকৃত, কিন্তু এটি কাজ করে।

আমি জানি না এটি গুরুত্বপূর্ণ কিনা, তবে আমি নিশ্চিত করেছিলাম যে আমি উভয়ই হেক্স সম্পাদককে বন্ধ করে দিয়েছি এবং এক্সেলের মধ্যে ফাইলটি আবার খোলার আগেই ছাড়িয়েছি। তারপরে আমাকে ভিবিপ্রেক্টরটি খোলার জন্য মেনুগুলির মধ্য দিয়ে যেতে হবে, ভিবিপ্রজেক্ট প্রোপার্টিগুলিতে এবং কোডটি আনলক করতে 'নতুন' পাসওয়ার্ডটি প্রবেশ করানো হয়েছিল।

আশা করি এটা কাজে লাগবে.


4

আমার সরঞ্জাম, ভিবিডিডিফ , সরাসরি ফাইল থেকে ভিবিএ পড়েন, তাই আপনি কোনও হেক্স সম্পাদক সম্পাদনা না করে বেশিরভাগ অফিসের নথি থেকে সুরক্ষিত ভিবিএ কোডটি পুনরুদ্ধার করতে এটি ব্যবহার করতে পারেন।


আমি এই সরঞ্জামটি পরীক্ষা করেছি এবং সত্যই ভাল কাজ করি তবে বিনামূল্যে সংস্করণটি প্রথম 53 টি লাইন পুনরুদ্ধার করে। আমার ফাইলটি পুনরুদ্ধার করতে আমাকে পাসওয়ার্ডটি আনলক করতে অ্যান্ডির নির্দেশাবলী অনুসরণ করতে হয়েছিল। তারপরে আমি উভয় প্যানে ভিবিডিফ দিয়ে আমার এক্সএলএসএম খুললাম এবং তারপরে আমি আমার কোড সহ শীটটিতে ক্লিক করেছি। আমি এটি অনুলিপি-পেস্ট দিয়ে পেয়েছি এবং এটি আমার পুনরুদ্ধার করা তবে ভিবিএ-খালি এক্সেল ফাইলটিতে রেখেছি।
Thanos.a

2

সুরক্ষাটি এক্সেলের একটি সাধারণ পাঠ্য তুলনা। আপনার প্রিয় ডিবাগারে এক্সেল লোড করুন ( অলিডডবিজি আমার পছন্দের সরঞ্জাম হচ্ছেন), যে কোডটি তুলনা করে তা সন্ধান করুন এবং সর্বদা সত্য ফিরে আসার জন্য এটি ঠিক করুন, এটি আপনাকে ম্যাক্রোগুলিতে অ্যাক্সেস করতে দেয়।


1

উইন্ডোজ 10 মেশিনে এক্সেল 2016 64৪-বিটের জন্য, আমি সুরক্ষিত এক্সলার পাসওয়ার্ড পরিবর্তন করতে সক্ষম হেক্স সম্পাদককে ব্যবহার করেছি (অন্য কোনও এক্সটেনশনের জন্য এটি পরীক্ষা করা হয়নি)। টিপ: এটি করার আগে একটি ব্যাকআপ তৈরি করুন।

আমি যে পদক্ষেপ নিয়েছি:

  1. হেক্স সম্পাদকটিতে ভিবিএ খুলুন (উদাহরণস্বরূপ XVI)
  2. এই ডিপিবিতে অনুসন্ধান করুন
  3. ডিপিবিএসের মতো অন্য কিছুতে ডিপিবি পরিবর্তন করুন
  4. এটি সংরক্ষণ করুন!
  5. .Xla আবার খুলুন, একটি ত্রুটি বার্তা উপস্থিত হবে, কেবল চালিয়ে যান।
  6. আপনি এখন বৈশিষ্ট্যগুলি খোলার মাধ্যমে .xla এর পাসওয়ার্ড পরিবর্তন করতে পারেন এবং পাসওয়ার্ড ট্যাবে যেতে পারেন।

আমি আশা করি এটি আপনার কয়েকজনকে সাহায্য করেছে!


আমি এক্সেল 365 এর সর্বশেষ সংস্করণে উইন্ডোজ 10 এ এটি ব্যবহার করে একটি পুরানো .xls সফলভাবে খুলতে পেরেছিলাম, যখন শীর্ষের উত্তরটি দুর্ভাগ্যক্রমে আর কাজ করছে না। আমি এইচএক্সডি ডাউনলোড করেছি এবং সুপারিশের মতো শেষ অক্ষরটি পরিবর্তন করেছি এবং ত্রুটিগুলি এড়িয়ে গেছি। এখন সব ভাল, ধন্যবাদ!
স্টারনেস শিক্ষার্থী

0

আপনার এক্সেল ফাইলের এক্সটেনশানটি এক্সএমএলে পরিবর্তন করুন। এবং এটি নোটপ্যাডে খুলুন। পাসওয়ার্ড টেক্সট এক্সএমএল ফাইল খুঁজে।

আপনি নীচের লাইনের মত দেখতে;

Sheets("Sheet1").Unprotect Password:="blabla"

(আমার অদক্ষ ইংরেজির জন্য আমি দুঃখিত)


ইতিমধ্যে সরবরাহ করা খুব ভাল উত্তরগুলির চেয়ে আপনার উত্তর কীভাবে ভাল তা আপনি ব্যাখ্যা করতে পারেন?
নোয়েল ওয়াইডার

আমার সমাধানের কোনও কোড নেই। ছাড়া খুব কমপ্যাক্ট সমাধান।
বিকাশকারী

1
আপনি যে সমাধানটি সরবরাহ করেছেন তা 2019 সালে কাজ করে না
ড্যানিয়েল এল। ভ্যানডেনবোশ

এটি অফিসে 365
Thanos.a

0

আপনি যদি কাজ করেন Javaআপনি চেষ্টা করতে পারেন VBAMacroExtractor। ভিবিএ স্ক্রিপ্টগুলি বের করার পরে .xlsmআমি সেখানে সরলখলে পাসওয়ার্ড পেয়েছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.