হ্যাশ ফাংশন হল এক ধরনের ফাংশনের জন্য একটি সাধারণ শব্দ এই ধরনের ফাংশনের ইনপুট হল নির্বিচারে বাইনারি ডেটা, এবং আউটপুট হল একটি নির্দিষ্ট দৈর্ঘ্যের বাইনারি ডেটা এই ধরনের ফাংশনের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
ইউনিডাইরেকশনালিটি: ইনপুট থেকে আউটপুট গণনা করা সহজ এবং দ্রুত, কিন্তু আউটপুট থেকে ইনপুট বের করা গাণিতিকভাবে অসম্ভব
সংঘর্ষের সীমাবদ্ধতা: একই আউটপুট সহ দুটি ভিন্ন ইনপুট খুঁজে পাওয়া অত্যন্ত কঠিন
এই বৈশিষ্ট্যগুলিকে সন্তুষ্ট করে এমন ফাংশনগুলিকে হ্যাশ ফাংশন বলা যেতে পারে । হ্যাশ ফাংশনের ইনপুট হিসাবে একটি নির্দিষ্ট ডেটা ব্যবহার করুন এবং আউটপুট গণনা করুন এই আউটপুটটিকে ডেটার হ্যাশ মান বলা প্রথাগত ।
হ্যাশ ফাংশনের একটি প্রধান কাজ হল পাসওয়ার্ডটি সরাসরি সংরক্ষণ করা নয় (অর্থাৎ, প্লেইন টেক্সট পাসওয়ার্ড সংরক্ষণ করা হয় না), তবে পাসওয়ার্ডের হ্যাশ মান সংরক্ষণ করা হয় যাচাইকরণের সময়, আপনাকে শুধুমাত্র ইনপুট করা পাসওয়ার্ডটি আবার গণনা করতে হবে পাসওয়ার্ডটি সঠিক কিনা তা জানতে সংরক্ষিত পাসওয়ার্ডের হ্যাশ মানের সাথে তুলনা করা যেতে পারে । হ্যাশ ফাংশনের একমুখী প্রকৃতি এবং সংঘর্ষের সীমাবদ্ধতার কারণে, আক্রমণকারী পাসওয়ার্ডের হ্যাশ মান পেলেও পাসওয়ার্ডটি জানা কঠিন ।
আক্রমণকারী পাসওয়ার্ডের হ্যাশ মান পেয়েছে, সত্যিই কি পাসওয়ার্ড নিজেই জানার কোন উপায় নেই? অবশ্যই না, যদিও পাসওয়ার্ডের হ্যাশ মান থেকে সরাসরি পাসওয়ার্ড গণনা করা গাণিতিকভাবে সম্ভব নয়, আমরা জানি যে হ্যাশ ফাংশনটি ইনপুট থেকে আউটপুট গণনা করা সহজ এবং দ্রুত, আপনি এটি চেষ্টা করতে পারেন শুধুমাত্র পাসওয়ার্ড যা মানুষ সেট করতে পারে, আপনি যদি ভাগ্যবান হন তবে আপনি এখনও এটি চেষ্টা করতে পারেন । ক্রমাগত হ্যাশ মানের সাথে সম্পর্কিত ইনপুট পাওয়ার চেষ্টা করার অপারেশনটিকে ব্লাস্টিং বলা হয় ।
এই ধারণার উপর ভিত্তি করে, হ্যাশক্যাটের জন্ম হয়েছিল বলা হয় যে হ্যাশকে বিস্ফোরিত করা খুবই সহজ । হ্যাশক্যাট নিজেকে বিশ্বের দ্রুততম হ্যাশ ব্লাস্টিং টুল বলে দাবি করে এবং এটি এমনকি GPU এবং FGPA সমর্থন করে, যদি আপনার কাছে থাকে ।
হ্যাশক্যাট শুধুমাত্র দ্রুতই নয়, পেশাদারভাবে দুইশোরও বেশি হ্যাশ ফাংশন সমর্থন করে, কমান্ডটি ব্যবহার করে:
হ্যাশক্যাট --সাহায্য
আপনি হ্যাশক্যাট দ্বারা সমর্থিত সমস্ত হ্যাশ ফাংশনের একটি তালিকা দেখতে পারেন, আমি এখানে পোস্ট করব না ।
হ্যাশক্যাট ডিফল্টরূপে কালিতে ইনস্টল করা আছে এবং সরাসরি ব্যবহার করা যেতে পারে ।কিন্তু আমার কালি ভার্চুয়ালবক্সে ইনস্টল করা আছে, এবং আমি সবসময় অনুভব করি যে ভার্চুয়াল সুযোগটি ধীর, তাই আমি একটি শারীরিক হোস্টে হ্যাশক্যাট ব্যবহার করতে চাই । হ্যাশক্যাট ডাউনলোড করার জন্য প্রথমে হ্যাশচ্যাটের অফিসিয়াল ওয়েবসাইটে যান, সর্বশেষ সংস্করণটি হল v3.5.0, যা আপডেটের তারিখ থেকে দেখা যায় যে হ্যাশচ্যাট প্রাণশক্তিতে পূর্ণ । এটি সংকলনের ঝামেলা দূর করে এবং বাইনারি প্যাকেজটি সরাসরি ডাউনলোড করে, যা মাত্র 2.7M, যা প্রায়শই কয়েক ডজন গিগাবাইট খরচ করে এমন গেমের তুলনায় খুবই ছোট ।
ডাউনলোড সম্পন্ন হওয়ার পরে, হ্যাশক্যাটটি আনকম্প্রেস করুন এবং দেখুন:
এই ধরনের ফাইল যথাক্রমে 32-বিট এবং 64-বিটের অধীনে লিনাক্স এবং উইন্ডোজে এক্সিকিউটেবল ফাইলগুলির জন্য, আপনার কম্পিউটারের অবস্থা অনুযায়ী তাদের মধ্যে একটি বেছে নিন । আমি hashcat64.bin বেছে নিয়েছি সৌন্দর্যের জন্য, ~/.bashrc ফাইলে একটি লাইন যোগ করুন:
alias hashcat='hashcat64.bin এর পথ '
সংরক্ষণ করার পরে, ~/.bashrc ফাইলটি কার্যকর করার জন্য ভার্চুয়াল টার্মিনালটি পুনরায় খুলুন, আপনি যেখানেই থাকুন না কেন, আপনি সরাসরি হ্যাশক্যাট কমান্ডটি লিখতে পারেন, ডিরেক্টরি পরিবর্তন না করেই বা কুৎসিত "64.bin" লিখতে হবে । নীচের ছবিতে দেখানো হয়েছে ।
ঠিক আছে, এখন আপনি হ্যাশক্যাট ব্যবহার করে বিভিন্ন হ্যাশ বিস্ফোরণ শুরু করতে পারেন ।
md5 সবচেয়ে বিখ্যাত এবং সর্বাধিক ব্যবহৃত হ্যাশ ফাংশনগুলির মধ্যে একটি হওয়া উচিত । প্রথমে ব্লাস্টিংয়ের জন্য বেশ কয়েকটি md5 মান তৈরি করতে পাইথন ব্যবহার করুন:
import hashlib পাসওয়ার্ড = ['123123', 'বন্ড007', 'xxxxxx', '*H@&(NT*@BR#^'] পাসওয়ার্ডের জন্য পাসওয়ার্ডগুলিতে: md5 = hashlib.md5() md5.update(পাসওয়ার্ড) print md5.hexdigest()
উপরের কোডটি যথাক্রমে চারটি স্ট্রিংয়ের হ্যাশ মান গণনা করে:
4297f44b13955235245b2497399d7a93 cbdb7e2b1ed566ceb796af2df07205a3 dad3a37aa9d50688b5157698acfd7aee d77db958c179bbffae04b2b908b75c26
md5.hash ফাইলে আউটপুট ফলাফল সংরক্ষণ করুন, প্রতি লাইনে একটি hahs মান । তারপর এই হ্যাশ মানগুলি ব্লাস্ট করতে হ্যাশক্যাট ব্যবহার করুন কমান্ডটি নিম্নরূপ:
hashcat -w 3 -a 0 -m 0 --সরান -o md5.out md5.hash wordlist.dic
প্যারামিটার -w কাজের মোড নির্দিষ্ট করতে ব্যবহৃত হয়, যেমন নীচের সারণীতে দেখানো হয়েছে:
| N | পারফরম্যান্স | Runtime | Power Consumption | Desktop Impact |
|---|---|---|---|---|
| 1 | Low | 2 ms | Low | Minimal |
| 2 | Default | 12 ms | অর্থনৈতিক | লক্ষণীয় |
| 3 | High | 96 ms | High | Unresponsive |
| 4 | Nightmare | 480 ms | Insane | হেডলেস |
প্যারামিটার -a আক্রমণের মোড নির্দিষ্ট করতে ব্যবহৃত হয় । 0 এর অর্থ সরাসরি এবং ক্রমাগত, অর্থাৎ, এটি একটি পাসওয়ার্ড অভিধান দিয়ে বিস্ফোরিত হয় । মান -a পাঁচটি প্রকার আছে, যেমন নীচের সারণীতে দেখানো হয়েছে:
| N | Mode |
|---|---|
| 0 | সোজা |
| 1 | সমন্বয় |
| 3 | Brute-force |
| 6 | হাইব্রিড শব্দ তালিকা + মুখোশ |
| 7 | হাইব্রিড মাস্ক + ওয়ার্ডলিস্ট |
-m একটি হ্যাশ ফাংশন যা ব্লাস্ট করার জন্য হ্যাশ মান নির্দিষ্ট করতে ব্যবহৃত হয়, 0 মানে হ্যাশ ফাংশন হল md5, অন্যান্য মানগুলি নীচের সারণীতে দেখানো হয়েছে:
| N | Name | Category |
|---|---|---|
| 0 | MD5 | কাঁচা হ্যাশ |
| 300 | MySQL4.1/MySQL5 | ডাটাবেস সার্ভার |
| 1000 | NTLM | অপারেটিং সিস্টেম |
| 1800 | sha512crypt $6$, SHA512 (Unix) | অপারেটিং সিস্টেম |
| 2611 | vBulletin < v3.8.5 | ফোরাম, CMS, ই-কমার্স, ফ্রেমওয়ার্ক |
এই টেবিলটি খুব দীর্ঘ, আমি এখানে এই নিবন্ধে জড়িত কয়েকটি হ্যাশ ফাংশন দেখাচ্ছি, আপনি প্যারামিটার – সাহায্য ব্যবহার করে সব দেখতে পারেন ।
প্যারামিটার – অপসারণের অর্থ হল যদি একটি নির্দিষ্ট হ্যাশ মান সফলভাবে বিস্ফোরিত হয়, তাহলে মানটি md5 থেকে সরানো হবে । হ্যাশ সরানো হয়েছে ।
প্যারামিটার -o একটি ফাইলের নাম দ্বারা অনুসরণ করা হয়, যা নির্দেশ করে যে ব্লাস্টিং ফলাফল কোথায় সংরক্ষণ করা হয়েছে ।
শেষ দুটি প্যারামিটার হল md5 । হ্যাশ এবং ওয়ার্ডলিস্ট । dic হল যথাক্রমে হ্যাশ মান এবং পাসওয়ার্ড অভিধান যা বিস্ফোরিত হবে হ্যাশ মান এবং পাসওয়ার্ড অভিধান উভয়ই একটি লাইনে । md5.hash-এর বিষয়বস্তু পাইথন দ্বারা গণনা করা হয়েছে যদি আপনার হাতে একটি উপযুক্ত পাসওয়ার্ড অভিধান না থাকে, আপনি কমান্ডটি ব্যবহার করতে পারেন:
wget -O wordlist.dic https://samsclass.info/123/proj10/500_passwords.txt
下载一个。现在完事具备,按下回车,结果华丽地报错:(
clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR
সম্ভবত কিছু অপারেটিং পরিবেশের অভাব রয়েছে, তাই এটি ইনস্টল করুন । আমি এই জিনিসগুলি মোট ইনস্টল করেছি:
sudo apt-get install gcc make p7zip-full git lsb-core wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9019/opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz সিডি opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25 sudo ./install.sh
যদি নেটওয়ার্কের গতি ভাল হয়, তাহলে এটি কিছুক্ষণের মধ্যে ঠিক হয়ে যাবে:
/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link /sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link
কিন্তু এটা কিছুই প্রভাবিত করে বলে মনে হচ্ছে না, তাই উপেক্ষা করুন । এইগুলি ইনস্টল করার পরে, আবার এন্টার টিপুন এবং কমান্ডটি চালান যা মূলত ত্রুটি রিপোর্ট করেছিল আমি দেখতে পেলাম যে আবার কোনও ত্রুটি রিপোর্ট করা হয়নি এবং এটি এক মুহুর্তের মধ্যে সম্পন্ন হয়েছিল । কমান্ডটি কার্যকর করার পরে, md5.hash এবং md5.out ফাইলের বিষয়বস্তু পরীক্ষা করুন এবং দেখুন যে md5.hash-এ শুধুমাত্র একটি হ্যাশ অবশিষ্ট রয়েছে যা সফলভাবে ব্লাস্ট করা হয়েছে md5.out ফাইলে স্থানান্তরিত হয়েছে । md5.out তিনটি হ্যাশ মান এবং তাদের মূল মান নীচের চিত্রে দেখানো হয়েছে:
উইন্ডোজ লগইন পাসওয়ার্ডের হ্যাশ মান SAM ফাইলে সংরক্ষিত হয়, যা "সিকিউরিটি অ্যাকাউন্ট ম্যানেজার" এর সংক্ষিপ্ত রূপ । সাধারণত, এটি
C:\Windows\system32\config\SAM
এ অবস্থিত SAM ফাইলটি উইন্ডোজ দ্বারা সুরক্ষিত এবং সরাসরি পড়া যায় না, যার জন্য একটি সরঞ্জামের সাহায্য প্রয়োজন, যেমন SAMInside । একটি উইন্ডোজ 7 ভার্চুয়াল মেশিন খুঁজুন, হ্যাশক্যাট নামে একটি নতুন অ্যাডমিনিস্ট্রেটর ব্যবহারকারী তৈরি করুন এবং একটি পাসওয়ার্ড সেট করুন, উইন্ডোজ 7-এ SAMInside ডাউনলোড করুন এবং আনকম্প্রেস করুন এবং এটি প্রশাসক অধিকারের সাথে চালান, তারপরে ফাইল-> স্থানীয় ব্যবহারকারীদের ভিস শিডিউলারে আমদানি করুন, যেমন নীচের ছবিতে দেখানো হয়েছে:
এর পরে, SAMInside "অসাড়া" হতে পারে, কিন্তু এটি কোন ব্যাপার না, ধৈর্য ধরে কয়েক সেকেন্ড অপেক্ষা করুন, SAMInside আমাদের প্রত্যাশা অনুযায়ী বেঁচে থাকে এবং আমরা যে হ্যাশটি চাই তা পড়ে, যেমন নীচের ছবিতে দেখানো হয়েছে:
ব্যবহারকারী "হ্যাশক্যাট" নির্বাচন করুন যাকে আমরা পাসওয়ার্ড বিস্ফোরিত করতে চাই, NT-হ্যাশ অনুলিপি করতে Ctrl+5 টিপুন, তারপর উবুন্টুতে ফিরে যান যেখানে হ্যাশক্যাট ইনস্টল করা আছে, অনুলিপি করা হ্যাশ মান ফাইল win7.hash-এ সংরক্ষণ করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
echo 356ceae0c89fbb19 356ceae0c89fb65ed6d6aa7a445c4ce5:rush2112
কিভাবে SAM ফাইল পেতে হয়, অনুগ্রহ করে "উইন্ডোজ হ্যাশ সিরিজ 1 কীভাবে রপ্তানি করবেন" দেখুন । ভার্চুয়াল মেশিন উইন্ডোজ 7 এ SAM ফাইলটি পড়ার প্রক্রিয়াটি নিম্নলিখিত ।
যদি এটি একটি ফিজিক্যাল মেশিন হয়, তাহলে মেশিনটি শুরু করতে Win PE ব্যবহার করুন এবং ডিস্কে SAM ফাইলটি পড়ুন । আমার একটি ভার্চুয়াল মেশিন । আপনি ফাইল সিস্টেমে ভার্চুয়াল ডিস্ক ফাইল মাউন্ট করে ভার্চুয়াল ডিস্কে ফাইলগুলি পড়তে পারেন । আমি যে ভার্চুয়াল মেশিনটি ব্যবহার করি তা হল ভার্চুয়ালবক্স, যা vdfuse কমান্ড ব্যবহার করে করা যেতে পারে । আপনার যদি vdfuse না থাকে তবে আপনাকে প্রথমে ভার্চুয়ালবক্স-ফিউজ ইনস্টল করতে হবে:
sudo apt-get install virtualbox-fuse
আপনি ভার্চুয়ালবক্স ডাউনলোড করতে পারেন -ফিউজ ইনস্টলেশন প্যাকেজ নিজেই ইনস্টল করুন ।
ইনস্টলেশন সম্পন্ন হওয়ার পরে, আপনার কাছে vdfuse কমান্ড রয়েছে এবং আপনি ভার্চুয়াল ডিস্ক ম্যাপিং এবং মাউন্ট শুরু করতে পারেন:
mkdir -p ~/vmdisk sudo vdfuse -t vmdk -f Win7Pro32.vmdk ~/vmdisk/
এই ধাপটি সম্পাদন করার পরে ~/vmdisk ডিরেক্টরি দেখুন, যেখানে তিনটি ফাইল রয়েছে: EntireDisk, Partition1 এবং Partition2, নতুন ডিরেক্টরি তৈরি করুন:
mkdir -p ~/vmdisk_en mkdir -p ~/vmdisk_1 mkdir -p ~/vmdisk_2
মাউন্ট কমান্ড ব্যবহার করে তিনটি ফাইল মাউন্ট করুন:
sudo মাউন্ট ~/vmdisk/EntireDisk ~/vmdisk_en sudo মাউন্ট ~/vmdisk/Partition1 ~/vmdisk_1 sudo mount ~/vmdisk/Partition2 ~/vmdisk_2
পাওয়া গেছে, সম্পূর্ণ ডিস্ক মাউন্ট ব্যর্থ হয়েছে, পার্টিশন 1 এর বিষয়বস্তু আমি যা চেয়েছিলাম তা নয়, পার্টিশন 2 উইন্ডোজ 7 ভার্চুয়াল মেশিনের ফাইল, যা আমি চেয়েছিলাম । vmdisk_fs থেকে আমাদের টার্গেট SAM ফাইলটি অনুলিপি করুন:
cp ~/vmdisk_2/Windows/System32/config/SAM ./
যাইহোক, সিস্টেম ফাইলটি অনুলিপি করুন:
cp ~/vmdisk_2/Windows/System32/config/SYSTEM ./
SAM ফাইলের বিষয়বস্তু দেখুন, যেমনটি নীচের ছবিতে দেখানো হয়েছে, এটি একটি প্লেইন টেক্সট ফাইল নয়, এটি সত্যিই উইন্ডোজের স্টাইল,
ঠিক আছে, যদিও আমরা সফলভাবে SAM ফাইলটি খুলেছি, আমরা এখনও হ্যাশ পাইনি, পরবর্তী পরিবর্তনের জন্য আমাদের কী করা উচিত? আপনি শুধুমাত্র সরঞ্জামগুলির সাহায্যে SAM ফাইলের বিষয়বস্তু পার্স করতে পারেন । কালিতে স্যাম ফাইল এবং সিস্টেম ফাইল উভয়ই রাখুন এবং কমান্ডটি চালান:
samdump2 -o sam.hash SYSTEM sam
তারপর sam.hash দেখুন, আপনি প্রতিটি ব্যবহারকারীর লগইন পাসওয়ার্ডের হ্যাশ মানও দেখতে পারেন । sam.hash ফাইলের প্রতিটি লাইন একজন ব্যবহারকারী, এবং প্রতিটি লাইনের বিন্যাস হল:
ব্যবহারকারীর নাম: RID: LM-hash value: NTLM-hash value
মনে রাখবেন যে এই বিন্যাসটি samdump2 কমান্ড আউটপুট বিন্যাস, "উইন্ডোজের অধীনে হ্যাশ পাসওয়ার্ড বিন্যাস" নয় ।
প্রথমত, আপনার একটি লিনাক্স সিস্টেম চালানোর জন্য একটি কম্পিউটার থাকতে হবে, এটি বলা সহজ, ভার্চুয়াল মেশিন যথেষ্ট । তারপরে, একটি নতুন ব্যবহারকারী যোগ করতে এবং আমাদের বিস্ফোরণের জন্য একটি পাসওয়ার্ড সেট করতে নিম্নলিখিত কমান্ডটি চালান:
sudo adduser justforfun
লিনাক্সে ব্যবহারকারীর লগইন পাসওয়ার্ডের হ্যাশ মান ফাইল /etc/shadow-এ সংরক্ষণ করা হয় (দ্রষ্টব্য: /etc/passwd নয়) নতুন ব্যবহারকারীর লগইন পাসওয়ার্ডের হ্যাশ মান দেখতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
test@test-VirtualBox:~$ sudo tail -n 1 /etc/shadow justforfun:$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:17373:0:99999:7:::
টেইল কমান্ডটি একটি ফাইলের শেষ কয়েকটি লাইন পড়তে ব্যবহৃত হয়, ডিফল্টরূপে 10 লাইন, প্যারামিটার -n দিয়ে লাইনের সংখ্যা নির্দিষ্ট করুন । আমরা যে নতুন ব্যবহারকারীটি তৈরি করেছি তা স্বাভাবিকভাবেই শেষ লাইনে রয়েছে, তাই আমরা এটি পড়তে tail -n 1 ব্যবহার করি । পড়া ফলাফল হল ":" দ্বারা বিভক্ত ডেটা, প্রথম অংশটি ব্যবহারকারীর নাম "justforfun", দ্বিতীয় অংশটি পাসওয়ার্ডের হ্যাশ মান, অন্যান্য অংশগুলি এই নিবন্ধে চিন্তা করার দরকার নেই । আমরা দ্বিতীয় অংশে ফোকাস করব ।
দিয়ে শুরু হওয়া "$6$" বলতে বোঝায় যে ব্যবহৃত হ্যাশ ফাংশনের ধরন হল SHA-512 "$6$" ছাড়াও, লিনাক্সে, "$1$" MD5 এবং "$2a$" বোঝায় । ব্লোফিশ, "$2y$" বলতে বোঝায় ব্লোফিশ (8-বিট অক্ষরের সঠিক পরিচালনা), "$5$" SHA-256 বোঝায়, বিস্তারিত জানার জন্য উইকিপিডিয়া:পাসডব্লিউডি দেখুন । উপরন্তু, ফাইল /etc/login.defs এছাড়াও হ্যাশ অ্যালগরিদম ব্যাখ্যা করে ।
"$6$" থেকে পরবর্তী "$" এর আগে অংশ "0fokwg59" হল লবণ (SALT)। লবণ কি? Baidu জানে যে " md5 লবণের মান কী" প্রশ্নের CNB2009 এর উত্তরটি সহজ এবং বোঝা সহজ:
সহজভাবে বলতে গেলে, এটি একই পাসওয়ার্ড তৈরি করার একটি উপায় । বিভিন্ন হ্যাশ মান মানে লবণাক্তকরণ । MD5 নিজেই অপরিবর্তনীয়, কিন্তু বর্তমানে ইন্টারনেটে অনেকগুলি ডাটাবেস রয়েছে যা অ্যান্টি-কোয়েরি সমর্থন করে যদি ব্যবহারকারীর পাসওয়ার্ড ডাটাবেস ঘটনাক্রমে ফাঁস হয়ে যায়, তাহলে হ্যাকাররা অ্যান্টি-কোয়েরির মাধ্যমে ব্যবহারকারীর পাসওয়ার্ড পেতে পারে, অথবা হ্যাশ কোডগুলি পেতে পারে যা প্রায়শই ডাটাবেসে প্রদর্শিত হয় । (অর্থাৎ, অনেক লোক দ্বারা ব্যবহৃত) সহিংস ক্র্যাকিংয়ের জন্য (কারণ এটি সাধারণত একটি দুর্বল পাসওয়ার্ড)। লবণ মান হল একটি অতিরিক্ত র্যান্ডম মান যা পাসওয়ার্ড হ্যাশ প্রক্রিয়া চলাকালীন যোগ করা হয়, উদাহরণস্বরূপ, আমার আইডি হল 123456, যখন এটি ডাটাবেসে সংরক্ষণ করা হয়, আপনি "123456/123456/ এইভাবে, যখন আরেকটি বোকা পাসওয়ার্ড 123456 হয়, তখনও বিভিন্ন হ্যাশ মান তৈরি করা যেতে পারে এবং সফলভাবে যাচাই করা যেতে পারে । এই সময়ে, আমার আইডি পাসওয়ার্ডে জটিল হ্যাশ করার জন্য একটি লবণ মান হিসাবে ব্যবহৃত হয় । তাই কি । . লবণ মান ভূমিকা ডাটাবেস ফাঁস দ্বারা সৃষ্ট ক্ষতি কমাতে হয় । যদি আপনার RP খুব ভাল হয় এবং আমার পাসওয়ার্ড 123456 সঠিকভাবে অনুমান করে, আমি আপনাকে থামাতে পারব না
এই উত্তরটি md5 এর জন্য, এবং অন্যান্য হ্যাশ ফাংশনের ক্ষেত্রেও একই কথা সত্য । লবণের পরে অংশটি হ্যাশ মান । এখন পুরো দ্বিতীয় অংশটি linux.hash ফাইলে অনুলিপি করুন, linux.hash এর বিষয়বস্তু হওয়া উচিত:
$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0
তারপর লিনাক্স লগইন পাসওয়ার্ড হ্যাশ ব্লাস্ট করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
hashcat -w 3 -a 0 -m 1800 --মুছে ফেলুন -o linux.out linux.hash wordlist.dic
কিছুক্ষণ পরে, ব্লাস্টিং সম্পন্ন হয়, ফলাফল দেখুন:
werner@Yasser:~/hashcat$ cat linux.out $6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:4321
দেখা যায় যে বিস্ফোরণ সফল হয়েছে ।
ব্লাস্ট করুন প্রথমে, আপনার অবশ্যই মাইএসকিউএল থাকতে হবে । আমার ভার্চুয়াল মেশিনে এটি আছে । Baidu জানে যে Mysql লগইন পাসওয়ার্ডের হ্যাশ মান user.MYD ফাইলে সংরক্ষণ করা হয়েছে । user.MYD ফাইলটি কোথায়? আমিও জানি না, তাই শুধু এটি খুঁজুন:
test@test-VirtualBox:~$ sudo find / -name user.MYD /var/lib/mysql/mysql/user.MYD
এটি /var/lib/mysql/mysql/user.MYD-এ পাওয়া গেছে, ফাইলের বিষয়বস্তু দেখুন:
sudo cat /var/lib/mysql/mysql/user.MYD
একটি প্লেইন টেক্সট ফাইল নয়, এটি খুব বেশি গুরুত্বপূর্ণ নয়, আমরা এখনও দেখতে পাচ্ছি যে ব্যবহারকারীর রুট লগইন পাসওয়ার্ডের হ্যাশ মান হল:
6B825255FB466413D6B1B724644E23428C94BBCB
এই মানটি mysql.hash ফাইলে সংরক্ষণ করুন এবং mysql লগইন পাসওয়ার্ড হ্যাশ ব্লাস্ট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
{}
কিছুক্ষণ পরে, ব্লাস্টিং সম্পন্ন হয়, ফলাফল দেখুন:
werner@Yasser:~/hashcat$ cat mysql.out
6b825255fb466413d6b1b724644e23428c94bbcb:viper
দেখা যায় যে ব্লাস্টিং সফল হয়েছে ।
5. বিস্ফোরণ আলোচনা! ফোরামের পাসওয়ার্ড
Discuz! এটি চীনে একটি সুপরিচিত পিএইচপি ফোরাম প্রোগ্রাম এবং ব্যাপকভাবে ব্যবহৃত হয় । এখন আসুন Discuz বিস্ফোরণ করা যাক! ব্যবহারকারীর পাসওয়ার্ডের হ্যাশ মান । প্রথমে, আপনাকে হ্যাশ মান খুঁজে বের করতে হবে, আমি এটি কোথায় খুঁজে পাব? অবশ্যই ডিসকাউন্ট থেকে! ডাটাবেসে । আলোচনা করা যেতে পারে! ডাটাবেস কোথায়? এইভাবে আমি এটি সমাধান করেছি, এর অফিসিয়াল ওয়েবসাইট থেকে Discuz এর সর্বশেষ সংস্করণটি ডাউনলোড করুন! সোর্স কোড, চালান এবং ইনস্টল করুন, এবং আপনি Discuz পাবেন! ডাটাবেস 
Discuz! ডিফল্ট ডাটাবেসের নাম ultrax, এবং pre_ucenter_members টেবিলটি লগইন পাসওয়ার্ডের হ্যাশ মান সংরক্ষণ করে "pre_" হল ডিফল্ট উপসর্গ, যা ইনস্টলেশনের সময় পরিবর্তন করা যেতে পারে, কিন্তু "ucenter_members" পরিবর্তন হবে না । লগইন পাসওয়ার্ডের হ্যাশ মান জিজ্ঞাসা করতে নিম্নলিখিত sql স্টেটমেন্ট ব্যবহার করুন:
select password,salt from pre_ucenter_members;

হ্যাশ মান এবং লবণ মান ফাইলে সংরক্ষণ করুন:
echo 69bcba126b93c6f397983629a0f70553:c13fd9 > discuz.hash
হ্যাশ মান এবং লবণ মান একই লাইনে, ":" দ্বারা বিভক্ত । অবশেষে, নিম্নলিখিত কমান্ডটি ব্যবহার করে ডিস্কুজ লগইন পাসওয়ার্ড হ্যাশ বিস্ফোরিত করুন:
hashcat -w 3 -a 0 -m 2611 --remove -o discuz.out discuz.hash wordlist.dic
কিছুক্ষণ পরে, ব্লাস্টিং সম্পন্ন হয়, ফলাফল দেখুন:
werner@Yasser:~/hashcat$ cat discuz.out
69bcba126b93c6f397983629a0f70553:c13fd9:winter
দেখা যায় যে ব্লাস্টিং সফল হয়েছে ।
6. বড় অভিধান পরীক্ষা
এখন পর্যন্ত, আমরা মাত্র 500 শব্দের একটি ছোট অভিধান ব্যবহার করেছি, এবং প্রতিবার বিভিন্ন হ্যাশকে সফলভাবে বিস্ফোরিত করতে এটি অদ্ভুত মনে হয় না? এর কারণ হল আমি ইচ্ছাকৃতভাবে হ্যাশক্যাট ব্যবহার করার অনুশীলন করার জন্য অভিধানে একটি দুর্বল পাসওয়ার্ড সেট করেছি, অন্যথায় এটি বিস্ফোরিত না হলে মানুষকে খারাপ বোধ করবে না । বাস্তবে এমন সৌভাগ্য পাওয়া অসম্ভব । আসুন একটি কম দুর্বল পাসওয়ার্ডের md5 মান গণনা করা যাক, একটি বড় অভিধান দিয়ে বিস্ফোরিত করা যাক, একদিকে আপনার ভাগ্য চেষ্টা করুন এবং অন্যদিকে হ্যাশক্যাট কত দ্রুত হতে পারে তা দেখুন ।
প্রথমে md5 মান গণনা করুন:
আমদানি হ্যাশলিব
md5 = হ্যাশলিব.md5()
md5.update("werner123456!!!")
print md5.hexdigest() আউটপুট হল:
b17133f9abff287ed0546c1af2b171f7
তারপর 940 মিলিয়ন পাসওয়ার্ড সহ একটি 10.5G আকারের অভিধান নির্বাচন করুন, বিস্ফোরণ শুরু করুন:
hashcat -w 3 -a 0 -m 0 --remove -o big.out b17133f9abff287ed0546c1af2b171f7 big.dic
লক্ষ্য করুন যে যখন শুধুমাত্র একটি হ্যাশ মান থাকে, তখন এটি ফাইলে সংরক্ষণ করার প্রয়োজন নেই, এটি সরাসরি কমান্ড লাইন প্যারামিটারে লিখুন । বিছানায় যাওয়ার আগে ব্লাস্টিং শুরু করে, পরের দিন ঘুম থেকে উঠে ফলাফল দেখে দেখলাম:
শুরু: Wed Jul 26 22:55:27 2017
Stopped: Wed Jul 26 23:02:28 2017
দেখা গেল মাত্র ৭ মিনিট লেগেছে! আমি ভেবেছিলাম এটি 7 ঘন্টা লাগবে, যা আমার প্রত্যাশার চেয়ে 60 গুণ দ্রুত! এটা দুঃখজনক যে হ্যাশ মান সফলভাবে বিস্ফোরিত হয়নি মনে হচ্ছে "werner123456!!!" পাসওয়ার্ড অভিধানে নেই । মনে হচ্ছে আমাকে একটি 100G পাসওয়ার্ড অভিধান প্রস্তুত করতে হবে, কিন্তু এত বড় অভিধান সংরক্ষণ এবং স্থানান্তর করা খুব অসুবিধাজনক । অন্য কোন উপায় নেই? অবশ্যই আছে, আক্রমণ মোড মনে আছে? আমরা "সোজা" মোড ব্যবহার করছি । পরবর্তী, অন্যান্য মোড অধ্যয়ন করা যাক ।
7. সারাংশ
হ্যাশ ব্লাস্ট করার জন্য হ্যাশক্যাট ব্যবহার করার জন্য, প্রথম জিনিসটি হল বিভিন্ন সিস্টেম এবং বিভিন্ন সফ্টওয়্যারের বিভিন্ন হ্যাশ স্টোরেজ অবস্থান রয়েছে এবং আপনাকে সঠিকভাবে হ্যাশ মান খুঁজে বের করতে হবে; দ্বিতীয়টি হল হ্যাশের ধরনটি সঠিকভাবে বিচার করা, হ্যাশক্যাট এই ধরনের হ্যাশকে সমর্থন করে কিনা তা নির্ধারণ করা এবং সঠিক -m প্যারামিটার নির্বাচন করা, অন্যথায় সফল হওয়া প্রায় অসম্ভব; তৃতীয়টি হল পাসওয়ার্ড অভিধানটি ভাল হওয়া উচিত এটি শেষ পর্যন্ত সফলভাবে বিস্ফোরিত হতে পারে কিনা তা অভিধানের উপর নির্ভর করে । যদিও পাসওয়ার্ড অভিধানটি বড় নয়, ততটা ভাল, এটি সর্বদা বড় হওয়া ভাল । হ্যাশক্যাটও তার গতির জন্য পরিচিত । বড় অভিধানগুলি হ্যাশক্যাটের জন্য সমস্যা নয় । এখানে একটি ভাল অভিধান রেকর্ড করা হয়েছে: পূর্ববর্তী লিক গেট + সাধারণভাবে ব্যবহৃত দুর্বল পাসওয়ার্ড অভিধান সংগ্রহ । 7Z, ডিকম্প্রেশন পাসওয়ার্ড হল: anywlan । উপরন্তু, আপনি যদি অনেকগুলি ছোট অভিধান সংগ্রহ করেন, তাহলে আপনি হ্যাশক্যাট ব্লাস্টিংয়ের সুবিধার্থে একটি বড় অভিধান পেতে ছোট অভিধানগুলিকে একত্রিত, বাছাই এবং ডুপ্লিকেট করতে পারেন । যদি ছোট অভিধানটি একই ডিরেক্টরিতে থাকে, তাহলে এটি একটি কমান্ড ব্যবহার করে করা যেতে পারে:
cat * | sort | uniq > Merge.dic
যদি ছোট অভিধানগুলিকে বিভাগ অনুসারে সংগঠিত করা হয় এবং বহু-স্তরের ডিরেক্টরিতে বিতরণ করা হয়? শুধুমাত্র cat কমান্ড ব্যবহার করা স্পষ্টতই যথেষ্ট নয়, কিন্তু আসলে শুধুমাত্র একটি কমান্ডের প্রয়োজন হয় ধরে নিই যে সমস্ত ছোট অভিধান MyDictionary ডিরেক্টরিতে সংরক্ষণ করা হয়েছে, কমান্ডটি এভাবে লেখা যেতে পারে:
find ./MyDictionary -type f -exec cat {} \; | সাজানো | ইউনিক > মার্জ.ডিক