Rob Bowden: আমি রব, এবং এর ক্রেকিং পেতে. তাই pset বৈশিষ্ট থেকে মনে রাখবেন যে আমরা ব্যবহার করার প্রয়োজন হতে যাচ্ছেন সমাধিগৃহ ফাংশন. Man পৃষ্ঠা জন্য, আমরা দুই হ্যাশ _xopensource সংজ্ঞায়িত. কেন চিন্তা করবেন না আমরা যে করতে হবে. এবং এছাড়াও হ্যাশ unistd.h অন্তর্ভুক্ত. তাই একবার যে ভাবে আউট, এর যাক প্রকৃত প্রোগ্রাম পেতে. আমরা কি প্রয়োজন সর্বপ্রথম যে জিনিসটি নিশ্চিত করতে হয় ব্যবহারকারী একটি বৈধ এনক্রিপ্ট প্রবেশ কমান্ড লাইনে পাসওয়ার্ড. প্রোগ্রাম অনুমিত হয় যে মনে রেখো বিন্দু স্ল্যাশ ফাটল মত চালানোর জন্য, এবং আপনি তারপর এনক্রিপ্ট পংক্তি. তাই আমরা এখানে নিশ্চিত করতে চেক করছি যে দুই থেকে argc আমরা করতে চান তাহলে প্রোগ্রামের সাথে এগিয়ে চলুন. Argc দুই না হয়, তাহলে এর অর্থ হল যে হয় ব্যবহারকারী একটি এনক্রিপ্ট করা লেখেননি কমান্ড লাইনে পাসওয়ার্ড, অথবা তারা শুধু এনক্রিপ্ট চেয়ে বেশি প্রবেশ কমান্ড লাইনে পাসওয়ার্ড, যা ক্ষেত্রে আমরা কি করতে হবে তা জানি না কমান্ড লাইন আর্গুমেন্ট. Argc দুটি ছিল সুতরাং, যদি আমরা অব্যাহত রাখতে পারেন. এবং এখানে, আমরা ডিক্লেয়ার চলুন একটি পরিবর্তনশীল এনক্রিপ্ট করা. যে শুধু ওরফে মূল যাচ্ছে argv1 যাতে এই সর্বত্র প্রোগ্রাম, আমরা argv1 কল করতে হবে না তারপর যা আপনি মনে আছে যে আসলে কী বোঝানো হচ্ছে সে সম্পর্কে. তাই পরিশেষে, আমরা যে যাচাই করতে চান এনক্রিপ্ট করা পাসওয়ার্ড ব্যবহারকারী প্রবেশ আসলে হয়েছে পারে এনক্রিপ্ট করা পাসওয়ার্ড. সমাধিগৃহ ম্যান পাতা, প্রতি এনক্রিপ্ট করা পাসওয়ার্ড 13 হতে হবে দীর্ঘ অক্ষর. এখানে আপ, আমরা হ্যাশ সংজ্ঞায়িত বিজ্ঞপ্তি 13 দ্বারা এনক্রিপ্ট করা. তাই আমরা ঠিক নিশ্চিত যে করছেন এনক্রিপ্ট এর স্ট্রিং দৈর্ঘ্য পাসওয়ার্ড 13. এটা না হলে, আমরা চাই প্রোগ্রাম থেকে প্রস্থান করার. তাই একবার যে আমরা উপায় করতে পারেন আউট এখন আসলে এটি কি চেষ্টা করুন এনক্রিপ্ট করা দিয়েছেন পাসওয়ার্ড পাসওয়ার্ড ছিল. এখানে, আমরা লবণ দখল করতে চান এনক্রিপ্ট করা পাসওয়ার্ড থেকে. , Man পৃষ্ঠা প্রতি মনে রাখবেন, যে এনক্রিপ্ট করা প্রথম দুটি অক্ষর স্ট্রিং, এখানে পছন্দ - 50ZPJ এবং তাই - প্রথম দুটি অক্ষর দিতে আমাদের ব্যবহৃত হয় যে লবণ সমাধিগৃহ ফাংশন. এবং এখানে, আমরা লবণ হে যে ছিল দেখতে. তাই আমরা প্রথম দুই কপি করতে চান অক্ষর, লবণ দ্বারা হ্যাশ হচ্ছে দুই হিসেবে সংজ্ঞায়িত. আমরা প্রথম দুটি অক্ষর কপি আছে এই অ্যারের মধ্যে, লবণ. আমরা প্লাস লবণ দৈর্ঘ্য প্রয়োজন যে বিজ্ঞপ্তি আমরা এখনও একটি নাল প্রয়োজন থেকে এক, আমাদের লবণ শেষে টারমিনেটর. তারপর আমরা এই অ্যারে ডিক্লেয়ার চলুন সাইজ সর্বোচ্চ দৈর্ঘ্য গেস্ট, প্লাস সর্বোচ্চ দৈর্ঘ্যের সংজ্ঞায়িত হ্যাশ যেখানে এক, আট হিসেবে, যেহেতু সর্বোচ্চ পাসওয়ার্ড আট অক্ষর দীর্ঘ. এবং আমরা বারবার এই ব্যবহার করতে যাচ্ছেন সব সম্ভব স্ট্রিং ওভার যে পারা বৈধ পাসওয়ার্ডগুলি হতে. তাই আপনি যদি একটি পাসওয়ার্ড বৈধ অক্ষর তারপর মাত্র একটি, বি, সি, ছিল আমরা একটি ওভার B, C, বারবার করবে এএ, BA, CA, এবং তাই, যতক্ষণ না আমরা cccccccc দেখতে পাবেন - আট গ এর. এবং আমরা একটি বৈধ নিচে না থাকে তাহলে, পাসওয়ার্ড, তাহলে আমরা বলতে যে প্রয়োজন এনক্রিপ্ট করা স্ট্রিং ছিল না দিয়ে শুরু করতে বৈধ. সুতরাং এখন, আমরা 1 লুপ যখন এই পৌঁছানোর. এটা মানে যে বিজ্ঞপ্তি একটি অসীম লুপ. কোন বিরতি বিবৃতি আছে লক্ষ্য করুন এই অসীম লুপ এর ভিতরে. শুধুমাত্র বিবৃতি আছে প্রত্যাবর্তন করা হয়. তাই আসলে আমরা আশা না লুপ থেকে প্রস্থান করুন. আমরা শুধুমাত্র প্রোগ্রাম থেকে প্রস্থান করার আশা. আমি এই মুদ্রণ বক্তব্য জুড়েছেন এই লুপ উপরে শুধু প্রিন্ট আউট এ কি আমাদের বর্তমান অনুমান কি পাসওয়ার্ড. এখন, এই লুপ কি করছেন? এটা সব সম্ভব স্ট্রিং ওভার looping এর যে বৈধ পাসওয়ার্ডগুলি হতে পারে. আমরা কাজ করতে যাচ্ছেন প্রথম জিনিস আমাদের বর্তমান অনুমান নিতে কি জন্য পাসওয়ার্ড. আমরা থেকে ধরলাম যে লবণ নেব এনক্রিপ্ট করা পংক্তি, এবং আমরা অনুমান এনক্রিপ্ট করতে যাচ্ছে. এই, আমাদের এনক্রিপ্ট অনুমান আপনাকে আমরা বিরুদ্ধে তুলনা চলুন যা এনক্রিপ্ট করা স্ট্রিং যে ব্যবহারকারী কমান্ড লাইনে প্রবেশ করে. তারা একই, যদি এই সব ক্ষেত্রে তুলনীয় স্ট্রিং, যদি শূন্য ফিরে আসবে তারা একই করছি, তারপর অনুমান ছিল এনক্রিপ্ট করা সৃষ্টিকারী পাসওয়ার্ড স্ট্রিং, আমরা মুদ্রণ করতে পারেন যে ক্ষেত্রে আমাদের পাসওয়ার্ড এবং রিটার্ন যে. কিন্তু তারা একই ছিল না যে, আমাদের অনুমান ভুল ছিল মানে. এবং আমরা পুনরুক্তি করতে চান পরবর্তী বৈধ অনুমান. সুতরাং যে এর কি এই সময় লুপ করার চেষ্টা করা হয়. এটা আমাদের অনুমান পুনরুক্তি করা যাচ্ছে পরবর্তী বৈধ অনুমান. আমরা বলতে যে যখন লক্ষ্য করুন যে আমাদের অনুমান নির্দিষ্ট অক্ষর আছে যা এখানে সর্বোচ্চ প্রতীক, পৌঁছেছেন হ্যাশ থেকে, একটি tilde হিসেবে সংজ্ঞায়িত করা হয় যে বৃহত্তম হওয়া ASCII মান চরিত্রের একটি ইউজার এ লিখতে পারেন যে কীবোর্ড, যখন অক্ষর ছুঁয়েছে সর্বোচ্চ প্রতীক, তারপর আমরা পাঠাতে চান এটা, সর্বনিম্ন প্রতীক ফিরে যা আবার, সর্বনিম্ন হওয়া ASCII একটি স্থান মান চিহ্ন একটি ব্যবহারকারী করতে পারেন কীবোর্ড এ প্রবেশ করুন. তাই আমরা যে সেট চলুন সর্বনিম্ন প্রতীকের. এবং তারপর আমরা যেতে চলুন পরবর্তী অক্ষরে নেভিগেশন. সুতরাং কিভাবে আমাদের অনুমান হয় পুনরুক্তি করা যাচ্ছে? ওয়েল, বৈধ অক্ষর এ, বি, যদি এবং গ তারপর, আমরা একটি দিয়ে শুরু হলে এটা বি বারবার করব, এটা করব C থেকে বারবার. C আমাদের সর্বোচ্চ প্রতীক, তাই আমরা সেট করব একটি ফিরে C, সর্বনিম্ন প্রতীক. এবং তারপর আমরা সূচক বারবার করব পরবর্তী অক্ষরে. মূল অনুমান গ, পরবর্তী ছিল তাই আপনি যদি চরিত্র নাল হতে যাচ্ছে টারমিনেটর. নিচে এখানে, বিজ্ঞপ্তি যে যদি চরিত্র এখন আমরা চাই যে বর্ধন, নাল টারমিনেটর ছিল তারপর আমরা এটি সেট চলুন সর্বনিম্ন প্রতীক. অনুমান তারপর, সি আর তাই আপনি যদি আমাদের এক্সপ্লোর পরিচালনা অনুমান AA হতে যাচ্ছে. এবং আমাদের মূল অনুমান যদি তারপর cccc আমাদের নতুন অনুমান Aaaaa হতে যাচ্ছে. তাই যখনই আমরা সর্বোচ্চ স্ট্রিং পৌঁছানোর একটি নির্দিষ্ট দৈর্ঘ্যের, তাহলে আমরা করছি সর্বনিম্ন স্ট্রিং বাস্তবায়ন করতে যাচ্ছে পরবর্তী দৈর্ঘ্য, যা সব অক্ষরের হতে সর্বনিম্ন প্রতীক. এখন, এই চেক এখানে কি করছেন? ওয়েল, যদি ইনডেক্স অষ্টম থেকে সরানো নয়টি অক্ষরে অক্ষরে - তাই আমরা আট C এর হিসেবে যোগ করুন অনুমান আমাদের পূর্ববর্তী - তারপর ইনডেক্স উপর ফোকাস করা যাচ্ছে আমাদের অনুমান সর্বশেষ নাল টারমিনেটর আসলে বোঝানো হয় না, যা অ্যারে, আমাদের পাসওয়ার্ড ব্যবহার করা. আমরা যে শেষ নাল উপর দৃষ্টি নিবদ্ধ করা হয় তাই আপনি যদি টারমিনেটর, তারপর আমরা একটি পাওয়া যায় না বৈধ মাত্র আট ব্যবহার করে যে পাসওয়ার্ড কোন মানে যা অক্ষর, এনক্রিপ্ট করে যে বৈধ পাসওয়ার্ড প্রদত্ত স্ট্রিং. এবং আমরা বলার অপেক্ষা রাখে না যে, মুদ্রণ আছে আমরা একটি বৈধ খুঁজে পাইনি পাসওয়ার্ড ও ফেরত. তাই এই সময় লুপ পুনরুক্তি করা যাচ্ছে না সব সম্ভব স্ট্রিং ওভার. এটা খুঁজে বের করে যদি কোন এনক্রিপ্ট করে যে প্রত্যাশিত এনক্রিপ্ট স্ট্রিং, এটি পাবেন যে পাসওয়ার্ড ফিরে. এবং এটা, তারপর কিছু না পাওয়া এটিকে মুদ্রণ করুন, ফিরে আসবে যে এটা কিছু খুঁজে পেতে সক্ষম ছিল না. এখন, বিজ্ঞপ্তি যে সব iterating সম্ভব স্ট্রিং সম্ভবত যাচ্ছে সময় নিতে. চলুন শুরু করা যাক আসলে কিভাবে দীর্ঘ যে লাগে. এর ক্র্যাক করা যাক. ওয়েল, ওহো - এটা অনির্ধারিত বলছেন সমাধিগৃহ থেকে রেফারেন্স. P বৈশিষ্ট সেট এবং জন্য সুতরাং, মনে রাখবেন সমাধিগৃহ জন্য man পৃষ্ঠা যে আমরা সমাধিগৃহ-এ লিঙ্ক যুক্ত করতে হবে. এখন, ডিফল্ট কমান্ড করতে জানি না যে আপনি যে ফাংশন ব্যবহার করতে চান. তাই আসুন এই ক্লায়েন্ট কমান্ড কপি এবং শুধু শেষে যোগ করুন তা, লিঙ্ক সমাধিগৃহ. এখন, এটা প্রনয়ন করেছেন. সুতরাং let এর একটি প্রদত্ত নেভিগেশন ক্র্যাক চালানো এনক্রিপ্ট করা স্ট্রিং - সিজার এর তাই. তাই যে বেশ দ্রুত ছিল. এই 13 শেষ যে লক্ষ্য করুন. ওয়েল, সিজার এর এনক্রিপ্ট করা পাসওয়ার্ড 13 হতে হবে. সুতরাং অন্য কোনো পাসওয়ার্ড চেষ্টা করুন. এর Hirschhorn এর এনক্রিপ্ট করা যাক পাসওয়ার্ড এবং যে ক্রেকিং চেষ্টা করুন. ইতিমধ্যে আমরা পৌঁছেছেন সুতরাং বিজ্ঞপ্তি তিনটি অক্ষর. এবং আমরা সব সম্ভব ওভার iterating করছি তিনটি অক্ষর স্ট্রিং. যে ইতিমধ্যে আমরা সমাপ্ত করেছি মানে সব সম্ভব এক ওভার iterating এবং দুই অক্ষর স্ট্রিং. এই যাচ্ছে চাই এখন, এটা দেখে মনে হচ্ছে আমরা পৌঁছানোর আগে কিছু সময় ব্যয় চার অক্ষর স্ট্রিং. এটি কয়েক মিনিট সময় নিতে পারে. এটি কয়েক মিনিট সময় নিতে হয়নি. আমরা চার অক্ষর স্ট্রিং করছি. কিন্তু এখন, আমরা সব পুনরুক্তি উপর প্রয়োজন সম্ভব চার অক্ষর স্ট্রিং, যা যে হয়তো 10 মিনিট সময় নিতে পারে. এবং তারপর আমরা পাঁচটি অক্ষর পৌঁছানোর সময় স্ট্রিং, আমরা সব পুনরুক্তি উপর প্রয়োজন যারা, যার প্রতাপ কয়েক ঘন্টা সময় নিতে. এবং আমরা সব সম্ভব পুনরুক্তি উপর প্রয়োজন ছয় অক্ষর স্ট্রিং, যা তাই কয়েক দিন নিতে পারে. তাই এটা খুব দীর্ঘ সম্ভাব্য একটি গ্রহণ করতে পারে সম্ভাব্য সব পুনরুক্তি উপর সময় আট অক্ষর এবং কম স্ট্রিং. তাই এই একটি অগত্যা না হয় বিজ্ঞপ্তি খোঁজার জন্য খুব দক্ষ এলগরিদম একটি পাসওয়ার্ড. আপনি মনে হতে পারে যে ভালো উপায় আছে. উদাহরণস্বরূপ, পাসওয়ার্ড zyx! 32ab সম্ভবত একটি খুব সাধারণ পাসওয়ার্ড নিয়ে নয়, 12345 পাসওয়ার্ড যেহেতু সম্ভবত আরো অনেক সাধারণ. একটি পাসওয়ার্ড খুঁজে বের করার চেষ্টা তাই এক উপায় আরও দ্রুত ঠিক তাকান হয় আরও সাধারণ যে পাসওয়ার্ডগুলি এ. সুতরাং উদাহরণস্বরূপ, আমরা শব্দ পড়তে চেষ্টা করে দেখতে পারেন একটি অভিধান থেকে এবং সব চেষ্টা আমাদের পাসওয়ার্ড অনুমান হিসাবে যারা শব্দ. এখন, হয়তো একটি পাসওয়ার্ড যে সহজ নয়. হয়তো ব্যবহারকারী কিছুটা চালাক ছিল এবং একটি সংখ্যা যোগ করার চেষ্টা করুন একটি শব্দের শেষে. তাই হয়তো তাদের পাসওয়ার্ড password1 ছিল. সুতরাং আপনি সব শব্দ ওভার iterating চেষ্টা করতে পারেন এক সঙ্গে অভিধান এটা শেষে যোগ করা হয়. এবং তারপর হয়তো যে করছেন পরে, আপনি পাবেন এটি শেষ দুই লিখবেন. হয়তো বা ব্যবহারকারী, এমনকি হতে চেষ্টা করা হয় আরো চালাক, এবং তারা চান তাদের পাসওয়ার্ড "হ্যাকার" হতে কিন্তু তারা ই এর সমস্ত উদাহরণ প্রতিস্থাপন করতে যাচ্ছে threes সঙ্গে. তাই আপনি খুব এই কাজ করতে পারে. অভিধানে সব শব্দের পুনরুক্তি উপর কিন্তু যে অক্ষর প্রতিস্থাপন ঐ সংখ্যার সঙ্গে সংখ্যার অনুরূপ. এই ভাবে সুতরাং, আপনি যদি আরও বেশি পড়তে পারে চমত্কার সাধারণ যে পাসওয়ার্ডগুলি. কিন্তু শেষ, একমাত্র উপায় আপনি যা করতে পারেন সমস্ত পাসওয়ার্ড ক্যাপচার পাশব হয় সমস্ত পুনরুক্তি উপর জোর সম্ভব স্ট্রিং. তাই শেষ, আপনি বারবার করতে হবে না একটি অক্ষর থেকে সমস্ত স্ট্রিং ওভার একটি সময় নিতে পারে, যা আট অক্ষর, খুব দীর্ঘ সময়, কিন্তু আপনি তা করতে হবে. আমার সম্পর্কে নাম Rob Bowden হয়. এবং এই ক্র্যাক হয়.