Hdiutil ব্যাশ স্ক্রিপ্টিং একটি বিট সঙ্গে মিলিত কমান্ড আপনাকে যা খুঁজছেন তা সম্পাদন করতে পারেন। ফাঁকা রেখার সাথে শেষ করে আলাদা লাইনটিতে প্রতিটি পাসওয়ার্ড সহ আপনার একটি সরল পাঠ্য ফাইল দরকার হবে ।
এটি টেক্সট ফাইলে কপি এবং পেস্ট করুন:
#!/bin/bash
while read line
do
echo -n "$line" | hdiutil attach -quiet -stdinpass "$1"
if [ $? -eq 0 ]; then
echo "Password is $line"
break
fi
done < "$2"
এটি সংরক্ষণ করুন এবং chmod +x /path/to/scriptfile
টার্মিনালে চালিয়ে এটি কার্যকর করতে সক্ষম করুন ।
- টার্মিনালে, চালান
/path/to/scriptfile /path/to/image.dmg /path/to/passwords.txt
।
- এটি সফলভাবে ডিস্ক চিত্রটিকে মাউন্ট না করা অবধি চলবে এবং কাজ করে এমন পাসওয়ার্ড আউটপুট দেবে। আমার পরীক্ষায়, এটি প্রতি পাসওয়ার্ডে 1.3-1.6 সেকেন্ড সময় নিয়েছে, সুতরাং 3000 পাসওয়ার্ড আপনার সিস্টেমে নির্ভর করে এক ঘন্টা সময় নিতে পারে (যদিও পাসওয়ার্ডটি ফাইলটিতে রয়েছে তার উপর নির্ভর করে এটি আরও তাড়াতাড়ি হতে পারে)।
কৌতুক করা উচিত। কীভাবে এবং কেন এটি কাজ করে তা যদি আপনি জানতে আগ্রহী হন তবে পড়ুন।
ব্যাখ্যা
লুপ করার সময়
while read line
do
[…]
done < "$2"
এটি পাসওয়ার্ড ফাইলের প্রতিটি লাইনের উপরে লুপ করে (যা < "$2"
অংশের মাধ্যমে খাওয়ানো হয় ) do
এবং done
প্রতিটি বার যখন লুপ হয় তখন তা সম্পাদন করে । $2
ব্যাশ একটি বিশেষ পরিবর্তনশীল স্ক্রিপ্ট প্রেরণ দ্বিতীয় যুক্তি প্রতিনিধিত্ব করে (অর্থাত যদি আপনি দৌড়ে ./foo bar blah
, $2
হবে blah
)। নামে কোথাও কোনও ফাঁকা জায়গা বা অন্যান্য অক্ষর রয়েছে যা বাশের জন্য সমস্যা তৈরি করতে পারে It's
ইমেজ মাউন্ট
hdiutil attach -quiet -stdinpass "$1"`
এটি আসলে ডিস্ক চিত্রটি মাউন্ট করার কমান্ড (যা আমরা $1
ভেরিয়েবলের মাধ্যমে কমান্ড লাইন আর্গুমেন্টগুলি থেকে পেয়ে যাই , যেমন পাসওয়ার্ড ফাইলের মতো)। -quiet
পতাকা মানে কোন আউটপুট (শুধু কিছু পরিপাটি রাখার) মুদ্রণ না এবং -stdinpass
থেকে পাসওয়ার্ড পেতে মানে কমান্ড লাইন , না স্বাভাবিক OS X এর পাসওয়ার্ড কথোপকথন।
echo -n "$line"
echo
কমান্ড কেবল ইনপুট তা দেওয়া হচ্ছে, যা এই ক্ষেত্রে পাসওয়ার্ড ফাইল থেকে একটি পৃথক লাইন, থেকে পুনরাবৃত্তি $line
পরিবর্তনশীল (যা আবার ক্ষেত্রে উদ্ধৃত করা হয় পাসওয়ার্ডগুলি বিশেষ অক্ষর ধারণ)। -n
পতাকা এই ধাঁধা চূড়ান্ত টুকরা, এটা পুনরাবৃত্তি থেকে প্রতিধ্বনি আটকায় সম্পর্কে newline অক্ষর, যা পাসওয়ার্ড অন্তর্ভুক্ত করা হবে (এবং এইভাবে কাজ থেকে সঠিক পাসওয়ার্ডটি প্রতিরোধ)।
আমরা পাসওয়ার্ড প্রেরণের জন্য echo
একটি "পাইপ" ( |
) ব্যবহার করি hdiutil
। echo
পাইপ ( hdiutil
) এর পরে কমান্ডটিতে পূর্ববর্তী কমান্ড ( ) এর আউটপুট প্রেরণ করে । আমাদের পাসওয়ার্ড চেয়ে জিজ্ঞাসা না করে এই উপায়টি hdiutil
কেবল ফাইল থেকে আমাদের পড়া পাঠ্যটি গ্রহণ করে।
পাসওয়ার্ডটি সফল হয়েছে কিনা তা পরীক্ষা করা হচ্ছে
if [ $? -eq 0 ]
পূর্ববর্তী কমান্ডটি তার প্রস্থান কোডটি পরীক্ষা করে সফল হয়েছিল কিনা তা পরীক্ষা করে । এটি $?
হ'ল একটি বিশেষ পরিবর্তনশীল যা পূর্ববর্তী ক্রিয়াকলাপের প্রস্থান কোডটি সংরক্ষণ করে।
যদি প্রস্থান কোড 0 হয় (কোনও ত্রুটি নেই), তবে আমরা জানি যে পাসওয়ার্ডটি কাজ করেছে এবং if স্টেটমেন্টটি এই লাইনগুলি চালায়:
echo "Password is $line"
break
এটি সফল পাসওয়ার্ড কী তা ব্যবহারকারীকে জানাতে একটি সাধারণ বার্তা প্রদর্শন করে, তারপরে break
কমান্ডটি while
লুপ থেকে বেরিয়ে প্রোগ্রামটি শেষ করে। আমরা এটি করি কারণ স্ক্রিপ্টটি অন্যথায় ফাইলের প্রতিটি পাসওয়ার্ড পরীক্ষা না করা অবধি চলতে থাকবে।
এই সমস্ত টুকরা একত্রিত করা আপনাকে অন্যথায় দীর্ঘ এবং বেদনাদায়ক কাজটি স্বয়ংক্রিয় করার সুবিধাজনক উপায় দেয়।