import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġjava . lang . Arithmetic Exception Ċ import Ġjava . lang . Thread . sleep Ċ import Ġkotlin . system . measure Nano Time Ċ import Ġkotlin . system . measure Time Millis Ċ Ċ /* Ċ Ġ* ĠBr ute ĠForce ĠPassword ĠCr acker Ġprogram . Ċ Ġ* ĠPurpose : ĠTo Ġbr ute Ġforce Ġcr ack Ġany Ġpassword . Ċ Ġ* Ċ Ġ* ĠAuthor : ĠCam den ĠMac ĠLe od Ġa ka ĠC yan Coding . Ċ Ġ* ĠFile Ġcreated Ġon ĠMar Ġ 9 , Ġ 2 0 2 0 . Ċ Ġ*/ Ċ Ċ /* Ċ Ġ* ĠMain Ġbr ute Ġforce Ġrecursive Ġfunction Ċ Ġ*/ Ċ var Ġstop : ĠBoolean Ġ= Ġfalse Ġ// ĠUsed Ġwhen Ġthe Ġfunctions Ġneed Ġto Ġstop Ġto Ġincrease Ġvalue Ċ // Ġexit Ġis Ġan Ġarray Ġcontaining Ġbool Ġvalues Ġfor Ġeach Ġlength Ġ( 1 - 8 ). ĠWhen Ġall Ġpossib ilities Ġfor Ġone Ġlength Ċ // Ġof Ġa Ġstring Ġhas Ġbeen Ġmade , Ġthe Ġvalue Ġbecomes Ġtrue . ĠThis Ġis Ġnecessary Ġfor Ġthe Ġcor outines . Ċ var Ġexit Ġ= ĠarrayOf < Boolean >( false , Ġfalse , Ġfalse , Ġfalse , Ġfalse , Ġfalse , Ġfalse , Ġfalse ) Ċ var Ġtries : ĠLong Ġ= Ġ 0 Ċ var Ġcheck End : ĠString Ġ= Ġ"" Ċ Ċ fun Ġbr ute Force ( current : ĠString , Ġpassword : ĠString , Ġlength : ĠInt , Ġchars : ĠArray < Char >, Ġthread ID : ĠInt ) Ġ{ ĊĠĠĠ Ġ// ĠWhile Ġnot Ġstopped Ġand Ġthere 's Ġstill Ġpossible Ġvalues Ġin Ġthis Ġlength ĊĠĠĠ Ġif Ġ(! stop Ġ&& Ġ! exit [ thread ID Ġ- Ġ 1 ]) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current . length Ġ== Ġlength ) Ġ{ Ġ// ĠWe 're Ġback Ġup Ġto Ġfull Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtries ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Ġ== Ġpassword ) Ġ{ Ġ// ĠPassword Ġis Ġa Ġmatch ! ĠBreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck End Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGets Ġthe Ġlast Ġvalue Ġfor Ġthat Ġlength . ĠExample : Ġz zz Ġ( for Ġlength Ġ= Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck End Ġ+= Ġchars [ chars . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBreak s Ġout Ġof Ġthis Ġlength Ġbecause Ġall Ġof Ġthe Ġpasswords Ġhave Ġbeen Ġgues sed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Ġ== Ġcheck End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat ("[ HH : mm : ss : SS S ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Date Ġ= ĠdateFormat . format ( Date ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ current Date ĠThread Ġ$ thread ID Ġdone ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit [ thread ID Ġ- Ġ 1 ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current . length Ġ< Ġlength ) Ġ{ Ġ// ĠNot Ġup Ġto Ġfull Ġlength , Ġappend Ġa Ġcharacter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe cursively Ġcreate Ġanother Ġpassword ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġchars ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ( current Ġ+ Ġelement , Ġpassword , Ġlength , Ġchars , Ġthread ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /* Ċ Ġ* ĠMain Ġfunction Ċ Ġ*/ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġprintln (" Br ute ĠForce ĠPassword ĠCr acker Ġprogram Ġby ĠC yan Coding .") ĊĊĠĠĠ Ġ// ĠGet Ġthe Ġcurrent Ġyear Ġand Ġprint Ġit Ġwith Ġthe Ġcopyright ĊĠĠĠ Ġvar ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy ") ĊĠĠĠ Ġval Ġcurrent Date Ġ= ĠdateFormat . format ( Date ()) ĊĠĠĠ Ġif Ġ( current Date Ġ== Ġ" 2 0 2 0 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Copyright Ġ 2 0 2 0 ĠC yan Coding .") ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Copyright Ġ 2 0 2 0 Ġ- Ġ$ current Date ĠC yan Coding .") ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" -------------------------------- --------------- ") ĊĠĠĠ Ġprint (" Please Ġenter Ġyour Ġpassword Ġto Ġcr ack Ġ> Ġ") ĊĠĠĠ Ġval Ġpassword Ġ= Ġread Line () !! ĊĊĠĠĠ Ġval Ġcharacters Ġ= ĠarrayOf < Char >(' a ', Ġ' b ', Ġ' c ', Ġ' d ', Ġ' e ', Ġ' f ', Ġ' g ', Ġ' h ', Ġ' j ', Ġ' k ', Ġ' l ', Ġ' m ', Ġ' n ', Ġ' o ', Ġ' p ', Ġ' q ', Ġ' r ', Ġ' s ', Ġ' t ', Ġ' u ', Ġ' v ', Ġ' w ', Ġ' x ', Ġ' y ', Ġ' z ') ĊĊĠĠĠ ĠdateFormat Ġ= ĠSimpleDateFormat ("[ HH : mm : ss : SS S ]") ĊĠĠĠ Ġval ĠstartTime Ġ= ĠdateFormat . format ( Date ()) ĊĊĠĠĠ Ġ// Ġvar Ġlength : ĠInt Ġ= Ġ 1 ĊĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 1 , Ġcharacters , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 2 , Ġcharacters , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 3 , Ġcharacters , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 4 , Ġcharacters , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 5 , Ġcharacters , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 6 , Ġcharacters , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 7 , Ġcharacters , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr ute Force ("", Ġpassword , Ġ 8 , Ġcharacters , Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ// ĠWe Ġwant Ġto Ġwait Ġfor Ġthe Ġthreads Ġto Ġfinish Ġguess ing Ġthe Ġpassword Ġbefore Ġmoving Ġon ĊĠĠĠ Ġwhile Ġ(! stop ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsleep ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠendTime Ġ= ĠdateFormat . format ( Date ()) ĊĊĠĠĠ Ġprintln ("\ n \ n Cr ack ed Ġ$ password ! ĠStatistics :") ĊĠĠĠ Ġprintln (" T ries : Ġ${ " %, d ". format ( tri es )}. ") ĊĠĠĠ Ġprintln (" Start : Ġ$ startTime ") ĊĠĠĠ Ġprintln (" End : Ġ$ endTime ") Ċ }