From 7ad92f2b49534e498d911609bc9fff11642e4e82 Mon Sep 17 00:00:00 2001 From: quackerd Date: Thu, 28 Apr 2022 17:18:55 +0800 Subject: [PATCH] initial commit --- crargo.go | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 13 ++++++ go.sum | 18 +++++++++ test.dict | 8 ++++ test.rar | Bin 0 -> 31342 bytes 5 files changed, 157 insertions(+) create mode 100644 crargo.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 test.dict create mode 100644 test.rar diff --git a/crargo.go b/crargo.go new file mode 100644 index 0000000..ad0bbcf --- /dev/null +++ b/crargo.go @@ -0,0 +1,118 @@ +package main + +import ( + "bufio" + "bytes" + "fmt" + "log" + "os" + "strconv" + "sync/atomic" + "time" + + "github.com/mholt/archiver" +) + +func crack(tid int, file []byte, fn string, passwords []string, found **string, stop *bool, total *uint64, exited *int32) { + fmt.Println("Thread", tid, ": starting with", len(passwords), "passwords...") + + rar := archiver.NewRar() + rar.ContinueOnError = false + rar.ImplicitTopLevelFolder = true + rar.OverwriteExisting = true + rar.MkdirAll = false + + for i := 0; i < len(passwords); i++ { + if *stop { + goto end + } + + cur_pass := passwords[i] + rar.Password = cur_pass + reader := bytes.NewReader(file) + + err := rar.Open(reader, 0) + if err != nil { + log.Fatal(err) + } + + _, err = rar.Read() + if err == nil { + *found = &passwords[i] + goto end + } + + rar.Close() + atomic.AddUint64(total, 1) + } +end: + fmt.Println("Thread", tid, ": stopped.") + atomic.AddInt32(exited, 1) +} + +func main() { + if len(os.Args) != 4 { + log.Fatal("Invalid arguments. Usage: go run crargo.go [file path] [dictionary path] [thread count]") + } + + fn := os.Args[1] + dictfn := os.Args[2] + var dict []string + threads, err := strconv.Atoi(os.Args[3]) + if err != nil || threads <= 0 { + log.Fatal("Invalid thread count: \"", os.Args[3], "\"") + } + + fmt.Println("Cracking \"", fn, "\" with dict \"", dictfn, "\" using ", threads, " threads...") + fmt.Println("Reading archive...") + fb, err := os.ReadFile(fn) + if err != nil { + log.Fatal(err) + } + + fmt.Println("Reading dictionary...") + dictf, err := os.Open(dictfn) + if err != nil { + log.Fatal(err) + } + + scanner := bufio.NewScanner(dictf) + for scanner.Scan() { + dict = append(dict, scanner.Text()) + } + + if err := scanner.Err(); err != nil { + log.Fatal(err) + } + + fmt.Println("Processed", len(dict), "dictionary entries.") + + each_thread := len(dict) / threads + + var found *string = nil + var stop bool = false + var total uint64 = 0 + var exited int32 = 0 + for i := 0; i < threads; i++ { + go crack(i, fb, fn, dict[each_thread*i:each_thread*(i+1)], &found, &stop, &total, &exited) + } + + var sec int = 0 + for { + time.Sleep(1 * time.Second) + sec++ + if found != nil { + fmt.Print("Found password: \"", *found, "\"\n") + stop = true + for int(atomic.LoadInt32(&exited)) < threads { + } + break + } else if int(atomic.LoadInt32(&exited)) == threads { + fmt.Println("No password found!") + break + } else { + tot := atomic.LoadUint64(&total) + fmt.Println("main: total tries: ", tot, "(", tot/uint64(sec), " req/s)") + } + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..d3a1956 --- /dev/null +++ b/go.mod @@ -0,0 +1,13 @@ +module github.com/mholt/archiver/cmd/arc/v2 + +go 1.18 + +require ( + github.com/dsnet/compress v0.0.1 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/mholt/archiver v3.1.1+incompatible // indirect + github.com/nwaples/rardecode v1.1.3 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..ccdbf1b --- /dev/null +++ b/go.sum @@ -0,0 +1,18 @@ +github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= +github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= +github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/mholt/archiver v3.1.1+incompatible h1:1dCVxuqs0dJseYEhi5pl7MYPH9zDa1wBi7mF09cbNkU= +github.com/mholt/archiver v3.1.1+incompatible/go.mod h1:Dh2dOXnSdiLxRiPoVfIr/fI1TwETms9B8CTWfeh7ROU= +github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc= +github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= +github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= +github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= diff --git a/test.dict b/test.dict new file mode 100644 index 0000000..8eee2e3 --- /dev/null +++ b/test.dict @@ -0,0 +1,8 @@ +dflkhjaslhdkjf +gjhklhjkdf +sdfkjhshk +asdkjahskjd +!@#!@$%@#!@ +asdfkjhasdhkjfk +yourmom +#!@!$@#!@# \ No newline at end of file diff --git a/test.rar b/test.rar new file mode 100644 index 0000000000000000000000000000000000000000..90072190d786de1030cd2ce54629b4afd3e25cf7 GIT binary patch literal 31342 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%0AP%Vx*%F_eaEAp41n;A$-Q_!6Ml?Z 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

b7H~cb@ak$M5MLeT5UwrC ztweHQd6w#DFaXN*ONBt%+TFgKZb@G?%-E4&$-B(K+-hNQ68M%&bRR@sa24}hqU5OZ z0XjUuI6WpfctOrGc#1x(M@ufFSm0;uU2`>e6R$cHWWj(*#{^e$h%SmSMJp=onijE1 z1?^zKF>C}4k1rdVaz|K=k9^W|QxZ8BbaFthTEfu@)a?g4-@roO`wRfj&g;@MQ&M<3rMF-!PbNi?03zGFFN#Bz+=@Y27x$ZbbRZ?_!?|!!B=z!FX4*|Bk$4)E$GEo8 z8RLWGcwdZKrCWo6p)i4<&I2W$b#kb9VtDVCj1MI#vCL=AYK)vuc<2jXm~zbq^Z&ncy+7Eks#u`H5IW)v8>z*p{+3N>C$uAM8d6f3Lqr?k5+ zYvciq%x?!1+2*r^X`_W>xlcH#$MJbJ#_4}Tr36Axz|J%8d5eZZFd;xXw{kk_H7-^0 zfnL@*x(O#PWB?Kyt)<+nv7GT#MHr$j3vzG6`HHLU>rs2AD? zJcM(=#!`CE*L01D{|ZxH4(^xfMAc8Fcg~F_U6dykn@r54g{b**(Vb-Z_|5k|*i~E? z8Q3_+l7JHl`D;s2BRwiEodD(5wEx=`lbrZ7XtjDN21BtT^_7?)FKAK0t6q6N=__~% z@BwcDce6JXfWE>Kw&x{7N2$*hZW$ci>ilvOvKw)AqPxgt_b&!syrx%?sSsP9KfPIP9_ZO zvb@@Yl=Td$dA}gGd%KrjS^7cyAY9D5=gAKn$=%+l^l7+99H6bcJFh{m+Ih?5N1WAl z>6pvF&OZ(1btYyxoEW>dY!~}z$r7Z$KOP@hr`!y`FID_a=k0(QN$>2abc+`kUpH@axss5LgBPt{ia{k1>Lp9t9m{18JLI-Gf}RrOYz+P<`;C=sbl90m zOei*-*;g8|sm|@UB?p^$TrV_9ofC8S<%C(I|9?8foiL_W_?jvHrF-!)esf8eV0D@8 zcWb18-B+C!k#1p+#Cn_l-PZTfSX;*XRpHI#vhoHNA`2QZA)s;pg*8h`Jgmqh@FI`Y z31b)$?~;tA{GFwa9c9B{mdY>^+zq3DhprfNY4iG{fFExsU#x|=!u=2={QUn;F>B$s z@Mq9Lf*>69k71+EkWz4jy%S=J!Togv{7OfP&Wf~VSh9nGZlZiSR_)-M|#PLXtv*yVgHOZ3x&)6knH>z zX48SRB|}8H(6VFlt3yj>1-p)wgiPyTiqDRPEXn56`4A!;FBw+5yBF>{zMXF;ZcJW? z*Mp!Xpev%#N|~K*^t0{2Bg=6 zeot6XdO5;aq{jSYvxG2a-Yk>DX}%n*sCW869r*90PSw!HK_=W}QF2kX6y#nYZlTa4 B%C-Oi literal 0 HcmV?d00001