Skip to content

Commit 214eb11

Browse files
committed
improve tests about obfuscate, main.go: fix bug in generateClass().
1 parent d1f128d commit 214eb11

File tree

4 files changed

+37
-13
lines changed

4 files changed

+37
-13
lines changed

cmd/main.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,9 @@ func generateClass() {
142142
generateExecute()
143143
case "reverse_tcp":
144144
generateReverseTCP()
145-
case "":
146-
fmt.Println("supported Java class template: execute, reverse_tcp")
147-
return
148145
default:
146+
fmt.Println("supported Java class template: execute, reverse_tcp")
147+
fmt.Println()
149148
log.Fatalf("[error] unknown Java class template name: \"%s\"\n", genClass)
150149
}
151150
fmt.Println("Save generated Java class file to the path:", genOut)
@@ -163,7 +162,7 @@ func generateExecute() {
163162

164163
if command == "" {
165164
args.PrintDefaults()
166-
return
165+
os.Exit(2)
167166
}
168167
if gnClass == "" {
169168
gnClass = "Execute"
@@ -194,11 +193,11 @@ func generateReverseTCP() {
194193

195194
if host == "" {
196195
args.PrintDefaults()
197-
return
196+
os.Exit(2)
198197
}
199198
if port > 65535 {
200199
fmt.Println("[error]", "invalid port:", port)
201-
return
200+
os.Exit(2)
202201
}
203202
if gnClass == "" {
204203
gnClass = "ReverseTCP"

obfuscate.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ func Obfuscate(raw string, token bool) (string, string) {
102102

103103
// generate useless data before section
104104
obfuscated.WriteString("${")
105-
n := 1 + rand.Intn(3) // 1-3 // #nosec
106-
for i := 0; i < n; i++ {
105+
round := 1 + rand.Intn(3) // 1-3 // #nosec
106+
for i := 0; i < round; i++ {
107107
front := randString(2 + rand.Intn(5)) // #nosec
108108
end := randString(2 + rand.Intn(5)) // #nosec
109109

@@ -122,7 +122,7 @@ func Obfuscate(raw string, token bool) (string, string) {
122122
remaining -= size
123123
index += size
124124
lastObfuscated = true
125-
// lastCharacter must be "}"
125+
lastCharacter = '}' // lastCharacter must be "}"
126126
}
127127

128128
return obfuscated.String(), rwt

obfuscate_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,26 +56,28 @@ func TestObfuscate(t *testing.T) {
5656

5757
t.Run("fuzz", func(t *testing.T) {
5858
t.Run("with token", func(t *testing.T) {
59-
for i := 0; i < 100000; i++ {
59+
for i := 0; i < 10000; i++ {
6060
raw := "${" + randString(64) + "}"
6161
obfuscated, rwt := Obfuscate(raw, true)
6262
require.NotZero(t, rwt)
6363
require.NotZero(t, obfuscated)
6464

6565
// check exist bug "$" with "${"
6666
require.NotContains(t, obfuscated, "$${")
67+
require.NotContains(t, obfuscated, " ")
6768
}
6869
})
6970

7071
t.Run("without token", func(t *testing.T) {
71-
for i := 0; i < 100000; i++ {
72+
for i := 0; i < 10000; i++ {
7273
raw := "${" + randString(64) + "}"
7374
obfuscated, rwt := Obfuscate(raw, false)
7475
require.Zero(t, rwt)
7576
require.NotZero(t, obfuscated)
7677

7778
// check exist bug "$" with "${"
7879
require.NotContains(t, obfuscated, "$${")
80+
require.NotContains(t, obfuscated, " ")
7981
}
8082
})
8183
})
@@ -127,24 +129,26 @@ func TestObfuscateWithDollar(t *testing.T) {
127129

128130
t.Run("fuzz", func(t *testing.T) {
129131
t.Run("with token", func(t *testing.T) {
130-
for i := 0; i < 100000; i++ {
132+
for i := 0; i < 10000; i++ {
131133
raw := "${" + randString(64) + "}"
132134
obfuscated, rwt := ObfuscateWithDollar(raw, true)
133135
require.NotZero(t, rwt)
134136
require.NotZero(t, obfuscated)
135137

136138
require.Equal(t, 1, strings.Count(obfuscated, "$${"))
139+
require.NotContains(t, obfuscated, " ")
137140
}
138141
})
139142

140143
t.Run("without token", func(t *testing.T) {
141-
for i := 0; i < 100000; i++ {
144+
for i := 0; i < 10000; i++ {
142145
raw := "${" + randString(64) + "}"
143146
obfuscated, rwt := ObfuscateWithDollar(raw, false)
144147
require.Zero(t, rwt)
145148
require.NotZero(t, obfuscated)
146149

147150
require.NotContains(t, obfuscated, "$${")
151+
require.NotContains(t, obfuscated, " ")
148152
}
149153
})
150154
})

rand_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,22 @@
11
package log4shell
2+
3+
import (
4+
"strings"
5+
"testing"
6+
7+
"github.com/stretchr/testify/require"
8+
)
9+
10+
func TestRandString(t *testing.T) {
11+
for i := 0; i < 10000; i++ {
12+
str := randString(64)
13+
require.False(t, strings.Contains(str, " "))
14+
}
15+
}
16+
17+
func TestRandSecret(t *testing.T) {
18+
for i := 0; i < 10000; i++ {
19+
str := randSecret()
20+
require.False(t, strings.Contains(str, " "))
21+
}
22+
}

0 commit comments

Comments
 (0)