రాబ్ బౌడెన్: నేను రాబ్ రెడీ, మరియు యొక్క పగుళ్లను లెట్స్ గెట్. సో pset స్పెక్ నుండి గుర్తున్నది మేము ఉపయోగించడానికి అవసరం వెళుతున్న చేస్తున్నాం నేల ఫంక్షన్. మనిషి పేజీ కోసం, మేము కలిగి రెండు హాష్ _xopensource వివరిస్తాయి. ఎందుకు చింతించకండి మేము చెయ్యాల్సిన. మరియు కూడా హాష్ unistd.h ఉన్నాయి. సో ఒకసారి విధంగా కోల్పోయాడు, లెట్స్ వాస్తవ కార్యక్రమం పొందండి. మేము చెయ్యాల్సిన మొదటి విషయం నిర్ధారించుకోండి ఉంది యూజర్ ఒక చెల్లుబాటు అయ్యే ఎన్క్రిప్టెడ్ ఎంటర్ కమాండ్ లైన్ ను. కార్యక్రమం భావించే గుర్తుంచుకో డాట్ స్లాష్ క్రాక్ వంటి అమలు, చేయబడుతుంది తర్వాత గుప్తీకరించిన స్ట్రింగ్. ఇక్కడ మేము నిర్ధారించడానికి తనిఖీ చేస్తున్నాము ఆ రెండు argc మేము అనుకుంటే కార్యక్రమం కొనసాగించాలని. Argc రెండు లేకపోతే, దానిని అర్థం యూజర్ ఎన్క్రిప్టెడ్ నమోదు చేయలేదు కమాండ్ లైన్ ను, లేదా వారు కేవలం ఎన్క్రిప్టెడ్ కంటే ఎంటర్ కమాండ్ లైన్ ను, దీనిలో కేసు మేము ఏమి తెలియదు ఆదేశ పంక్తి వాదనలు. Argc రెండు ఉంది కనుక, మేము కొనసాగించవచ్చు. మరియు ఇక్కడ, మేము డిక్లేర్ చేయబోతున్నామని ఒక వేరియబుల్ ఎన్క్రిప్టెడ్. కేవలం అలియాస్ అసలు అవకాశముంది argv1 తద్వారా ఈ మొత్తం కార్యక్రమం, మేము, అది argv1 కాల్ లేదు అప్పుడు మీరు ఆలోచించడం కలిగి వాస్తవానికి అర్థం గురించి. సో చివరకు, మేము ధ్రువీకరించడానికి మీరు ఎన్క్రిప్టెడ్ పాస్వర్డ్ను యూజర్ ఎంటర్ నిజానికి ఉండేవి ఎన్క్రిప్టెడ్ పాస్వర్డ్ను. గోరీ యొక్క వ్యక్తి పేజీ, ప్రతి ఎన్క్రిప్టెడ్ పాస్వర్డ్ను 13 ఉండాలి అక్షరాల. ఇక్కడ, మేము హాష్ నిర్వచించిన గమనించవచ్చు 13 పొడవు గుప్తీకరించడానికి. కాబట్టి మేము కేవలం ఖచ్చితంగా ఆ చేస్తున్న ఎన్క్రిప్టెడ్ యొక్క స్ట్రింగ్ పొడవు పాస్వర్డ్ 13 ఉంది. అది కాదు ఉంటే, మేము కావలసిన కార్యక్రమం నిష్క్రమించడానికి. సో ఒకసారి మేము, మార్గం యొక్క చేయవచ్చు కోల్పోయాడు ఇప్పుడు నిజానికి కనుగొనేందుకు ప్రయత్నించండి ఏమి ఎన్క్రిప్టెడ్ ఇచ్చిన పాస్వర్డ్ పాస్వర్డ్ ఉంది. ఇక్కడ, మేము ఉప్పు పట్టుకోడానికి అనుకుంటున్నారా ఎన్క్రిప్టెడ్ పాస్వర్డ్ను నుండి. , మనిషి పేజీకి గుర్తుంచుకోండి ఆ ఎన్క్రిప్టెడ్ మొదటి రెండు అక్షరాలు స్ట్రింగ్, ఇక్కడ ఇష్టం - 50ZPJ మరియు అందువలన న - మొదటి రెండు అక్షరాలు ఇవ్వాలని మాకు ఉపయోగించిన ఉప్పు నేల ఫంక్షన్ లో. మరియు ఇక్కడ, మేము ఉప్పు ha అని చూడండి. కాబట్టి మేము మొదటి రెండు కాపీ అనుకుంటున్నారా అక్షరాలు, ఉప్పు పొడవు హాష్ ఉండటం రెండు నిర్వచించబడింది. మేము మొదటి రెండు అక్షరాలు కాపీ కలిగి ఈ శ్రేణి లోకి, ఉప్పు. మేము ప్లస్ ఉప్పు పొడవు అవసరం గమనించవచ్చు మేము ఇంకా ఒక శూన్య అవసరం నుండి ఒక, మా ఉప్పు చివరిలో చివరను. అప్పుడు మేము, ఈ శ్రేణి డిక్లేర్ చేయబోతున్నామని పరిమాణం గరిష్ట పొడవు యొక్క అతిథి, ప్లస్ గరిష్ట పొడవు నిర్వచించిన హాష్ ఉన్న ఒక, ఎనిమిది, నుండి గరిష్ట పాస్వర్డ్ను ఎనిమిది అక్షరాలు. మరియు మేము iterate ఈ ఉపయోగించడానికి చేయబోతున్నామని అన్ని తీగలను ఎక్కువ అనుకొనుట చెల్లుబాటు అయ్యే పాస్వర్డ్లను ఉంటుంది. కనుక ఒక పాస్వర్డ్ను చెల్లుబాటు అయ్యే అక్షరాలు అప్పుడు ఒక, b మరియు c, ఉన్నాయి మేము, ఒక పైగా బి, సి, iterate ఉంటుంది ఆ, బా, CA, మరియు అందువలన న, వరకు మేము cccccccc చూడచ్చు - ఎనిమిది సి యొక్క. మరియు మేము ఒక చెల్లుబాటు అయ్యే డౌన్ కలిగి ఉంటే పాస్వర్డ్, అప్పుడు మేము చెప్పటానికి అవసరమైన ఎన్క్రిప్టెడ్ స్ట్రింగ్ కాదు తో ప్రారంభించడానికి చెల్లదు. కాబట్టి ఇప్పుడు, మేము 1 లూప్ ఈ చేరుకోవడానికి. ఇది అర్థం గమనించవచ్చు అనంతమైన లూప్. ఏ విరామం ప్రకటన ఉన్నాయి గమనించండి ఈ అనంతమైన లూప్ యొక్క లోపల. మాత్రమే ప్రకటనలు అక్కడ తిరిగి ఉంటాయి. కాబట్టి మేము నిజానికి ఆశించే ఎప్పుడూ లూప్ నిష్క్రమించడానికి. మేము మాత్రమే ప్రోగ్రామ్ నిష్క్రమించడానికి ఆశించే. నేను ఈ ముద్రణ ప్రకటన జోడించిన ఈ లూప్ యొక్క టాప్ కేవలం ముద్రించాలా వద్ద మా ప్రస్తుత అంచనా ఏ పాస్వర్డ్. ఇప్పుడు, ఈ లూప్ ఏమి ఉంది? ఇది అన్ని తీగలను పైగా మళ్ళీ వెతికినా లో ఆ చెల్లుబాటులో పాస్వర్డ్లను కావచ్చు. మేము చేయబోతున్నామని మొదటి విషయం మా ప్రస్తుత అంచనా పడుతుంది ఏమి కోసం పాస్వర్డ్. మేము నుండి పట్టుకుని ఉప్పు తీసుకొని వెళ్తాము ఎన్క్రిప్టెడ్ స్ట్రింగ్, మరియు మేము అంచనా గుప్తీకరించడానికి వెళుతున్న. ఈ, మాకు ఎన్క్రిప్టెడ్ అంచనా ఇస్తుంది మేము వ్యతిరేకంగా సరిపోల్చండి చేయబోతున్నామని ఇది ఎన్క్రిప్టెడ్ స్ట్రింగ్ ఆ యూజర్ కమాండ్ లైన్ వద్ద ప్రవేశించింది. వారు, అదే ఉంటే ఈ సందర్భంలో పోల్చదగిన స్ట్రింగ్, ఉంటే సున్నా తిరిగి ఉంటుంది వారు అదే ఉన్నాము, అప్పుడు అంచనా ఎన్క్రిప్టెడ్ ఉత్పత్తి పాస్వర్డ్ స్ట్రింగ్, మేము ప్రింట్ చేసే సందర్భంలో మా పాస్వర్డ్ను తిరిగి ఆ. కానీ వారు కాదు ఉంటే, ఆ మా అంచనా తప్పు అర్థం. మరియు మేము iterate అనుకుంటున్నారా తదుపరి చెల్లుబాటు అయ్యే అంచనా. తద్వారా ఏమి ఈ సమయంలో లూప్ చేయడానికి ప్రయత్నిస్తున్నారు. ఇది మా అంచనా iterate అవకాశముంది తదుపరి చెల్లుబాటులో అంచనాకు. మేము చెప్పినప్పుడు మీరు గమనించవచ్చు ఒక మా అంచనా ప్రత్యేక పాత్ర ఉంది ఇది ఇక్కడ గరిష్ట చిహ్నం, చేరుకుంది హాష్ నుండి, ఒక tilde నిర్వచిస్తారు భారీ ASCII విలువ పాత్ర ఒక వినియోగదారు వద్ద ఎంటర్ చేసే కీబోర్డ్, ఉన్నప్పుడు పాత్ర చేరుకునే గరిష్టంగా చిహ్నం, అప్పుడు మేము పంపాలని అది కనీస చిహ్నం తిరిగి ఇది మళ్ళీ, తక్కువ ASCII ఒక స్థలం విలువ చిహ్నం వినియోగదారు చేస్తాడు కీబోర్డ్ వద్ద ఎంటర్. కనుక మనం ఆ సెట్ చేయబోతున్నామని కనీస గుర్తుకు. ఆపై మేము వెళ్ళి చేయబోతున్నామని తరువాత అక్షరానికి న. సో మా అంచనాలు ఉన్నాయి iterate వెళుతున్న? బాగా, చెల్లుబాటు అయ్యే అక్షరాలు, a, b ఉంటే మరియు సి, అప్పుడు మేము, ఒక ప్రారంభించండి ఉంటే ఇది బి కు iterate చేస్తాము, ఇది చేస్తాము సి కు iterate. సి మా గరిష్టంగా చిహ్నం, కాబట్టి మేము సెట్ చేస్తాము ఒక తిరిగి సి, కనీస చిహ్నం. ఆపై మేము ఇండెక్స్ iterate చేస్తాము తరువాత అక్షరానికి. అసలు అంచనా సి, తదుపరి ఉంది కనుక పాత్ర శూన్య అవతరిస్తుంది టెర్మినేటర్. డౌన్ ఇక్కడ, గమనించవచ్చు ఒకవేళ పాత్ర మేము ఇప్పుడు కావలసిన పెంపు, శూన్య చివరను ఉంది అప్పుడు మేము సెట్ చేయబోతున్నామని కనీస చిహ్నం. అంచనా అప్పుడు, సి ఉంది కనుక మా కొత్త అంచనా ఆ అవతరిస్తుంది. మరియు మా అసలు అంచనా ఉంటే అప్పుడు cccc, మా కొత్త అంచనా aaaaa అవతరిస్తుంది. సో చేసినప్పుడు మేము గరిష్ట స్ట్రింగ్ చేరుకోవడానికి పొడవుకు యొక్క, అప్పుడు మేము కనీస పదబంధానికి అమలు వెళుతున్న తదుపరి పొడవు, ఇది అవుతుంది అన్ని పాత్రల ఉంటుంది కనీస చిహ్నం. ఇప్పుడు, ఈ చెక్ ఇక్కడ ఏమి ఉంది? బాగా, ఉంటే సూచిక ఎనిమిదవ నుంచి తొమ్మిది పాత్ర పాత్ర - కాబట్టి మేము ఎనిమిది సి యొక్క జోడించండి అంచనా మా మునుపటి - అప్పుడు ఇండెక్స్ దృష్టి కానుంది మా అంచనా చివరి శూన్య చివరను నిజానికి ఉద్దేశించిన లేదు శ్రేణి, మా పాస్వర్డ్ను ఉపయోగించవచ్చు. మేము గత శూన్య కేంద్రీకరించబడి ఉంటాయి కనుక టెర్మినేటర్, అప్పుడు మేము ఒక దొరకలేదు చేశారు చెల్లుబాటు అయ్యే కేవలం ఎనిమిది ఉపయోగించి ఆ పాస్వర్డ్ను ఉండదు అంటే అక్షరాలు, రహస్య ఆ చెల్లే పాస్వర్డ్ను ఇచ్చిన పదబంధానికి. మరియు మేము ఈ విధంగా, ఆ ప్రింట్ కలిగి మేము ఒక చెల్లుబాటు అయ్యే దొరకలేదు పాస్వర్డ్, మరియు తిరిగి. సో ఈ సమయంలో లూప్ iterate కానుంది అన్ని తీగలను పైగా. ఇది గుర్తిస్తే ఏ రహస్య ఆ అంచనా ఎన్క్రిప్టెడ్ స్ట్రింగ్, అది చేస్తాము పాస్వర్డ్ తిరిగి. మరియు అది తరువాత, ఏవీ లేదు అది ప్రింటింగ్, తిరిగి ఉంటుంది అది ఏవీ పొందలేదు. ఇప్పుడు, గమనించవచ్చు అన్ని పైగా సంభవింప సాధ్యం తీగలను బహుశా కానుంది కొద్దిసేపట్లో. లెట్ యొక్క నిజానికి చూడండి ఎలా దీర్ఘ ఆ పడుతుంది. యొక్క క్రాక్ తయారు చేద్దాము. బాగా, oops - ఇది నిర్వచించబడలేదు చెప్పారు నేల గురించి సూచన. P స్పెక్ అమర్చుతుంది మరియు కనుక గుర్తు నేల కూడా మనిషి పేజీ మేము నేల లింక్ అవసరం. ఇప్పుడు, డిఫాల్ట్ ఆదేశ తయారు తెలియదని మీరు ఆ ఫంక్షన్ ఉపయోగించాలనుకుంటున్నాను. సో వీలు యొక్క ఈ క్లయింట్ ఆదేశం కాపీ మరియు కేవలం చివరి జోడింపుగా అది, లింక్ నేల. ఇప్పుడు, అది కూర్చింది. సో లెట్ యొక్క ఒక ఇచ్చిన న క్రాక్ అమలు ఎన్క్రిప్టెడ్ స్ట్రింగ్ - సీజర్ యొక్క కాబట్టి. తద్వారా అందంగా శీఘ్ర ఉంది. ఈ 13 న ముగిసింది గమనించవచ్చు. బాగా, సీజర్ యొక్క ఎన్క్రిప్టెడ్ పాస్వర్డ్ను 13 నిర్మాణము. సో యొక్క మరొక పాస్వర్డ్ ప్రయత్నించండి తెలపండి. యొక్క Hirschhorn యొక్క ఎన్క్రిప్టెడ్ తీసుకుందాం పాస్వర్డ్ మరియు పగుళ్లను ప్రయత్నించండి. మేము ఇప్పటికే చేరుకున్నారు కాబట్టి గమనించవచ్చు మూడు అక్షరాలు. మరియు మేము అన్ని పైగా సంభవింప చేస్తున్నారు మూడు పాత్ర తీగలను. మేము ఇప్పటికే పూర్తి చేసిన అర్థం అన్ని పైగా సంభవింప మరియు రెండు పాత్ర తీగలను. ఈ వెళ్తున్నారు వంటి ఇప్పుడు, అది కనిపిస్తుంది మేము చేరుకోవడానికి ముందు కొంత సమయం నాలుగు పాత్ర తీగలను. ఇది నిమిషాల ఒక జంట పడుతుంది. ఇది నిమిషాల పడుతుంది లేదు. మేము నాలుగు పాత్ర తీగలను న ఉన్నాము. కానీ ఇప్పుడు, మేము అన్ని పైగా iterate అవసరం సాధ్యం నాలుగు పాత్ర తీగలను, ఇది ఆ ఉండవచ్చు 10 నిమిషాల సమయం పట్టవచ్చు. ఆపై మేము ఐదు పాత్ర చేరుకోవడానికి ఉన్నప్పుడు తీగలను, మేము అన్ని పైగా iterate అవసరం ఆ, ఇది వాటిని ఒక జంట గంటలు పడుతుంది. మరియు మేము అన్ని పైగా iterate అవసరం ఆరు పాత్ర తీగలను, ఇది కాబట్టి ఒక జంట రోజుల సమయం పడుతుంది మరియు ఉండవచ్చు. కనుక ఇది చాలా శక్తివంతమైన ఒక పడుతుంది అన్ని పైగా iterate సమయం ఎనిమిది పాత్ర మరియు తక్కువ తీగలు. సో ఈ ఒక అవసరం లేదు గమనించవచ్చు కనుగొనడానికి చాలా సమర్థవంతంగా అల్గోరిథం ఒక పాస్వర్డ్ను. మీరు అనుకుంటున్నాను ఉండవచ్చు ఆ అక్కడ మంచి మార్గాలు ఉన్నాయి. ఉదాహరణకు, పాస్వర్డ్ను zyx! 32ab బహుశా చాలా సాధారణ పాస్ వర్డ్ కాదు 12345 పాస్వర్డ్ను మాత్రమే బహుశా మరింత చాలా సాధారణ. ఒక పాస్వర్డ్ను కనుగొనేందుకు ప్రయత్నిస్తున్న కాబట్టి ఒక మార్గం మరింత త్వరగా కేవలం చూడండి ఉంది సర్వసాధారణం పాస్ వర్డ్ వద్ద. సో ఉదాహరణకు, మేము పదాలను చదవడం ప్రయత్నించవచ్చు ఒక నిఘంటువు నుండి మరియు అన్ని ప్రయత్నించండి మా పాస్వర్డ్ను అంచనాలు ఆ పదాలు. ఇప్పుడు, బహుశా ఒక పాస్వర్డ్ను సాధారణ కాదు. బహుశా వినియోగదారు కొంతవరకు నేర్పరి మరియు ఒక సంఖ్య అనుమతిస్తూ ప్రయత్నించండి ఒక పదం యొక్క చివరి. సో ఉండవచ్చు వారి పాస్వర్డ్ password1 ఉంది. సో మీరు అన్ని పదాల కన్నా సంభవింప ప్రయత్నించవచ్చు ఒక తో నిఘంటువులో అది చివర. ఆపై ఉండవచ్చు అని చేసిన తరువాత, మీరు చేస్తాము అది చివర ఒక రెండు కలపవచ్చు. లేదా ఉండవచ్చు యూజర్ సరి ప్రయత్నిస్తున్నారు మరింత తెలివైన, మరియు వారు మీరు వారి పాస్వర్డ్ ", హ్యాకర్" అని కానీ వారు ఉన్నారు ఇ యొక్క అన్ని సందర్భాల్లో స్థానంలో వెళ్తున్నారు త్రీస్ తో. సో మీరు చాలా ఈ చేయటానికి. నిఘంటువులో అన్ని పదాల కన్నా Iterate కానీ ఆ పాత్రల స్థానంలో ఆ సంఖ్యలు సంఖ్యలు కనిపిస్తుంది. ఈ విధంగా, మీకు మరింత అందుకోవచ్చు అందంగా సాధారణం పాస్ వర్డ్. ఆఫీసా, ఏకైక మార్గం మీరు చెయ్యవచ్చు అన్ని పాస్వర్డ్లను పట్టుకుని బ్రూట్ ఉంది అన్ని పైగా iterate బలవంతం సాధ్యం తీగలను. సో చివరికి, మీరు iterate అవసరం ఒక పాత్ర నుంచి అన్ని తీగలను పైగా ఒక పట్టవచ్చు ఇది ఎనిమిది అక్షరాలు, చాలా కాలం, కానీ మీరు దీన్ని అవసరం. నా పేరు రాబ్ బౌడెన్ ఉంది. మరియు ఈ క్రాక్ ఉంది.