@@ -13,10 +13,13 @@ import (
13
13
func main () {
14
14
chain := pencode .NewChain ()
15
15
16
+ inputWordlist := flag .String ("input" , "" , "A wordlist to encode" )
17
+
16
18
flag .Usage = func () {
17
19
fmt .Printf ("pencode - complex payload encoder v%s\n \n " , pencode .VERSION )
18
20
fmt .Printf ("Usage: %s FUNC1 FUNC2 FUNC3...\n \n " , os .Args [0 ])
19
- fmt .Printf ("%s reads input from stdin, which is typically piped from another process.\n \n " , os .Args [0 ])
21
+ fmt .Printf ("%s reads input from stdin by default, which is typically piped from another process.\n \n " , os .Args [0 ])
22
+ fmt .Printf ("OPTIONS:\n -input reads input from a file, line by line.\n \n " )
20
23
chain .Usage ()
21
24
}
22
25
@@ -34,19 +37,41 @@ func main() {
34
37
os .Exit (1 )
35
38
}
36
39
37
- err := chain .Initialize (os .Args [ 1 :] )
40
+ err := chain .Initialize (flag .Args () )
38
41
if err != nil {
39
42
flag .Usage ()
40
43
fmt .Printf ("\n [!] %s\n " , err )
41
44
os .Exit (1 )
42
45
}
43
46
44
- input := readInput ()
45
- output , err := chain .Encode ([]byte (input ))
46
- if err != nil {
47
- fmt .Printf (" [!] %s\n " , err )
47
+ if * inputWordlist != "" {
48
+ // read the input wordlist and output to stdout
49
+ file , err := os .Open (* inputWordlist )
50
+
51
+ if err != nil {
52
+ fmt .Println (err )
53
+ }
54
+
55
+ defer file .Close ()
56
+
57
+ fs := bufio .NewScanner (file )
58
+ fs .Split (bufio .ScanLines )
59
+
60
+ for fs .Scan () {
61
+ output , err := chain .Encode (fs .Bytes ())
62
+ if err != nil {
63
+ fmt .Printf (" [!] %s\n " , err )
64
+ }
65
+ fmt .Println (string (output ))
66
+ }
67
+ } else {
68
+ input := readInput ()
69
+ output , err := chain .Encode ([]byte (input ))
70
+ if err != nil {
71
+ fmt .Printf (" [!] %s\n " , err )
72
+ }
73
+ fmt .Print (string (output ))
48
74
}
49
- fmt .Print (string (output ))
50
75
}
51
76
52
77
func readInput () string {
0 commit comments