• حذف کلمه عبور (Password) یک فایل اکسل

    در این پست بیشتر با حذف کلمه عبور (Password) یک فایل اکسل آشنا می شویم
    این پست شامل فایل دانلود می باشد مشاهده

    هیچ چیز ناامید کننده‌تر از این نیست که بفهمید کارمند قبلی از رمز عبور برای محافظت از یک فایل اکسل استفاده کرده است و معلوم شود هیچ کس دیگری رمز عبور را نمی‌داند.

    یا شاید بدتر از آن این باشد که فایل شما، رمز عبور شما باشد و آن را فراموش کرده باشید. در هر صورت... شما گیج شده‌اید! با این حال، قبل از اینکه تسلیم شوید، اجازه دهید چند ایده در مورد نحوه حذف رمزهای عبور اکسل با VBA به اشتراک بگذارم.

    ضمناً، اگر با VBA آشنا نیستید یا این روش‌ها را خیلی دشوار می‌دانید، می‌توانید یک راه حل ساده‌تر را امتحان کنید. Password-Find یک ابزار پولی برای حذف رمز عبور اکسل است

    فایل دانلودی شامل یک ابزار رایگان حذف رمز عبور اکسل است. لطفاً برای جزئیات کامل در مورد نحوه استفاده از این ابزار، به بخش‌های زیر مراجعه کنید.

    هشدار! – هنگام سر و کله زدن با حذف رمز عبور، به راحتی ممکن است فایل‌ها غیرقابل خواندن شوند، بنابراین قبل از انجام هر کاری مطمئن شوید که از اطلاعات خود نسخه پشتیبان تهیه کرده‌اید. گذشته از همه اینها، اگر فایل بعداً قابل مشاهده نباشد، شکستن رمز عبور هیچ فایده‌ای ندارد.

    قبل از اینکه حتی شروع به بحث در مورد نحوه حذف رمزهای عبور کنیم، باید انواع مختلف رمزهای عبور را در یک فایل اکسل درک کنیم. رویکرد حذف برای هر نوع متفاوت خواهد بود.

    تنظیم انواع رمزهای عبور

    شش رمز عبور مختلف در اکسل وجود دارد:

    • فایل باز است
    • تغییر فایل
    • محافظت از کتاب کار
    • محافظت از برگه کاری
    • اجازه ویرایش محدوده‌ها
    • پروژه وی بی ای

    هر یک از آنها به طور متفاوتی اعمال می‌شوند و هدف متفاوتی را دنبال می‌کنند. بیایید به ترتیب به هر کدام نگاه کنیم.

    رمزهای عبور باز کردن فایل

    رمز عبور باز کردن فایل، مانع از باز شدن یک فایل اکسل تا زمان وارد کردن رمز عبور می‌شود.

    برای تنظیم رمز عبور برای باز کردن فایل در اکسل:

    1. روی فایل > ذخیره به عنوان > گزینه‌های بیشتر کلیک کنید …
      حذف کلمه عبور (Password) یک فایل اکسل
    2. سپس، در کادر محاوره‌ای Save As ، روی Tools > General Options… کلیک کنید.
    3. کادر محاوره‌ای «گزینه‌های عمومی» ظاهر می‌شود.  رمز عبور را در کادر «رمز عبور برای باز کردن» وارد کنید ، سپس روی تأیید کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل
    4. در پنجره تأیید رمز عبور ، رمز عبور را دوباره وارد کنید و روی تأیید کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل
    5. در نهایت، نام فایل را وارد کنید و در کادر محاوره‌ای Save As روی Save کلیک کنید.
      حذف کلمه عبور (Password) یک فایل اکسل

    اکنون رمز عبور برای باز کردن فایل تنظیم شده است. کاربر نمی‌تواند تا زمانی که رمز عبور را وارد نکرده است، فایل اکسل را باز کند.

    پیام هشدار

    آیا متوجه پیام هشداری که هنگام تنظیم رمز عبور ظاهر شد، شدید؟

    احتیاط: اگر رمز عبور را گم یا فراموش کنید، قابل بازیابی نیست. توصیه می‌شود لیستی از رمزهای عبور و نام‌های مربوط به کتاب کار و برگه‌های مربوطه را در مکانی امن نگه دارید. (به یاد داشته باشید که رمزهای عبور به حروف کوچک و بزرگ حساس هستند.)

    این توصیه خوبی برای رمزهای عبور فایل های باز است زیرا بازیابی آنها به راحتی امکان پذیر نیست.

    تغییر رمز عبور فایل‌ها

    رمز عبور تغییر فایل، تا زمانی که رمز عبور وارد نشده باشد، از تغییر فایل اکسل جلوگیری می‌کند. برخی از مراحل مشابه رمز عبور باز کردن فایل هستند، اما برای کامل بودن، در اینجا تکرار می‌شوند.

    1. روی فایل > ذخیره به عنوان > گزینه‌های بیشتر کلیک کنید …
      حذف کلمه عبور (Password) یک فایل اکسل
    2. پنجره ذخیره به عنوان ظاهر می‌شود، روی ابزارها > گزینه‌های عمومی کلیک کنید…
    3. کادر «گزینه‌های عمومی» ظاهر می‌شود. در کادر « رمز عبور برای تغییر » یک رمز عبور وارد کنید ، سپس روی تأیید کلیک کنید.
    4. در پنجره تأیید رمز عبور ، رمز عبور را دوباره وارد کنید و روی تأیید کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل
    5. در نهایت،  در کادر محاوره‌ای Save As روی Save کلیک کنید.
      حذف کلمه عبور (Password) یک فایل اکسل

    اکنون رمز عبور تغییر فایل تنظیم شده است. کاربر می‌تواند فایل اکسل را باز کند، اما اگر رمز عبور را وارد نکند، فایل فقط خواندنی خواهد بود.

    پیام هشدار

    آیا این بار متوجه پیام هشدار شدید؟

    احتیاط: رمز عبور برای تغییر، ویژگی امنی نیست. این سند در برابر ویرایش غیرعمدی محافظت شده است. با این حال، سند رمزگذاری نشده است. کاربران مخرب می‌توانند فایل را ویرایش کرده و رمز عبور را حذف کنند.

    آیا تفاوت لحن پیام هشدار را مشاهده کردید؟ حتی مایکروسافت هم تشخیص می‌دهد که این رمز عبور امن نیست. در ادامه‌ی این پست، نحوه‌ی حذف این رمز عبور را توضیح خواهیم داد.

    رمزهای عبور محافظت از کاربرگ

    رمزهای عبور محافظت از کاربرگ مانع از تغییر سلول‌های خاص می‌شوند. کاربر می‌تواند کاربرگ را باز کرده و با آن تعامل داشته باشد، اما در فعالیت‌هایی که می‌تواند انجام دهد، محدود شده است.

    1. با تنظیم ویژگی قفل یک سلول یا محدوده‌ای از سلول‌ها شروع کنید. چند سلول را انتخاب کنید و سپس از نوار ابزار روی Home > Format > Format Cells کلیک کنید (یا میانبر Ctrl + 1 است ).
    2. کادر محاوره‌ای Format Cells باز می‌شود. تب Protection را انتخاب کنید، گزینه Locked را در صورت نیاز تیک بزنید یا بردارید ، سپس روی OK کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل
    3. برای اعمال محافظت، روی مرور > محافظت از برگه کلیک کنید.
    4. پنجره Protect Sheet باز می‌شود. یک رمز عبور وارد کنید و از کادرهای انتخاب برای تنظیم محافظتی که باید اعمال شود استفاده کنید، سپس روی تأیید کلیک کنید.
    5. در پنجره تأیید رمز عبور ، رمز عبور را دوباره وارد کنید و دوباره روی تأیید کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل

    انجام شد. اکنون برگه کار محافظت شده است. اگر کاربری سعی کند در یک سلول قفل شده تغییراتی ایجاد کند، یک پیام خطا ظاهر می‌شود:

    حذف کلمه عبور (Password) یک فایل اکسل

    پیام هشدار

    بسته به نسخه اکسل شما، هنگام تنظیم رمز عبور، پیام‌های هشدار متفاوتی وجود دارد.

    نسخه‌های قدیمی‌تر:

    احتیاط: اگر رمز عبور را گم یا فراموش کنید، قابل بازیابی نیست. توصیه می‌شود لیستی از رمزهای عبور و نام‌های مربوط به کتاب کار و برگه‌های مربوطه را در مکانی امن نگه دارید. (به یاد داشته باشید که رمزهای عبور به حروف کوچک و بزرگ حساس هستند.)

    نسخه‌های جدیدتر:

    محافظت از برگه به ​​محافظت از ویرایش‌های تصادفی کمک می‌کند .

    قبلاً این پیام مشابه رمز عبور باز کردن فایل بود. با این حال، این پیام به یک پیام هشدار ملایم‌تر تغییر یافته است. از آنجایی که این رمزهای عبور به راحتی قابل حذف هستند، پیام ملایم‌تر دقیق‌تر است.

    اجازه ویرایش رمزهای عبور محدوده‌ها

    گزینه «اجازه ویرایش محدوده‌ها» امکان ویرایش محدوده‌های تعریف‌شده را با استفاده‌های خاص یا در صورت ارائه رمز عبور فراهم می‌کند.

    برای تنظیم محدوده ویرایش مجاز:

    روی مرور > اجازه ویرایش محدوده‌ها کلیک کنید .

    حذف کلمه عبور (Password) یک فایل اکسل

    این کار کادر محاوره‌ای Allow Edit Ranges را باز می‌کند .

    حذف کلمه عبور (Password) یک فایل اکسل

    برای باز کردن کادر محاوره‌ای New Range، روی New کلیک کنید .

    در اینجا می‌توانیم عنوان، محدوده و رمز عبور را برای محدوده تنظیم کنیم، سپس روی تأیید کلیک کنیم .

    حذف کلمه عبور (Password) یک فایل اکسل

    در کادر تأیید رمز عبور ، رمز عبور را دوباره وارد کنید و دوباره روی تأیید کلیک کنید .

    حذف کلمه عبور (Password) یک فایل اکسل

    رمز عبور هنوز به محدوده اعمال نشده است. این محافظت فقط زمانی اعمال می‌شود که محافظت از برگه کار فعال باشد.

    هنگام تلاش برای ویرایش یک مقدار در محدوده‌ی «مجاز ویرایش» در یک برگه‌ی محافظت‌شده، کادری برای وارد کردن رمز عبور می‌بینیم.

    حذف کلمه عبور (Password) یک فایل اکسل

    پیام هشدار

    پیام هشدار همان رمز عبور باز کردن فایل است.

    احتیاط: اگر رمز عبور را گم یا فراموش کنید، قابل بازیابی نیست. توصیه می‌شود لیستی از رمزهای عبور و نام‌های مربوط به کتاب کار و برگه‌های مربوطه را در مکانی امن نگه دارید. (به یاد داشته باشید که رمزهای عبور به حروف کوچک و بزرگ حساس هستند.)

    با این حال، همانطور که بعداً در این پست خواهیم دید، این رمز عبور به راحتی قابل حذف است.

    رمزهای عبور محافظت از کتاب کار

    محافظت از کتاب کار به روشی مشابه محافظت از برگه کار اعمال می‌شود، اما با گزینه‌های کمتر. این ویژگی از تغییر ساختار یک کتاب کار توسط کاربران، مانند ایجاد یا تغییر نام برگه‌های کار، جلوگیری می‌کند.

    1. روی مرور > محافظت از کتاب کار از روبان کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل
    2. کادر محاوره‌ای Protect Structure باز می‌شود.  یک رمز عبور وارد کنید ، سپس روی OK کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل
      توجه: قبل از اکسل ۲۰۱۳، هر دو گزینه Structure و Window در دسترس بودند. با توجه به رابط سند واحد که در اکسل ۲۰۱۳ معرفی شده است، گزینه Windows دیگر مرتبط نیست و خاکستری شده است.
    3. در پنجره تأیید رمز عبور ، رمز عبور را دوباره وارد کنید و روی تأیید کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل

    ساختار کتاب کار اکنون محافظت شده است.

    پیام هشدار

    پیام هشدار هنگام وارد کردن مجدد رمز عبور، همان رمز عبور باز کردن فایل است.

    احتیاط: اگر رمز عبور را گم یا فراموش کنید، قابل بازیابی نیست. توصیه می‌شود لیستی از رمزهای عبور و نام‌های مربوط به کتاب کار و برگه‌های مربوطه را در مکانی امن نگه دارید. (به یاد داشته باشید که رمزهای عبور به حروف کوچک و بزرگ حساس هستند.)

    این پیام نشان می‌دهد که امنیت بالایی دارد. با این حال، این درست نیست. همانطور که بعداً در این پست خواهیم دید، می‌توانیم به راحتی این رمز عبور را حذف کنیم (آنقدر که مایکروسافت ادعا می‌کند امن نیست).

    رمزهای عبور پروژه VBA

    رمزهای عبور پروژه‌های VBA مانع از مشاهده یا تغییر کد یک پروژه VBA توسط کاربران می‌شوند.

    1. در پنجره ویرایشگر ویژوال بیسیک ،  روی ابزارها > ویژگی‌های پروژه VBA کلیک کنید…
    2. پنجره VBA Project – Project Properties باز می‌شود. تب Protection را انتخاب کنید ، گزینه Lock project for viewing را تیک بزنید ، یک رمز عبور وارد و تأیید کنید ، سپس روی OK کلیک کنید.

    پروژه VBA اکنون محافظت شده است. فایل اکسل را ببندید و دوباره باز کنید. هنگام گسترش پروژه VBA، کادری برای وارد کردن رمز عبور به کاربر نمایش داده می‌شود.

    حذف کلمه عبور (Password) یک فایل اکسل

    حذف هر نوع رمز عبور

    اگرچه ما شش نوع مختلف رمز عبور را در نظر گرفته‌ایم، اما یک فرمت استاندارد فایل اکسل این موارد را تنها به سه روش مدیریت می‌کند:

    • کد فایل XML - این بدان معناست که فایل عمدتاً با استفاده از کدی که در ساختار XML نوشته شده است، ساخته شده است. تنها چیزی که نیاز دارید کمی دانش است، ما می‌توانیم خودمان کد XML را ویرایش کنیم؛ به آسانی ویرایش متن.
    • رمزگذاری - از اکسل ۲۰۰۷، سطح حفاظت مایکروسافت برای باز کردن فایل‌ها به طور قابل توجهی افزایش یافته است. هنگام ذخیره فایل با رمز عبور باز کردن فایل، اکسل رمزگذاری را روی کد اعمال می‌کند.
    • فایل‌های دودویی پروژه VBA - پروژه‌های VBA به صورت فایل‌های دودویی در ساختار فرمت فایل اکسل ذخیره می‌شوند. رمزهای عبور یا نسخه‌های رمزگذاری شده آن رمزهای عبور در فایل دودویی VBA ذخیره می‌شوند.

    ادامه‌ی این پست فقط انواع فایل‌های مبتنی بر XML را پوشش می‌دهد که شامل فایل‌های ‎.xlsx‎، ‎.xlsm‎ و ‎.xlam‎ هستند.

    از آنجایی که رمزهای عبور به روش‌های مختلفی ذخیره می‌شوند، روش حذف آنها نیز متفاوت است.

     

    شکستن رمز عبور فایل باز شده (رمزگذاری شده)

    برای این روش اول رمز عبور، خبر بدی است. تنها راهی که من برای باز کردن یکی از این فایل‌ها می‌شناسم، حمله‌ی جستجوی فراگیر (brute-force) است. این به معنی امتحان کردن هر ترکیبی از هر حرفی است تا زمانی که رمز عبور شناسایی شود.

    فقط با استفاده از اعداد، حروف بزرگ و کوچک، یک رمز عبور ۸ رقمی ۲۱۸،۳۴۰،۱۰۵،۵۸۴،۸۹۶ ترکیب کاراکتری ممکن دارد. بنابراین، برای سرعت بخشیدن به کارها، هر نرم‌افزاری که از این رویکرد استفاده می‌کند، تمایل دارد روی الگوهای شناخته شده و ترکیب کلمات تمرکز کند. هرچه رمز عبور پیچیده‌تر باشد، شکستن آن زمان بیشتری می‌برد.

    اگر به دنبال یک نرم‌افزار شکستن رمز عبور اکسل برای مقابله با این نوع رمزهای عبور هستید، احتمالاً به ابزارها و سرویس‌های نرم‌افزاری شخص ثالث نیاز خواهید داشت که بتوانند حمله جستجوی فراگیر (brute-force) را با سرعت بالا انجام دهند. 

    من قبلاً یکی از این سرویس‌ها را امتحان کرده‌ام و نتایج خوبی داشته است، آنها را امتحان کنید: https://www.password-find.com . آنها ادعا می‌کنند که می‌توانند ۸۰٪ رمزهای عبور را پیدا کنند، که خیلی خوب است.

     

    شکستن رمز عبور فایل تغییر یافته

    حقیقت این است که ما حتی برای تغییر رمز عبور فایل به یک نرم‌افزار حذف رمز عبور اکسل نیاز نداریم. رمز عبور را می‌توان با ذخیره مجدد فایل با یک نام جدید حذف کرد.

    همین. تقریباً هیچ هدف امنیتی ندارد. خوب و ساده است.

    رمز عبور محدوده‌های ویرایش مجاز را بشکنید

    رمز عبور اجازه ویرایش محدوده‌ها فقط زمانی اعمال می‌شود که برگه محافظت شده باشد. اگر برگه محافظت نشده باشد، می‌توانیم هر محدوده را به صورت دستی حذف کنیم.

    بنابراین، اگر بتوانیم محافظ برگه کار را بشکنیم، می‌توانیم آن را حذف کنیم.

    رمزهای عبور کاربرگ و کتاب کار را بشکنید

    همانطور که در بالا ذکر شد، فایل‌های اکسل فقط فایل‌های متنی هستند که با فرمت خاصی نوشته شده‌اند و اکسل می‌تواند آن را تفسیر کند. بنابراین، اگر بتوانیم متن را ویرایش کنیم، می‌توانیم رمز عبور را حذف کنیم.

    اکسل خود رمز عبور را درون فایل ذخیره نمی‌کند. در عوض، از یک الگوریتم برای ایجاد یک کد تنظیم‌شده استفاده می‌کند؛ سپس کد تنظیم‌شده را درون فایل ذخیره می‌کند.

    هر رمز عبوری که وارد می‌کنیم از طریق همان الگوریتم پردازش می‌شود. اگر آن الگوریتم نتیجه یکسانی ایجاد کند، پس باید همان رمز عبور باشد و اکسل به ما اجازه می‌دهد تا کاربرگ یا کتاب کار را ویرایش کنیم.

    خوشبختانه، لازم نیست حمله‌ی جستجوی فراگیر (brute-force) را امتحان کنیم. همانطور که در بالا ذکر شد، می‌توانیم به سادگی کد را ویرایش کنیم.

    رمزهای عبور کتاب کار و برگه کار را به صورت دستی بشکنید

    اگر فکر می‌کنید برای حذف رمزهای عبور اکسل به نرم‌افزار نیاز دارید، از این روش شگفت‌زده خواهید شد. تنها چیزی که نیاز دارید یک ویرایشگر متن مانند Notepad است.

    من مدام در مورد فایل XML و ساختار فایل صحبت می‌کنم؛ بیایید نگاهی به آن بیندازیم. خواهید دید که خیلی ترسناک نیست.

     

    این روش می‌تواند فایل را خراب کند. بنابراین، قبل از امتحان کردن این روش، مطمئن شوید که از فایل پشتیبان تهیه کرده‌اید.

    1. مطمئن شوید که پسوند فایل‌ها در رایانه شما قابل مشاهده است. در هر پوشه ویندوز، روی View > Options کلیک کنید  .
    2. در کادر محاوره‌ای Folder Options ، روی تب View کلیک کنید ، تیک گزینه‌ی hide extensions for known file types را بردارید ، سپس روی OK کلیک کنید .
      حذف کلمه عبور (Password) یک فایل اکسل
    3. اکنون می‌توانید پسوند فایل ‎.xlsx‎ را مشاهده کنید.  نام فایل را به پسوند ‎.zip‎ تغییر دهید .
      حذف کلمه عبور (Password) یک فایل اکسل
    4. فایل زیپ را باز کنید، سپس به فایل \xl\workbooks.xml بروید . بخش هایلایت شده زیر نشان می‌دهد که رمزهای عبور modify و workbook protection کجا کدگذاری شده‌اند:
    5. حذف کلمه عبور (Password) یک فایل اکسل
    6. رمز عبور تغییر فایل با <fileSharing> شروع می‌شود و با next />
      تمام می‌شود. رمز عبور محافظت از ورک‌بوک با <workbookProtection> شروع می‌شود و با next /> تمام می‌شود. در مرحله بعد، به فایل \xl\worksheets\sheet1.xml در فایل زیپ
      بروید  . بخش هایلایت شده زیر نشان می‌دهد که محدوده‌های ویرایش مجاز و رمز عبور محافظت از ورک‌شیت کجا کدگذاری شده‌اند: رمز عبور محافظت از ورک‌شیت با <sheetProtection> شروع می‌شود و با next /> تمام می‌شود. رمزهای عبور محدوده‌های ویرایش مجاز با <protectedRanges> شروع می‌شوند و با </protectedRanges> تمام می‌شوند. برای هر برگه یک فایل .xml جداگانه وجود خواهد داشت.
      حذف کلمه عبور (Password) یک فایل اکسل

       
    7. فایل‌های XML مربوط به شیت‌ها و ورک‌بوک را خارج از پوشه زیپ ذخیره کنید.
    8. فایل‌ها را با یک ویرایشگر متن باز کنید. سپس بخش‌هایی از کد که در بالا هایلایت شده‌اند را پیدا کرده و حذف کنید.
    9. فایل‌های XML را ذخیره کنید، سپس آنها را دوباره در پوشه‌های زیپ در همان مکان‌ها کپی کنید.
    10. برای بازیابی فایل اصلی، نام آن را به پسوند .xlsx ، .xlsm یا .xlam تغییر دهید.

    توجه: برای اینکه این روش جواب بدهد، باید فایل‌های XML را تنظیم کنیم، سپس آنها را دوباره در پوشه zip در همان محل قرار دهیم. پوشه را کاملاً از حالت فشرده خارج نکنید، زیرا فرآیند فشرده‌سازی و باز کردن می‌تواند فایل اکسل را غیرقابل استفاده کند.

    اگر فایل اکسل را باز کنید، رمزهای عبوری که حذف کرده‌ایم دیگر وجود نخواهند داشت.

    کرک کردن فایل اکسل، فایل اکسل و تغییر رمزهای عبور با یک ماکرو

    روش دستی ممکن است کمی تمرین نیاز داشته باشد. به عنوان یک روش جایگزین، می‌توانیم از یک ماکرو برای انجام خودکار همان مراحل استفاده کنیم.

    کد VBA من برای شکستن رمزهای عبور اکسل در ادامه آمده است. شاید این بهترین ابزار موجود نباشد، اما بر اساس بازخوردهایی که دریافت کرده‌ام، با موفقیت به هزاران کاربر کمک کرده است.

    فایل دانلود از قبل شامل این ماکرو است و می‌تواند برای حذف رمزهای عبور اکسل برای کتاب کار، برگه کار، اجازه ویرایش محدوده‌ها و تغییر سناریوها استفاده شود.

    فایلی که قرار است رمز عبور آن حذف شود را ببندید.

    یک فایل اکسل جدید باز کنید و کد زیر را در یک ماژول استاندارد در ویرایشگر ویژوال بیسیک کپی کنید.

    Sub RemoveProtection()
    
    Dim dialogBox As FileDialog
    Dim sourceFullName As String
    Dim sourceFilePath As String
    Dim sourceFileName As String
    Dim sourceFileType As String
    Dim newFileName As Variant
    Dim tempFileName As String
    Dim zipFilePath As Variant
    Dim oApp As Object
    Dim FSO As Object
    Dim xmlSheetFile As String
    Dim xmlFile As Integer
    Dim xmlFileContent As String
    Dim xmlStartProtectionCode As Double
    Dim xmlEndProtectionCode As Double
    Dim xmlProtectionString As String
    
    'Open dialog box to select a file
    Set dialogBox = Application.FileDialog(msoFileDialogFilePicker)
    dialogBox.AllowMultiSelect = False
    dialogBox.Title = "Select file to remove protection from"
    
    If dialogBox.Show = -1 Then
        sourceFullName = dialogBox.SelectedItems(1)
    Else
        Exit Sub
    End If
    
    'Get folder path, file type and file name from the sourceFullName
    sourceFilePath = Left(sourceFullName, InStrRev(sourceFullName, "\"))
    sourceFileType = Mid(sourceFullName, InStrRev(sourceFullName, ".") + 1)
    sourceFileName = Mid(sourceFullName, Len(sourceFilePath) + 1)
    sourceFileName = Left(sourceFileName, InStrRev(sourceFileName, ".") - 1)
    
    'Use the date and time to create a unique file name
    tempFileName = "Temp" & Format(Now, " dd-mmm-yy h-mm-ss")
    
    'Copy and rename original file to a zip file with a unique name
    newFileName = sourceFilePath & tempFileName & ".zip"
    On Error Resume Next
    FileCopy sourceFullName, newFileName
    
    If Err.Number <> 0 Then
        MsgBox "Unable to copy " & sourceFullName & vbNewLine _
            & "Check the file is closed and try again"
        Exit Sub
    End If
    On Error GoTo 0
    
    'Create folder to unzip to
    zipFilePath = sourceFilePath & tempFileName & "\"
    MkDir zipFilePath
    
    'Extract the files into the newly created folder
    Set oApp = CreateObject("Shell.Application")
    oApp.Namespace(zipFilePath).CopyHere oApp.Namespace(newFileName).items
    
    'loop through each file in the \xl\worksheets folder of the unzipped file
    xmlSheetFile = Dir(zipFilePath & "\xl\worksheets\*.xml*")
    Do While xmlSheetFile <> ""
    
        'Read text of the file to a variable
        xmlFile = FreeFile
        Open zipFilePath & "xl\worksheets\" & xmlSheetFile For Input As xmlFile
        xmlFileContent = Input(LOF(xmlFile), xmlFile)
        Close xmlFile
    
        'Manipulate the text in the file
        xmlStartProtectionCode = 0
        xmlStartProtectionCode = InStr(1, xmlFileContent, "<sheetProtection")
    
        If xmlStartProtectionCode > 0 Then
    
            xmlEndProtectionCode = InStr(xmlStartProtectionCode, _
                xmlFileContent, "/>") + 2 '"/>" is 2 characters long
            xmlProtectionString = Mid(xmlFileContent, xmlStartProtectionCode, _
                xmlEndProtectionCode - xmlStartProtectionCode)
            xmlFileContent = Replace(xmlFileContent, xmlProtectionString, "")
    
        End If
    
        'Remove Range Protection
        xmlStartProtectionCode = 0
        xmlStartProtectionCode = InStr(1, xmlFileContent, "<protectedRanges")
    
        If xmlStartProtectionCode > 0 Then
    
            xmlEndProtectionCode = InStr(xmlStartProtectionCode, _
                xmlFileContent, "</protectedRanges>") + 18 '"</protectedRanges>" is 18 characters long
            xmlProtectionString = Mid(xmlFileContent, xmlStartProtectionCode, _
                xmlEndProtectionCode - xmlStartProtectionCode)
            xmlFileContent = Replace(xmlFileContent, xmlProtectionString, "")
    
        End If
    
        'Output the text of the variable to the file
        xmlFile = FreeFile
        Open zipFilePath & "xl\worksheets\" & xmlSheetFile For Output As xmlFile
        Print #xmlFile, xmlFileContent
        Close xmlFile
    
        'Loop to next xmlFile in directory
        xmlSheetFile = Dir
    
    Loop
    
    'Read text of the xl\workbook.xml file to a variable
    xmlFile = FreeFile
    Open zipFilePath & "xl\workbook.xml" For Input As xmlFile
    xmlFileContent = Input(LOF(xmlFile), xmlFile)
    Close xmlFile
    
    'Manipulate the text in the file to remove the workbook protection
    xmlStartProtectionCode = 0
    xmlStartProtectionCode = InStr(1, xmlFileContent, "<workbookProtection")
    If xmlStartProtectionCode > 0 Then
    
        xmlEndProtectionCode = InStr(xmlStartProtectionCode, _
            xmlFileContent, "/>") + 2 ''"/>" is 2 characters long
        xmlProtectionString = Mid(xmlFileContent, xmlStartProtectionCode, _
            xmlEndProtectionCode - xmlStartProtectionCode)
        xmlFileContent = Replace(xmlFileContent, xmlProtectionString, "")
    
    End If
    
    'Manipulate the text in the file to remove the modify password
    xmlStartProtectionCode = 0
    xmlStartProtectionCode = InStr(1, xmlFileContent, "<fileSharing")
    If xmlStartProtectionCode > 0 Then
    
        xmlEndProtectionCode = InStr(xmlStartProtectionCode, xmlFileContent, _
            "/>") + 2 '"/>" is 2 characters long
        xmlProtectionString = Mid(xmlFileContent, xmlStartProtectionCode, _
            xmlEndProtectionCode - xmlStartProtectionCode)
        xmlFileContent = Replace(xmlFileContent, xmlProtectionString, "")
    
    End If
    
    'Output the text of the variable to the file
    xmlFile = FreeFile
    Open zipFilePath & "xl\workbook.xml" & xmlSheetFile For Output As xmlFile
    Print #xmlFile, xmlFileContent
    Close xmlFile
    
    'Create empty Zip File
    Open sourceFilePath & tempFileName & ".zip" For Output As #1
    Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
    Close #1
    
    'Move files into the zip file
    oApp.Namespace(sourceFilePath & tempFileName & ".zip").CopyHere _
    oApp.Namespace(zipFilePath).items
    'Keep script waiting until Compressing is done
    On Error Resume Next
    Do Until oApp.Namespace(sourceFilePath & tempFileName & ".zip").items.Count = _
        oApp.Namespace(zipFilePath).items.Count
        Application.Wait (Now + TimeValue("0:00:01"))
    Loop
    On Error GoTo 0
    
    'Delete the files & folders created during the sub
    Set FSO = CreateObject("scripting.filesystemobject")
    FSO.deletefolder sourceFilePath & tempFileName
    
    'Rename the final file back to an xlsx file
    Name sourceFilePath & tempFileName & ".zip" As sourceFilePath & sourceFileName _
    & "_" & Format(Now, "dd-mmm-yy h-mm-ss") & "." & sourceFileType
    
    'Show message box
    MsgBox "The workbook and worksheet protection passwords have been removed.", _
    vbInformation + vbOKOnly, Title:="Password protection"
    
    End Sub

    ماکروی بالا را اجرا کنید.

    به فایلی که حاوی رمز عبور برای حذف است  بروید و آن را انتخاب کنید، سپس روی تأیید کلیک کنید .

    ماکرو یک فایل جدید با رمزهای عبور محافظت شده حذف شده ایجاد می‌کند.

    نکته - این ماکرو روی مک کار نمی‌کند، فقط روی کامپیوتر ویندوزی کار می‌کند.

    پیام‌های خطای رایج و راه‌حل‌های مربوط به این ماکرو

    اگر با پیام‌های خطای زیر مواجه شدید، دلیل آن می‌تواند یکی از موارد زیر باشد:

    خطای زمان اجرا '53': فایل پیدا نشد :

    • فایل workbook از نوع .xlsb است؛ ماکرو فقط روی فایل‌های با فرمت .xlsx، .xlsm و .xlam کار می‌کند.

    خطای زمان اجرا '76': فایل یافت نشد:

    • فایل ورک‌بوک از نوع xls است؛ ماکرو فقط روی فایل‌هایی با پسوند .xlsx، .xlsm یا .xlam کار می‌کند.
    • روی فایل ورک‌بوک رمز عبور برای باز کردن آن اعمال شده است.

    خطای زمان اجرا '91': متغیر شیء یا متغیر بلوک تنظیم نشده است :

    • شما ماکرو را به جای کامپیوتر، روی مک اجرا می‌کنید.

    خطای زمان اجرا '5': فراخوانی نامعتبر تابع در xml خوانده شده در رشته

    • با کاربرگ‌های بسیار بزرگ کار نمی‌کند - ماکرو فایل XML را به یک رشته تبدیل می‌کند. بنابراین اگر رشته بیش از ۲ میلیارد کاراکتر باشد، باعث خطای VBA می‌شود.

    نکات دیگر برای استفاده موفقیت‌آمیز از این ماکرو:

    • مطمئن شوید که کتاب کار روی رایانه شخصی شما ذخیره شده است

    شکستن رمز عبور باینری پروژه VBA با یک ماکرو

    در نهایت، به رمزهای عبور دودویی پروژه VBA می‌رسیم. بسیاری از آموزش‌ها استفاده از ویرایشگر HEX را برای حذف رمز عبور پیشنهاد می‌کنند. اما یک راه بهتر و ساده‌تر هم وجود دارد.

    یک ماکروی شگفت‌انگیز وجود دارد که ویرایشگر ویژوال بیسیک را گیج می‌کند و کد را قابل مشاهده می‌کند.

    من نمی‌توانستم این ماکرو را در یک میلیون سال هم بنویسم. من ادعا نمی‌کنم که نویسنده این کد هستم، کد را از یک تاپیک در Stack Overflow کامپایل کرده‌ام: https://stackoverflow.com/questions/1026483/is-there-a-way-to-crack-the-password-on-an-excel-vba-project

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

    مطمئن شوید که فایل ورک‌بوک حاوی پروژه VBA قفل‌شده باز است.

    یک فایل اکسل جدید ایجاد کنید و کد زیر را در یک ماژول استاندارد VBA کپی کنید، سپس ماکروی VBAUnprotected را اجرا کنید .

    فایل دانلود از قبل شامل این ماکرو است و می‌تواند برای حذف رمز عبور VBA استفاده شود.

    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
    
    
    ''''RUN THE CODE BELOW''''
    Sub VBAUnprotected()
    
    If Hook Then
        MsgBox "VBA Project is unprotected!", vbInformation, "*****"
    End If
    
    End Sub

    این کد رمز عبور اصلی را حذف نمی‌کند. برای حذف یا تغییر رمز عبور، به تنظیمات VBA Project Properties بروید تا تنظیمات موجود را تغییر دهید.

    لطفاً توجه داشته باشید که این ماکرو فقط با رمزهای عبوری که با استفاده از ویژگی استاندارد رمز عبور VBA اکسل ایجاد شده‌اند، کار می‌کند. پروژه‌های VBA محافظت‌شده با Unviewable+ (یا نرم‌افزارهای مشابه) قابل کرک نیستند.

    نتیجه‌گیری

    خب، این نحوه‌ی شکستن رمزهای عبور اکسل با VBA بود.

    برای کاربرگ، امکان ویرایش محدوده‌ها، کاربرگ

     
     

     

     



    برای دانلود فایل های پیوست، می بایست در سایت ثبت نام و وارد شوید

    ورود، ثبت نام


    نظرات ارسال شده ارسال نظر جدید
    برای تبادل نظر، می بایست در سایت وارد شوید

    ورود به سایت
تماس سبد خرید بالا