| # | মোড |
|---|---|
| 0 | সোজা |
| 1 | সমন্বয় |
| 3 | ব্রুট-ফোর্স |
| 6 | হাইব্রিড শব্দ তালিকা + মুখোশ |
| 7 | হাইব্রিড মাস্ক + শব্দ তালিকা |
এই আক্রমণ মোড "অভিধান আক্রমণ" নামেও পরিচিত । বলার কিছু নেই, শুধু একটি অভিধান দেওয়া হয়েছে, হ্যাশক্যাট অভিধানের বিষয়বস্তু লাইন দ্বারা লাইন পড়বে, প্রতিটি লাইনের হ্যাশ মান গণনা করবে এবং লক্ষ্য হ্যাশ মানের সাথে তুলনা করবে ।
উদাহরণ:
hashcat -A 0 -m 400 example400.hash example.dict
Baidu আমাকে বলেছে যে সংমিশ্রণ একটি বিশেষ্য, যার অর্থ: "সংমিশ্রণ; কনসোর্টিয়াম; পাসওয়ার্ড সংমিশ্রণ; জাম্পস্যুট"। এই আক্রমণ মোড আসলে খুব সহজ, দুটি পাসওয়ার্ড অভিধানের বিষয়বস্তু একত্রিত করা । এই আক্রমণ মোড ব্যবহার করে দুটি পাসওয়ার্ড অভিধান উল্লেখ করা প্রয়োজন । ধরুন আমাদের দুটি পাসওয়ার্ড অভিধান আছে dict1.txt এবং dict2.txt, যার বিষয়বস্তু হল:
হান্টিং কিটি রংধনু
এবং
প্যারিস rock
তারপর কমান্ড:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
আসলে যে অভিধানটি চেষ্টা করা হয়েছিল তা হল:
huntingparis হান্টিংরক কিটিপ্যারিস কিটিরক রংধনু প্যারিস rainbowrock
dict1.txt-এর শব্দগুলি বাম দিকে এবং dict2.txt-এর শব্দগুলি ডানদিকে, মোট 3×2=6৷
এই মোডের সাথে সম্পর্কিত পরামিতিগুলি হল:
-j, --নিয়ম-বাম -k, --rule-right
-j-এর পরের নিয়মগুলি বাম দিকে কাজ করে এবং -k-এর পরের নিয়মগুলি ডানদিকে কাজ করে, যেমন প্যারামিটার যোগ করা -j ' $-', তারপর প্রকৃত অভিধান হল:
হান্টিং-প্যারিস হান্টিং-রক কিটি-প্যারিস কিটি-রক বৃষ্টি-ধনুকপ্যারিস rain-bowrock
প্যারামিটার যোগ করুন -j '^!', তারপর প্রকৃত অভিধানটি হল:
! শিকারপ্যারিস ! হান্টিংরক ! কিটিপ্যারিস ! কিটিরক ! রংধনু প্যারিস ! rainbowrock
প্যারামিটার যোগ করুন -k '^>', তারপর প্রকৃত অভিধানটি হল:
হান্টিং>প্যারিস শিকার>শিলা কিটি>প্যারিস কিটি>রক বৃষ্টি>bowparis বৃষ্টি>বোরক
এই নিয়মটি কী? "$" এবং "^" এর ব্যবহার নিয়মিত অভিব্যক্তির অনুরূপ, তাই এটি কি নিয়মিত? প্রকৃতপক্ষে, হ্যাশক্যাটের নিয়মগুলি নিজেই প্রয়োগ করা হয়, যা বিস্তারিত জানার জন্য, নিয়ম-ভিত্তিক আক্রমণ
দেখুন । প্রদত্ত অক্ষর সেটের বিভিন্ন সমন্বয় । হ্যাশক্যাটের অফিসিয়াল উইকি অনুসারে, এই পদ্ধতিটি পুরানো এবং সম্পূর্ণরূপে মুখোশ-আক্রমণ দ্বারা প্রতিস্থাপিত হয়েছে, তাই
এটি একটি অপেক্ষাকৃত নতুন আক্রমণ পদ্ধতি, উদাহরণ নিম্নরূপ:
হ্যাশক্যাট -a 3 -m 0 MD5.hash ? এল? এল? এল? এল? l
যদিও "আক্রমণ মোড" টেবিল অনুসারে, -a 3 ব্রুট-ফোর্সের সাথে মিলে যায়, আসলে, -a 3 মুখোশ আক্রমণ ব্যবহার করে । মুখোশ আক্রমণকে উন্নত ব্রুট-ফোর্স হিসাবে দেখা যেতে পারে ।
-m প্যারামিটারটি হ্যাশ ফাংশনের ধরন, MD5 নির্দিষ্ট করতে ব্যবহৃত হয় । MD5 মান হ্যাশ ফাইলে সংরক্ষণ করা হয় । কী হল চূড়ান্ত স্ট্রিং "? l? l? l? l? l? l? l", যা মাস্ক বলা হয় ।
একটি মুখোশ হল একটি স্ট্রিং যা বেশ কয়েকটি স্থানধারক নিয়ে গঠিত । "?l" হল একটি স্থানধারক, যেখানে "?" হল একটি কীওয়ার্ড, যা পরবর্তী "l" পরিবর্তন করতে ব্যবহৃত হয় "?l" ছাড়াও "?u", "?d", "?h", "?h", "?s", "?a" এবং "?b", প্রতিনিধিত্বকারী অক্ষর সেটটি নীচের সারণীতে দেখানো হয়েছে ।
| ? | Charset |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| H | 0123456789abcdef |
| H | 0123456789ABCDEF |
| s | ! "#$%&'()*+,-./:;<=>?@[\]^_`~{|} |
| a | ? এল? ইউ? ডি? s |
| b | 0 – 0xff |
এইভাবে, আমরা বুঝতে পারি, "?l?l?l?l?l" আসলে পাসওয়ার্ড অভিধানের সমতুল্য:
aaaaa আআআব ... zzzzz
একইভাবে, "?l?u?d" পাসওয়ার্ড অভিধানের সমতুল্য:
aA0 aA1 ... bA0 ... zZ9
উপরের টেবিলের অক্ষর সেটটি হ্যাশক্যাটে অন্তর্নির্মিত, আমরা নিজেরাও অক্ষর সেটটি নির্দিষ্ট করতে পারি:
--custom-charset1=character collection 1 --custom-charset2=অক্ষর সংগ্রহ 2 --custom-charset3=অক্ষর সংগ্রহ 3 --custom-charset4=অক্ষর সেট 4
প্যারামিটার –custom-charsetN কে -N হিসাবে সংক্ষিপ্ত করা যেতে পারে, যেমন –custom-charset1 কে -1 হিসাবে সংক্ষিপ্ত করা যেতে পারে । -N দ্বারা নির্দিষ্ট অক্ষর সেটটি মাস্কে স্থানধারক "?N" আকারে নির্দিষ্ট করা হয়েছে, যেমন:
-1 abc123 ? 1? 1? 1
পাসওয়ার্ড অভিধানের সমতুল্য:
aaa aab ... aa3 ... 333
-N অক্ষর সংগ্রহের প্রতিনিধিত্ব করে একটি স্ট্রিং পাওয়ার পাশাপাশি, এটি .hcchr দিয়ে শেষ হওয়া একটি ফাইলও হতে পারে, যেখানে অক্ষর সংগ্রহ সংরক্ষণ করা হয় । হ্যাশক্যাট অনেকগুলি .hcchr ফাইলের সাথে আসে, যা ইনস্টলেশন প্যাকেজের charsets/ডিরেক্টরিতে রয়েছে ।
স্থানধারক "??" দ্বারা প্রতিনিধিত্ব করা অক্ষরের সংগ্রহ হল "?" নিজেই । উপরন্তু, যখন অন্যান্য অক্ষরগুলিকে স্থানধারক হিসাবে ব্যবহার করা হয়, তখন তারা অক্ষরটিকে প্রতিনিধিত্ব করে, উদাহরণস্বরূপ, "?lwerner?d" পাসওয়ার্ড অভিধানের সমতুল্য:
awerner0 awerner1 ... zwerner9
উপরের জ্ঞানের সাথে, মুখোশ বোঝা সহজ । একটি মুখোশ বেশ কয়েকটি স্থানধারক নিয়ে গঠিত, প্রতিটি স্থানধারক একটি অক্ষর সংগ্রহ, এবং একটি মুখোশ প্রতিটি স্থানধারক অক্ষর সংগ্রহের সংমিশ্রণ । স্থানধারকের সংখ্যা পাসওয়ার্ডের দৈর্ঘ্যের সমান । একটি অক্ষর সেট এবং একটি পাসওয়ার্ড দৈর্ঘ্য প্রদানের তুলনায় এই ধরনের একটি নকশা সুবিধা কি?
ধরুন আমরা জানি যে কারো পাসওয়ার্ডে মোট 7টি সংখ্যা রয়েছে, প্রথম সংখ্যাটি একটি বড় হাতের অক্ষর, পরবর্তী 3টি সংখ্যা একটি ছোট হাতের অক্ষর এবং শেষ 3টি সংখ্যা । যদি এটি একটি ঐতিহ্যগত সহিংস ক্র্যাকিং হয়, তাহলে A-Z, A-Z এবং 0-9 অক্ষর সেট প্রয়োজন, মোট 62^7=3 521 614 606 208 বার পর্যন্ত চেষ্টা করা প্রয়োজন, যা একটি ট্রিলিয়ন স্তর । এই পাসওয়ার্ডটি বর্ণনা করার জন্য মাস্ক ব্যবহার করার সময়, এটি হল "\u\l\l\l\d\d\d", যা গণনা করা সহজ (26^4)×(10^3)=456 976,000 সম্ভাবনা, যা বিলিয়ন স্তর, পূর্ববর্তী পদ্ধতির তুলনায় মাত্রার 4 অর্ডার কম ।
একটি ধাপ পিছিয়ে নেওয়ার জন্য, এমনকি যদি আমরা পাসওয়ার্ডের বিতরণ না জানি, তবে মুখোশ ব্যবহার করে প্রথাগত হিংসাত্মক ক্র্যাকিংয়ের প্রভাব অনুকরণ করা সহজ ।
এখন সমস্যা হল যে মুখোশটি ঠিক করা হয়েছে, কতগুলি স্থানধারক মৃত অবস্থায় লেখা আছে, এবং আমরা যদি পাসওয়ার্ডের দৈর্ঘ্য না জানি তবে আমাদের কী করা উচিত? এটা ঠিক যে পাসওয়ার্ডটি খুব দীর্ঘ যদি অন্য কারো পাসওয়ার্ডে মাত্র 3টি অঙ্ক থাকে এবং আমাদের 4টি প্লেসহোল্ডার থাকে এবং আমরা এটি সমাধান করতে পারি না, তাহলে কি এটি একটি বড় ক্ষতি হবে না? আমাদের কি 1 থেকে শুরু করতে হবে এবং প্রতিটি দৈর্ঘ্যের মুখোশ লিখতে হবে? এটা কি কষ্ট ।
এর দুটি সমাধান রয়েছে একটি হল মাস্ক ফাইল ব্যবহার করা, একটি ফাইলে একাধিক মাস্ক লিখুন এবং তারপর কমান্ড লাইনে ফাইলটি নির্দিষ্ট করুন । লক্ষ্য করুন যে মাস্ক ফাইলটি .hcmask দিয়ে শেষ হতে হবে ।
যেমন test.hcmask এর বিষয়বস্তু হল:
? এল ? এল? এল ? এল? এল? এল ? এল? এল? এল? l
তারপর নিম্নলিখিত কমান্ডটি ব্যবহার করে ফাইলটি ব্যবহার করুন:
hashcat -m 0 -a 3 -- দেখান MD5.hash test.hcmask
আরেকটি সমাধান হল প্যারামিটার যোগ করা –increment, যা হ্যাশক্যাটকে বলে, আমরা যে মুখোশ দিয়েছি তা অনুসরণ করে, একটি স্থানধারক দিয়ে চেষ্টা করুন, তারপর দুটি, তিনটি চেষ্টা করুন, যতক্ষণ না আমরা দৈর্ঘ্য দিয়েছি । উদাহরণস্বরূপ, আমরা এই স্থানধারক "abc" লিখি এবং তারপর নিম্নলিখিত স্ট্রিংয়ের MD5 মান গণনা করি:
A:0cc175b9c0f1b6a831c399e269772661 বি:92eb5ffee6ae2fec3ad71c777531578f c:4a8a08f09d37b73795649038408b5f33 ab:187ef4436122d1cc2f40dc2b92f0eba0 এসি:e2075474294983e013ee4dd2201c7a73 বিএ:07159c47ee1b19ae4fb9c40d480856c4 খ্রিস্টপূর্ব:5360af35bde9ebd8f01f492dc059593c ca:5435c69ed3bcc5b2e4d580e393e373d3 সিবি:d0d7fdb6977b26929fb68c6083c0b439 এবিসি:900150983cd24fb0d6963f7d28e17f72 এবিসি:900150983cd24fb0d6963f7d28e17f72 বিএসি:79ec16df80b57696a03bb364410061f3 বিসিএ:b64eab8ce39e013604e243089c687e4f সিবিএ: 3944b025c9ca7eec3154b44666ae04a0 cab:16ecfd64586ec6c1ab212762c2c38a90
":" এর আগে হ্যাশ মান গণনা করার জন্য মূল স্ট্রিং, এবং ":" এর পরে গণনা করা hasn মান । MD5.hash ফাইলে উপরের বিষয়বস্তু সংরক্ষণ করুন, এবং তারপর নিম্নলিখিত কমান্ডটি চালান:
hashcat -m 0 -a 3< --দেখান --ব্যবহারকারীর নাম MD5.hash abc
প্যারামিটার যোগ করুন –ব্যবহারকারীর নাম কারণ আমাদের প্রতিটি হ্যাশ মানের আগে একটি মূল স্ট্রিং আছে যদি আমরা এই প্যারামিটারটি যোগ না করি, হ্যাশক্যাট দেখাবে যে সঠিক হ্যাশ মান পাওয়া যায়নি এই প্যারামিটারটি যোগ করলে, হ্যাশক্যাট মনে করবে যে হ্যাশ মানের সামনের স্ট্রিংটি হ্যাশ মান জোড়ার ব্যবহারকারীর নাম, যাতে হ্যাশ মান সফলভাবে লোড হতে পারে ।
চালানোর ফলাফল হল যে শুধুমাত্র একটি হ্যাশ সমাধান করা হয়েছে:
900150983cd24fb0d6963f7d28e17f72:abc
এখন প্যারামিটার যোগ করুন –increment এবং আবার চালান:
hashcat -m 0 -a 3 --show --increment --username MD5.hash abc
এইবার, আরও দুটি হ্যাশ সমাধান করা হয়েছে:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
দৃশ্যমান, –increment কাজ করে । কিন্তু একই সময়ে, আমরা এটাও জানি যে এই প্যারামিটারের সাথে, হ্যাশক্যাট শুধুমাত্র A, ab এবং abc ক্রমানুসারে চেষ্টা করবে, এবং বিভিন্ন সম্ভাবনার চেষ্টা করার জন্য স্থানধারকদের সাজানো এবং একত্রিত করবে না ।
হাইব্রিড অ্যাটাক কম্বিনেটর অ্যাটাকের মতোই, যখন হাইব্রিড অ্যাটাক একটি অভিধান এবং একটি মুখোশকে একত্রিত করে ।
ধরুন আমাদের কাছে ইতিমধ্যেই একটি অভিধান আছে example.dict যা নিম্নরূপ:
হ্যালো werner
তারপর কমান্ড:
hashcat -m 0 -a 6 MD5.hash example.dict ? ডি? d
শুধুমাত্র একটি অভিধান ব্যবহার করার সমতুল্য:
হ্যালো00 হ্যালো01 ... হ্যালো99 ওয়ার্নার00 werner01 ... werener99
তারপর কমান্ড:
hashcat -m 0 -a 7 MD5.hash ? ডি? dexample.dict
শুধুমাত্র একটি অভিধান ব্যবহার করার সমতুল্য:
00হ্যালো 01 হ্যালো ... 99হ্যালো 00ওয়ার্নার 01ওয়ার্নার ... 99werener