আমাকে কিছু এক্সেল 2003 ম্যাক্রো আপডেট করতে বলা হয়েছে, তবে ভিবিএ প্রকল্পগুলি পাসওয়ার্ড দ্বারা সুরক্ষিত রয়েছে এবং মনে হয় নথিপত্রের অভাব আছে ... পাসওয়ার্ডগুলি কেউ জানে না।
কোনও ভিবিএ প্রকল্পে পাসওয়ার্ড মুছে ফেলার বা ক্র্যাক করার কোনও উপায় আছে?
আমাকে কিছু এক্সেল 2003 ম্যাক্রো আপডেট করতে বলা হয়েছে, তবে ভিবিএ প্রকল্পগুলি পাসওয়ার্ড দ্বারা সুরক্ষিত রয়েছে এবং মনে হয় নথিপত্রের অভাব আছে ... পাসওয়ার্ডগুলি কেউ জানে না।
কোনও ভিবিএ প্রকল্পে পাসওয়ার্ড মুছে ফেলার বা ক্র্যাক করার কোনও উপায় আছে?
উত্তর:
আপনি এই সরাসরি VBA
পদ্ধতির চেষ্টা করতে পারেন যার জন্য এইচএক্স সম্পাদনা দরকার নেই। এটি কোনও ফাইল (* .xls, * .xlsm, * .xlam ...) এর জন্য কাজ করবে।
পরীক্ষিত এবং এতে কাজ করে:
এক্সেল 2007
এক্সেল 2010
এক্সেল 2013 - 32 বিট সংস্করণ
এক্সেল 2016 - 32 বিট সংস্করণ
64 বিট সংস্করণ খুঁজছেন? এই উত্তর দেখুন
এটি কীভাবে কাজ করে তা ব্যাখ্যা করার জন্য আমি যথাসাধ্য চেষ্টা করব - দয়া করে আমার ইংরেজিটি ক্ষমা করুন।
প্রথমে আপনার ফাইলগুলি ব্যাকআপ করুন!
একটি নতুন এক্সএলএসএম ফাইল তৈরি করুন এবং মডিউল 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
এই কোডটি মডিউল 1 এ উপরের কোডের নীচে আটকান এবং এটি চালান
Sub unprotected()
If Hook Then
MsgBox "VBA Project is unprotected!", vbInformation, "*****"
End If
End Sub
আপনার ভিবিএ প্রকল্পগুলিতে ফিরে আসুন এবং উপভোগ করুন।
হ্যাঁ, যতক্ষণ আপনি একটি .xls
ফর্ম্যাট স্প্রেডশিট ব্যবহার করছেন (2003 পর্যন্ত এক্সেলের জন্য ডিফল্ট)। এক্সেল 2007 এর পরে, ডিফল্টটি হ'ল .xlsx
এটি মোটামুটি সুরক্ষিত ফর্ম্যাট এবং এই পদ্ধতিটি কার্যকর হবে না।
ট্রেব যেমন বলেছেন, এটি একটি সহজ তুলনা। একটি পদ্ধতি হ'ল একটি হেক্স সম্পাদক ব্যবহার করে ফাইলের পাসওয়ার্ড এন্ট্রি সরিয়ে আনা ( উইন্ডোজের জন্য হেক্স সম্পাদকরা দেখুন )। ধাপে ধাপে উদাহরণ:
নিম্নলিখিত কীগুলি দিয়ে শুরু করা লাইনগুলি অনুলিপি করুন:
CMG=....
DPB=...
GC=...
প্রথমে আপনি যে ভিউবিএ পাসওয়ার্ডটি জানেন না সেই এক্সেল ফাইলটি ব্যাকআপ করুন, তারপরে এটি আপনার হেক্স সম্পাদকের সাথে খুলুন এবং ডামি ফাইল থেকে উপরের অনুলিপি করা লাইনগুলি আটকে দিন।
আপনার যদি এক্সেল 2007 বা 2010 এর সাথে কাজ করার দরকার হয় তবে নীচে আরও কয়েকটি উত্তর রয়েছে যা বিশেষত এগুলি সহায়তা করতে পারে: 1 , 2 , 3 ।
ফেব্রুয়ারী 2015 সম্পাদনা করুন : খুব আশাব্যঞ্জক বলে মনে হচ্ছে এমন আরও একটি পদ্ধতির জন্য, Thanc থানহ এনগুইনের এই নতুন উত্তরটি দেখুন ।
CMG...
স্ট্রিংটি মূলের চেয়ে দীর্ঘ হয় তবে আপনি নিরাপদে ফাইলটির দৈর্ঘ্য বাড়াতে পারবেন ।
এই পদ্ধতিটিকে এক্সেলের 64৪-বিট সংস্করণ দিয়ে কাজ করার অনুমতি দেওয়ার জন্য আমি থানহ এনগুইনের দুর্দান্ত উত্তর তৈরি করেছি। আমি এক্সেল 2010 64-বিট 64-বিট উইন্ডোজ 7 এ চালাচ্ছি।
একটি নতুন এক্সএলএসএম ফাইল তৈরি করুন এবং মডিউল 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
এই কোডটি মডিউল 2 এ আটকান এবং এটি চালান
Sub unprotected()
If Hook Then
MsgBox "VBA Project is unprotected!", vbInformation, "*****"
End If
End Sub
অস্বীকৃতি এটি আমার পক্ষে কাজ করেছে এবং আমি আশা করি এটি কারওর পক্ষে সহায়তা করবে বলে এখানে এটি নথিভুক্ত করেছি। আমি এটি পুরোপুরি পরীক্ষা করে দেখিনি । এই বিকল্পটি নিয়ে এগিয়ে যাওয়ার আগে দয়া করে সমস্ত খোলা ফাইলগুলি সংরক্ষণ করার বিষয়ে নিশ্চিত হন।
আকারের সমস্যা ছাড়াই অন্য একটি (কিছুটা সহজ) সমাধান রয়েছে। আমি আজ এই পদ্ধতির ব্যবহার করেছি (এক্সেল 2007 ব্যবহার করে 2003 এর একটি এক্সএলএস ফাইল) এবং সফল হয়েছি।
DPB=...
অংশটি সন্ধান করুনDPB=...
স্ট্রিং এ পরিবর্তন করুনDPx=...
* দ্রষ্টব্য: নিশ্চিত হয়ে নিন যে আপনি পাসওয়ার্ডটি একটি নতুন মূল্যে পরিবর্তন করেছেন, অন্যথায় আপনি স্প্রেডশিট এক্সেলটি খোলার পরে ত্রুটিগুলি (অপ্রত্যাশিত ত্রুটি) প্রতিবেদন করবেন, তারপরে আপনি ভিবিএ মডিউলগুলির তালিকাটি অ্যাক্সেস করার পরে আপনি এখন এর নামগুলি দেখতে পাবেন ফর্ম / কোড / ইত্যাদি খোলার চেষ্টা করার সময় উত্স মডিউলগুলি কিন্তু অন্য একটি ত্রুটি গ্রহণ করে। এর প্রতিকারের জন্য, ভিবিএ প্রকল্পের বৈশিষ্ট্যগুলিতে ফিরে যান এবং পাসওয়ার্ডটিকে একটি নতুন মানতে সেট করুন। এক্সেল ডকুমেন্টটি সংরক্ষণ করুন এবং পুনরায় খুলুন এবং আপনার যাওয়া ভাল হবে!
কলিন পিকার্ডের একটি দুর্দান্ত উত্তর রয়েছে তবে এটির সাথে একটি 'নজর রাখুন' রয়েছে। উদাহরণ রয়েছে (এখনও আমি কারণটি বের করতে পারি নি) যেখানে "সিএমজি = ........ জিসি = ...." ফাইলের মোট দৈর্ঘ্য একটি এক্সেল ফাইল থেকে আলাদা পরবর্তী. কিছু ক্ষেত্রে, এই এন্ট্রিটি 137 বাইট হবে এবং অন্যদের মধ্যে এটি 143 বাইট হবে। 137 বাইটের দৈর্ঘ্যটি বিজোড় এবং এটি '1234' পাসওয়ার্ড দিয়ে আপনার ফাইলটি তৈরি করার সময় যদি ঘটে থাকে তবে কেবল অন্য একটি ফাইল তৈরি করুন এবং এটি 143 বাইট দৈর্ঘ্যে লাফিয়ে উঠতে হবে।
আপনি যদি ফাইলটিতে ভুল নম্বর বাইট করার চেষ্টা করেন, আপনি যখন এক্সেলের সাহায্যে ফাইলটি খোলার চেষ্টা করবেন তখন আপনি আপনার ভিবিএ প্রকল্পটি হারাবেন।
সম্পাদনা
এটি এক্সেল 2007/2010 ফাইলগুলির জন্য বৈধ নয়। স্ট্যান্ডার্ড .xlsx ফাইল ফর্ম্যাটটি আসলে একটি .zip ফাইল যা ফরম্যাট, লেআউট, বিষয়বস্তু, ইত্যাদিসহ অসংখ্য সাব-ফোল্ডারগুলি এক্সএমএল ডেটা হিসাবে সঞ্চিত। একটি অরক্ষিত এক্সেল 2007 ফাইলের জন্য, আপনি কেবল .xlsx এক্সটেনশনটি .zip এ পরিবর্তন করতে পারেন, তারপরে জিপ ফাইলটি খুলুন এবং সমস্ত এক্সএমএল ডেটা সন্ধান করুন। এটা খুব সোজা।
তবে, আপনি যখন পাসওয়ার্ডটি একটি এক্সেল 2007 ফাইল সুরক্ষিত করেন তখন পুরো .zip (.xlsx) ফাইলটি আরএসএ এনক্রিপশন ব্যবহার করে আসলে এনক্রিপ্ট করা হয়। এক্সটেনশনটি .zip এবং ফাইলের সামগ্রীগুলিতে ব্রাউজ করা এখন আর সম্ভব নয়।
একটি .xlsm
বা .dotm
ফাইল টাইপের জন্য আপনাকে এটি কিছুটা ভিন্ন উপায়ে করতে হবে।
.xlsm
ফাইলটির এক্সটেনশন এতে পরিবর্তন করুন .zip
।vbaProject.bin
ফাইলটি বের করুন এবং একটি হেক্স সম্পাদক এ খুলুন (আমি HxD ব্যবহার করি , এটি সম্পূর্ণ নিখরচায় এবং হালকা ওজনের weight )DPB
এবং প্রতিস্থাপন DPx
এবং ফাইল সংরক্ষণ করুন।vbaProject.bin
ফাইলটি জিপ করা ফাইলটিতে এই নতুন দিয়ে প্রতিস্থাপন করুন।.xlsm
।.xlsm
ফাইলটি সংরক্ষণ করুন।এটি উল্লেখ করার মতো যে যদি আপনার কাছে এক্সেল 2007 (xlsm) ফাইল থাকে তবে আপনি কেবল এটি একটি এক্সেল 2003 (এক্সএলএস) ফাইল হিসাবে সংরক্ষণ করতে পারেন এবং অন্যান্য উত্তরে বর্ণিত পদ্ধতিগুলি ব্যবহার করতে পারেন।
1.
.xlsm কে 2.
.xls 3.
রূপান্তর করুন .xls কোডটি .xlsm .xlsx রূপান্তর করুন 4.
। মডিউল থেকে .xls এ কোডটি রাখুন। xlsx এবং .xlsm হিসাবে সেভ করুন
আমার পালা দিয়ে, এটি কায়েবী ৯৯ এর দুর্দান্ত উত্তরের উপর ভিত্তি করে তৈরি করা হয়েছে যা অফিস থানার এনজিও এবং এমডি both64 সংস্করণের সাথে এই পদ্ধতিটিকে কাজ করার অনুমতি দেওয়ার জন্য থানহ এনগুইনের দুর্দান্ত উত্তরটির উপর নির্মিত হয়েছে।
কী পরিবর্তিত হয়েছে তার একটি সংক্ষিপ্ত বিবরণ, আমরা ধাক্কা / ret এড়াতে যা 32 বিট ঠিকানার মধ্যে সীমাবদ্ধ এবং এটি মুভি / জেএমপি রেজি দ্বারা প্রতিস্থাপন করি।
পরীক্ষিত এবং কাজ করে
শব্দ / এক্সেল 2016 - 32 বিট সংস্করণ ।
শব্দ / এক্সেল 2016 - 64 বিট সংস্করণ ।
কিভাবে এটা কাজ করে
উপরের মত একই ধরণের একটি নতুন ফাইল তৈরি করুন এবং মডিউল 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
এই কোডটি মডিউল 2 এ আটকান এবং এটি চালান
Sub unprotected()
If Hook Then
MsgBox "VBA Project is unprotected!", vbInformation, "*****"
End If
End Sub
আপনি কি ওপেনঅফিস.আর.এস. এ কেবল এগুলি খোলার চেষ্টা করেছেন?
আমি কিছুক্ষণ আগে একইরকম সমস্যা পেয়েছি এবং দেখেছি এক্সেল এবং ক্যালক একে অপরের এনক্রিপশন বুঝতে পারে না, এবং তাই প্রায় সব কিছুতে সরাসরি অ্যাক্সেসের অনুমতি দেয়।
এটি কিছুক্ষণ আগে ছিল, সুতরাং যদি এটি আমার পক্ষ থেকে কেবল একটি তাত্পর্য না হয় তবে এটিও প্যাচ করা যেতে পারে।
ঘটনা আপনার ব্লক যে
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 ফর্ম্যাট) ফাইলগুলির সাথেও এটি কাজ করেছি।
এক্সেল 2007 এর পরে আপনার ফাইল এক্সটেনশনটি .zip এ পরিবর্তন করতে হবে সংরক্ষণাগারে একটি সাবফোল্ডার এক্সএল আছে, সেখানে আপনি ভিবাপ্রজেক্ট.বিন পাবেন। VbaProject.bin দিয়ে উপরের পদক্ষেপটি অনুসরণ করুন এবং সংরক্ষণাগারে এটি আবার সংরক্ষণ করুন। আপনার এক্সটেনশানটি পরিবর্তন করুন এবং ভয়েইল! (অর্থ উপরের পদক্ষেপগুলি অনুসরণ করুন)
অ্যাক্সেস, এক্সেল, পাওয়ারপয়েন্ট বা ওয়ার্ড ডকুমেন্টগুলিতে ভিবিএ প্রকল্পের পাসওয়ার্ডগুলি ( 2007, 2010, 2013 or 2016
এক্সটেনশন সহ সংস্করণ .ACCDB .XLSM .XLTM .DOCM .DOTM .POTM .PPSM
) সহজেই মুছে ফেলা যায় ।
এটি কেবল ফাইল নাম এক্সটেনশানটিতে পরিবর্তন করা .ZIP
, ফাইলটি আনজিপ করা এবং বিদ্যমান পাসওয়ার্ডটিকে "ব্রেক" করতে কোনও বেসিক হেক্স সম্পাদক ( XVI32 এর মতো ) ব্যবহার করা, যা অফিস "বিভ্রান্ত" করে তাই পরবর্তী সময়ে ফাইলটি নতুন পাসওয়ার্ডের জন্য অনুরোধ করে খোলা হয়েছে।
.ZIP
এক্সটেনশন থাকে।ZIP
এবং XL
ফোল্ডারে যান।vbaProject.bin
একটি হেক্স সম্পাদক দিয়ে এটি খুলুনDPB
থেকে DPX
।.bin
ফাইলটি জিপটিতে ফিরিয়ে দিন, এটিকে স্বাভাবিক বর্ধনে ফিরিয়ে দিন এবং ফাইলটিকে স্বাভাবিকের মতো খুলুন।VBA Project Properties
।Protection
ট্যাব, একটি নতুন পাসওয়ার্ড সেট করুন।OK
, ফাইলটি বন্ধ করুন , এটি আবার খুলুন, ALT + F11 চাপুন।আপনি যদি চান তবে এই মুহুর্তে আপনি পাসওয়ার্ডটি পুরোপুরি সরিয়ে ফেলতে পারেন।
সম্পূর্ণ নির্দেশাবলী একটি ধাপে ধাপে ভিডিওর সাথে আমি তৈরি "পথ ফিরে যখন" উপর ইউটিউব এখানে ।
এটি এক ধরণের ধাক্কা দেওয়ার বিষয় যে এই বছরের পর বছর ধরে এই ব্যবস্থার বাইরে রয়েছে এবং মাইক্রোসফ্ট বিষয়টি সমাধান করে নি।
গল্পটির সারাংশ হলো?
কোনও সংবেদনশীল তথ্যের সুরক্ষার জন্য মাইক্রোসফ্ট অফিস ভিবিএ প্রকল্পের পাসওয়ার্ডগুলির উপর নির্ভর করা উচিত নয় । সুরক্ষা গুরুত্বপূর্ণ হলে তৃতীয় পক্ষের এনক্রিপশন সফ্টওয়্যার ব্যবহার করুন।
কলিন পিকার্ড বেশিরভাগই সঠিক, তবে ভিবিএ পাসওয়ার্ড সুরক্ষার সাহায্যে পুরো ফাইলটির জন্য "পাসওয়ার্ড খুলতে" সুরক্ষাটি গুলিয়ে ফেলবেন না, যা পূর্বের থেকে সম্পূর্ণ আলাদা এবং অফিস 2003 এবং 2007 এর জন্য একই (অফিস 2007 এর জন্য নাম পরিবর্তন করুন) ফাইলটি .zip করতে এবং জিপের ভিতরে vbaProject.bin সন্ধান করুন)। এবং প্রযুক্তিগতভাবে ফাইলটি সম্পাদনা করার সঠিক উপায় হ'ল সিএমএফএক্সের মতো একটি ওএইলডি যৌগিক নথি দর্শকের সঠিক প্রবাহটি খোলার জন্য ব্যবহার করা। অবশ্যই, আপনি যদি কেবলমাত্র বাইটগুলি প্রতিস্থাপন করেন তবে সাধারণ প্লেইন বাইনারি সম্পাদক কাজ করতে পারে।
বিটিডাব্লু, আপনি যদি এই ক্ষেত্রগুলির সঠিক ফর্ম্যাটটি সম্পর্কে ভাবছেন তবে তাদের এখন তা নথিভুক্ত করা হয়েছে:
http://msdn.microsoft.com/en-us/library/dd926151%28v=office.12%29.aspx
যদি ফাইলটি একটি বৈধ জিপ ফাইল হয় (প্রথম কয়েকটি বাইটগুলি 50 4B
ব্যবহৃত হয় - যেমন ফর্ম্যাটে ব্যবহৃত হয় .xlsm
), তবে ফাইলটি আনজিপ করুন এবং সাবফাইলটি সন্ধান করুন xl/vbaProject.bin
। এটি .xls
ফাইলগুলির মতো একটি সিএফবি ফাইল। এক্সএলএস ফর্ম্যাট (সাবফাইলে প্রয়োগ করা) এর জন্য নির্দেশাবলী অনুসরণ করুন এবং তারপরে কেবল সামগ্রীগুলি জিপ করুন।
এক্সএলএস ফর্ম্যাটের জন্য, আপনি এই পোস্টের অন্যান্য কয়েকটি পদ্ধতি অনুসরণ করতে পারেন। আমি ব্যক্তিগতভাবে DPB=
ব্লকটি অনুসন্ধান করা এবং পাঠ্যটি প্রতিস্থাপন করতে পছন্দ করি
CMG="..."
DPB="..."
GC="..."
ফাঁকা স্থান সহ। এটি সিএফবি ধারক আকারের সমস্যাগুলি মেনে চলে।
আমি উপরের কয়েকটি সমাধানের চেষ্টা করেছি এবং সেগুলির কোনওোটাই আমার পক্ষে কাজ করে না (এক্সেল 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
ElcomSoft তোলে উন্নত অফিস পাসওয়ার্ড ছেদক এবং উন্নত অফিস পাসওয়ার্ড রিকভারি পণ্য যা, এই ক্ষেত্রে প্রযোজ্য হতে পারে যতদিন ডকুমেন্ট অফিস 2007 বা পূর্বে সালে নির্মিত হয়েছিল।
টম - আমি বাইটের আকারটি না দেখায় প্রাথমিকভাবে আমি একটি স্কুলয়ের ত্রুটি করেছি এবং পরিবর্তে পরবর্তীকালে প্রবেশের জন্য সেট আপ করা "সিএমজি" থেকে অনুলিপি করে আটকিয়েছি। এটি দুটি ফাইলের মধ্যে দুটি পৃথক পাঠ্য আকার ছিল, যদিও, এবং স্টিওবব যেমন সতর্ক করেছিলেন ঠিক তেমনই আমি ভিবিএ প্রকল্পটি হারিয়েছি।
এইচএক্সডি ব্যবহার করে, আপনি কতটা ফাইল নির্বাচন করছেন তা অনুসরণ করার একটি কাউন্টার রয়েছে। কাউন্টারটি 8F পড়ার আগ পর্যন্ত সিএমজি থেকে শুরু হওয়া অনুলিপি (143 এর জন্য হেক্স) এবং তেমনিভাবে লক করা ফাইলটিতে আটকানোর সময় - আমি পেস্টের শেষে দ্বিগুণ "..." দিয়ে শেষ করেছি, যা কিছুটা অদ্ভুত লাগছিল এবং প্রায় অনুভূত হয়েছিল অপ্রাকৃত, কিন্তু এটি কাজ করে।
আমি জানি না এটি গুরুত্বপূর্ণ কিনা, তবে আমি নিশ্চিত করেছিলাম যে আমি উভয়ই হেক্স সম্পাদককে বন্ধ করে দিয়েছি এবং এক্সেলের মধ্যে ফাইলটি আবার খোলার আগেই ছাড়িয়েছি। তারপরে আমাকে ভিবিপ্রেক্টরটি খোলার জন্য মেনুগুলির মধ্য দিয়ে যেতে হবে, ভিবিপ্রজেক্ট প্রোপার্টিগুলিতে এবং কোডটি আনলক করতে 'নতুন' পাসওয়ার্ডটি প্রবেশ করানো হয়েছিল।
আশা করি এটা কাজে লাগবে.
আমার সরঞ্জাম, ভিবিডিডিফ , সরাসরি ফাইল থেকে ভিবিএ পড়েন, তাই আপনি কোনও হেক্স সম্পাদক সম্পাদনা না করে বেশিরভাগ অফিসের নথি থেকে সুরক্ষিত ভিবিএ কোডটি পুনরুদ্ধার করতে এটি ব্যবহার করতে পারেন।
উইন্ডোজ 10 মেশিনে এক্সেল 2016 64৪-বিটের জন্য, আমি সুরক্ষিত এক্সলার পাসওয়ার্ড পরিবর্তন করতে সক্ষম হেক্স সম্পাদককে ব্যবহার করেছি (অন্য কোনও এক্সটেনশনের জন্য এটি পরীক্ষা করা হয়নি)। টিপ: এটি করার আগে একটি ব্যাকআপ তৈরি করুন।
আমি যে পদক্ষেপ নিয়েছি:
আমি আশা করি এটি আপনার কয়েকজনকে সাহায্য করেছে!
আপনার এক্সেল ফাইলের এক্সটেনশানটি এক্সএমএলে পরিবর্তন করুন। এবং এটি নোটপ্যাডে খুলুন। পাসওয়ার্ড টেক্সট এক্সএমএল ফাইল খুঁজে।
আপনি নীচের লাইনের মত দেখতে;
Sheets("Sheet1").Unprotect Password:="blabla"
(আমার অদক্ষ ইংরেজির জন্য আমি দুঃখিত)
আপনি যদি কাজ করেন Java
আপনি চেষ্টা করতে পারেন VBAMacroExtractor
। ভিবিএ স্ক্রিপ্টগুলি বের করার পরে .xlsm
আমি সেখানে সরলখলে পাসওয়ার্ড পেয়েছি।