روب BOWDEN: میں روب ہوں، اور کی کریکنگ نکلتے ہیں. تو pset رپورٹ سے یاد ہے کہ ہم کو استعمال کرنے کی ضرورت جا رہے ہیں crypt تقریب. انسان کے صفحے کے لیے، ہمارے پاس دو ہیش _xopensource کی وضاحت. کیوں فکر مت کرو ہم ایسا کرنے کی ضرورت ہے. اور بھی ہیش unistd.h شامل ہیں. تو ایک بار اس طرح سے باہر ہے، دو کی اصل پروگرام حاصل کریں. ہم کیا کرنے کی ضرورت ہے پہلی بات یقینی بنائیں کہ ہے صارف ایک درست مرموز میں داخل کمانڈ لائن میں پاس ورڈ. پروگرام سمجھا جاتا ہے یاد رکھیں کہ ڈاٹ سلیش شگاف کی طرح چلانے کے، اور کیا جائے گا پھر مرموز سٹرنگ. تو یہاں ہم اس بات کو یقینی بنانے کے لئے کی جانچ پڑتال کر رہے ہیں کہ دو سے argc ہم کرنا چاہتے ہیں تو پروگرام کے ساتھ جاری رکھیں. argc دو نہیں ہے تو، اس کا مطلب ہے کہ یا تو صارف ایک مرموز درج نہیں کیا کمانڈ لائن میں پاس ورڈ، یا وہ صرف مرموز سے زیادہ میں داخل کمانڈ لائن میں پاس ورڈ، جس میں ہم کیس کے ساتھ کیا پتہ نہیں ہے کمانڈ لائن دلائل. argc دو تھا تو ہم نے جاری رکھ سکتے ہیں. اور یہاں، ہم اعلان کرنے جا رہے ہیں ایک متغیر مرموز. یہ صرف عرف اصل جا رہا ہے argv1 تاکہ اس پورے پروگرام، ہم، یہ argv1 فون کرنے کی ضرورت نہیں ہے پھر جس سے آپ میں سوچنا ہے کہ اصل میں کیا مطلب ہے کے بارے میں. تو آخر، ہم اس کی توثیق کرنا چاہتے ہیں مرموز پاس ورڈ صارف اصل میں داخل ہو سکتی تھی ایک مرموز پاس ورڈ. crypt کے آدمی کے صفحے کے مطابق، پاس ورڈ مرموز 13 ہونا چاہیے طویل حروف. یہاں، ہم ہیش وضاحت کی گئی کہ متعلقہ 13 کے طور پر کی حد کے خفیہ. تو ہم صرف اس بات کو یقینی بنا رہے ہیں کہ مرموز کے سٹرنگ کی لمبائی پاس ورڈ 13 ہے. یہ نہیں ہے اور اگر ہم چاہتے ہیں پروگرام سے باہر نکلیں کرنے کے لئے. تو ایک بار ہے کہ ہم، راستے سے باہر کر سکتے ہیں اب اصل تلاش کرنے کی کوشش کیا مرموز دیا کہ پاس ورڈ پاس ورڈ تھا. یہاں، ہم نے نمک پر قبضہ کرنا چاہتے ہیں مرموز پاس ورڈ کی طرف سے. ، آدمی کے فی صفحہ، یاد رکھیں کہ ایک مرموز کے پہلے دو حروف سٹرنگ، یہاں اچھا لگتا ہے - 50ZPJ اور اسی طرح کی - پہلے دو حروف دے ہم سے استعمال کیا جاتا تھا کہ نمک crypt تقریب میں. اور یہاں، ہم نے نمک ہا تھا کہ دیکھتے ہیں. تو ہم نے پہلے دو کاپی کرنے کے لئے چاہتے ہیں حروف، نمک کی لمبائی ہیش کیا جا رہا ہے دو کے طور پر بیان. ہم نے پہلے دو حروف کی کاپی کرنے کے لئے ہے اس صف میں، نمک. ہم پلس نمک کی لمبائی کی ضرورت ہے نوٹس ہم اب بھی ایک نیا null ضرورت سے ایک، ہمارے نمک کے آخر میں ٹرمنیٹر. پھر ہم اس سرنی کا اعلان کرنے جا رہے ہیں سائز زیادہ سے زیادہ لمبائی کی، مہمان پلس زیادہ سے زیادہ لمبائی کی وضاحت ہیش ہے جہاں ایک، آٹھ کے طور پر، کے بعد سے زیادہ سے زیادہ پاس ورڈ آٹھ حروف طویل ہے. اور ہم iterate کرنے کے لئے اس کا استعمال کرنے جا رہے ہیں تمام ممکنہ ڈور ختم کر سکتے تھے کہ درست پاسورڈ ہو. تو اگر ایک پاس ورڈ میں درست حروف اس کے بعد صرف ایک، B، اور C، تھے ہم، ایک سے زائد بی، سی، iterate گے AA، بی اے، CA، اور اسی طرح، جب تک ہم cccccccc کو مل سکیں - آٹھ ج کی. اور ہم نے ایک درست نیچے نہیں ہے تو پاس ورڈ، تو پھر ہم کہتے ہیں کرنے کی ضرورت ہے مرموز سٹرنگ نہیں تھا کے ساتھ شروع کرنے کے لئے درست. تو اب، ہم 1 لوپ جبکہ اس تک پہنچنے کے. اس کا مطلب یہ نوٹس ایک لامتناہی لوپ. کوئی وقفے کے بیان ہیں نوٹس یہ لامحدود لوپ کے اندر. صرف بیانات آمدید واپس کر رہے ہیں. تو ہم اصل میں توقع کبھی نہیں لوپ باہر نکلنے کے لئے. ہم صرف پروگرام سے باہر نکلنے کی توقع ہے. میں اس پرنٹ بیان شامل کیا ہے اس لوپ کے سب سے اوپر صرف باہر پرنٹ کرنے کے لئے میں کیا ہماری موجودہ اندازہ کیا لفظ ہے. اب، اس لوپ کیا کر رہی ہے؟ یہ سب ممکن ڈور سے زیادہ looping ہے کہ درست پاس ورڈ کو ہو سکتا ہے. ہم کیا کرنے جا رہے ہیں سب سے پہلی چیز ہے ہماری موجودہ اندازہ لینے کے لئے کیا پاس ورڈ ہے. ہم سے پکڑا کہ نمک لے جائیں گے مرموز سٹرنگ، اور ہم ہیں اندازہ خفیہ جا. یہ ہمیں ایک مرموز اندازہ دے گا ہم کے خلاف آپس میں موازنہ کرنے جا رہے ہیں جس میں مرموز سٹرنگ اس صارف کمانڈ لائن میں داخل ہوئے. وہ ایک ہی ہیں تو اس صورت میں موازنہ سٹرنگ، تو صفر کے واپس آ جائیں گے وہ ایک ہی ہیں، اس وقت تھا لگتا ہے مرموز پیدا کہ پاس ورڈ سٹرنگ، ہم پرنٹ کر سکتے ہیں جس صورت میں ہمارے پاس ورڈ اور واپسی کے طور پر ہے. لیکن وہ ایک ہی نہیں تھے تو، اس ہمارا اندازہ غلط تھا کا مطلب ہے. اور ہم پر iterate کرنا چاہتے ہیں اگلے درست اندازہ. تو اس کی کیا یہ کرتے ہوئے لوپ کرنے کی کوشش کر رہا ہے. یہ ہمارا اندازہ iterate جا رہا ہے اگلے درست اندازہ کرنے کے لئے. ہم کہتے ہیں کہ جب کہ ایک نوٹس ہمارا اندازہ میں خاص کردار ہے جس کے یہاں زیادہ سے زیادہ سنہرے بالوں والی، پہنچ ہیش کے بعد سے، ایک ٹلڈا کے طور پر بیان کیا جاتا ہے کہ سب سے بڑا ASCII قدر کردار ہے ایک صارف میں داخل کر سکتے ہیں کی بورڈ، جب کردار تک پہنچ جاتا ہے زیادہ سے زیادہ سنہرے بالوں والی، پھر ہم بھیجنا چاہتے یہ کم از کم علامت واپس جس پھر، سب سے کم ASCII ایک جگہ ہے قیمت کی علامت ایک صارف کر سکتے ہیں کی بورڈ میں درج کریں. تو ہم نے اس کے قائم کرنے کے لئے جا رہے ہیں کم از کم علامت ہے. اور پھر ہم جانے کے لئے جا رہے ہیں اگلے کریکٹر پر. تو کس طرح ہمارے اندازے ہیں iterate کرنے والے ہو؟ ٹھیک ہے، درست حروف، اے، بی ہو تو اور C، پھر ہم ایک ساتھ شروع کر دیا تو یہ ب کرنے کے لئے iterate گے، یہ کروں گا C کرنے کے لئے iterate. ج ہماری زیادہ سے زیادہ نشانی ہے، تو ہم قائم کریں گے ایک واپس C، کم از کم علامت. اور پھر ہم انڈیکس iterate گے اگلے کردار. اصل اندازہ C، اگلے تھی تو اگر کردار شہوت انگیز null ہونے جا رہا ہے ٹرمنیٹر. یہاں نیچے، توجہ کہ اگر کردار اب ہم چاہتے ہیں کہ اضافہ، شہوت انگیز null ٹرمنیٹر تھا پھر ہم اسے قائم کرنے کے لئے جا رہے ہیں کم از کم علامت. اندازہ تو، C تھا لہذا اگر ہمارے نیا اندازہ AA بننے جا رہی ہے. اور ہماری اصل اندازہ تھا تو پھر cccc، ہمارے نئے اندازہ aaaaa بننے جا رہی ہے. لہذا جب بھی ہم زیادہ سے زیادہ تک پہنچنے کے سٹرنگ ایک مقررہ لمبائی کی، تو ہم ہیں کم از کم سٹرنگ پر بھی لاگو کرنے کے لئے جا اگلے لمبائی کی، جو کرے گا صرف تمام حروف کا ہونا کم از کم علامت. اب، اس چیک یہاں کیا کر رہا ہے؟ ٹھیک ہے، اگر انڈیکس آٹھویں سے منتقل کر دیا گیا نو کردار کردار - تو ہم نے آٹھ سی کی طور پر شامل کریں لگتا ہے ہمارے گزشتہ - اس کے بعد انڈیکس پر توجہ مرکوز کی جا رہی ہے ہمارے اندازہ کے آخری شہوت انگیز null ٹرمنیٹر اصل مقصد نہیں ہے جس سرنی، ہمارے پاس ورڈ میں استعمال کیا جائے. ہم اس آخری شہوت انگیز null پر توجہ مرکوز کر رہے ہیں تو اگر ٹرمنیٹر، تو ہم ایک نہیں ملا درست صرف آٹھ کا استعمال کرتے ہوئے ہے کہ پاس ورڈ نہیں ہے جس کا مطلب ہے حروف، خفیہ کرتا ہے کہ وہ درست پاس ورڈ دی سٹرنگ کرنے کے لئے. اور ہم کہہ رہے ہیں، کہ پرنٹ کرنے کے لئے ہے ہم نے ایک درست نہیں مل سکا پاس ورڈ، اور واپسی. تو یہ جبکہ لوپ iterate جا رہا ہے تمام ممکنہ ڈور سے زیادہ. اسے لگتا ہے تو کسی بھی خفیہ کرتا ہے کہ توقع مرموز سٹرنگ، یہ کروں گا اس پاس ورڈ کو واپس. اور یہ اس وقت، کچھ بھی تلاش نہیں کرتا یہ پرنٹنگ، واپس آ جائیں گے کہ یہ کچھ تلاش کرنے کے قابل نہیں تھا. اب، توجہ ہے کہ سب سے زیادہ iterating ممکن ڈور شاید جا رہا ہے تھوڑی دیر کے لے. چلو اصل میں کس طرح دیکھتے ہیں جب تک کہ لیتا ہے. کی شگاف کرنے دو ٹھیک ہے، افوہ - یہ جانچ کا کہنا ہے کہ crypt کے حوالے. P رپورٹ کا تعین کرتا ہے اور اس کے لئے تو یاد ہے، crypt کے لئے بھی آدمی کے صفحے کہ ہم crypt میں منسلک کرنے کی ضرورت ہے. اب، پہلے سے طے شدہ کمانڈ بنا معلوم نہیں ہے کہ آپ اس تقریب کا استعمال کرنا چاہتے ہیں. تو چلو اس کلائنٹ کے حکم کی کاپی اور صرف ختم کرنے کے لئے پر شامل کریں اس کے، منسلک crypt. اب، یہ compiles. تو چلو ایک مقررہ پر شگاف چلانے مرموز سٹرنگ - سیزر کی تو. تو وہ کافی تیز تھی. اس 13 کو ختم ہو گئی یہ نوٹس. ٹھیک ہے، کیسر کی مرموز پاس ورڈ 13 بننا ہوتا ہے. تو اس کی ایک اور پاس ورڈ کوشش کرنے دو کی Hirschhorn کی مرموز لینے دو پاس ورڈ کریکنگ اور اس کی کوشش کریں. ہم نے پہلے ہی پہنچ چکے ہیں تو نوٹس تین حروف. اور ہم ہر ممکن سے زیادہ iterating رہے ہیں تین کردار ڈور. کہ ہم نے پہلے ہی ختم کر دیا ہے اس کا مطلب تمام ممکنہ ایک سے زیادہ iterating اور دو کردار ڈور. یہ جا رہا ہے کی طرح اب، یہ لگتا ہے ہم تک پہنچنے سے پہلے میں کچھ وقت لگ چار کردار ڈور. یہ چند منٹ لگ سکتے ہیں. یہ چند منٹ بھی نہیں لیا. ہم چار حروف کی ڈور پر ہیں. لیکن اب، ہم سب سے زیادہ iterate کرنے کی ضرورت ہے ممکن چار کردار ڈور، جس کہ شاید 10 منٹ لگ سکتے ہیں. اور پھر ہم پانچ کردار تک پہنچنے میں جب ڈور، ہم سب سے زیادہ iterate کرنے کی ضرورت ہے ان لوگوں کے، جو شاید ایک جوڑے گھنٹے لگیں. اور ہم ہر ممکن سے زیادہ iterate کرنے کی ضرورت ہے چھ کردار ڈور، جس اسی طرح کی ایک جوڑے اور دن لگ سکتے ہیں. تو یہ بہت طویل ممکنہ طور پر ایک لے سکتا ہے ہر ممکن سے زیادہ iterate کرنے کے لئے وقت آٹھ کردار اور کم ڈور. تو یہ ضروری نہیں کہ متعلقہ تلاش کرنے کے لئے بہت موثر الگورتھم ایک پاس ورڈ. آپ کو لگتا ہے کہ وہاں بہتر طریقے ہیں. مثال کے طور پر، پاس ورڈ zyx! 32ab شاید ایک بہت عام پاس ورڈ، نہیں ہے 12345 پاس ورڈ ہے جبکہ شاید زیادہ بہت عام. ایک پاس ورڈ تلاش کرنے کی کوشش کی تو ایک ہی راستہ زیادہ تیزی سے صرف نظر کرنے کے لئے ہے زیادہ عام ہیں کہ پاس ورڈ میں. لہذا مثال کے طور پر، ہم نے الفاظ کو پڑھنے کے لئے کوشش کر سکتے ہیں ایک ڈکشنری سے اور سب کو کرنے کی کوشش کریں ہمارے پاس ورڈ اندازے کے طور پر ان الفاظ. اب، شاید ایک پاس ورڈ اتنا آسان نہیں ہے. ہو سکتا ہے کہ صارف کو کسی حد تک ہوشیار تھا اور ایک بڑی تعداد appending کی کوشش ایک لفظ کے آخر میں. تو شاید ان کے پاس ورڈ password1 تھا. تو آپ کو تمام الفاظ ختم iterating کوشش کر سکتے ہیں ایک ایک کے ساتھ لغت میں اس کے آخر سے منسلک. اور پھر ہو سکتا ہے کہ کرنے کے بعد، آپ اس کے آخر میں ایک دو شامل. یا شاید صارف سے بھی ہونے کی کوشش کر رہا ہے زیادہ ہوشیار ہے، اور وہ چاہتے ہیں کہ ان کے پاس ورڈ "، ہیکر" بننے کے لئے لیکن وہ کر رہے ہیں ای کی تمام مثالوں کو تبدیل کرنے والا threes کے ساتھ. تو تم بھی ایسا کر سکتا ہے. ڈکشنری میں تمام الفاظ پر Iterate لیکن اس کے حروف کی جگہ لے لے ان لوگوں کی تعداد کے ساتھ نمبروں کی طرح نظر آتے. اس طرح تو، تم سے بھی زیادہ پکڑ سکتا ہے خوبصورت عام ہیں کہ پاس ورڈ کو. لیکن آخر میں صرف ایک ہی طریقہ آپ کر سکتے ہیں تمام پاس ورڈ کا قبضہ جانور ہے سب سے زیادہ iterate مجبور ممکن ڈور. لہذا آخر میں، آپ iterate کرنے کی ضرورت ہے ایک کردار سے تمام ڈور سے زیادہ ایک لے سکتا ہے جو آٹھ حروف، بہت طویل وقت، لیکن آپ کو ایسا کرنے کی ضرورت ہے. میرا نام Rob Bowden ہے. اور یہ کریک ہے.