Skip to content

Commit 4dd1882

Browse files
Merge branch 'main' of github.com:vulncheck-oss/go-exploit
2 parents ea08253 + b810f5e commit 4dd1882

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
golang.org/x/crypto v0.43.0
1414
golang.org/x/net v0.46.0
1515
golang.org/x/text v0.30.0
16-
modernc.org/sqlite v1.39.1
16+
modernc.org/sqlite v1.40.0
1717
)
1818

1919
require (

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=
146146
modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=
147147
modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=
148148
modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=
149-
modernc.org/sqlite v1.39.1 h1:H+/wGFzuSCIEVCvXYVHX5RQglwhMOvtHSv+VtidL2r4=
150-
modernc.org/sqlite v1.39.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE=
149+
modernc.org/sqlite v1.40.0 h1:bNWEDlYhNPAUdUdBzjAvn8icAs/2gaKlj4vM+tQ6KdQ=
150+
modernc.org/sqlite v1.40.0/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE=
151151
modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=
152152
modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=
153153
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=

random/random.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,44 @@ func RandIPv4() net.IP {
152152
)
153153
}
154154

155+
// RandIPv4Private Generates a random private IPv4 address.
156+
func RandIPv4Private() net.IP {
157+
n, _ := rand.Int(rand.Reader, big.NewInt(3))
158+
switch n.Int64() {
159+
case 0:
160+
return net.IPv4(
161+
10,
162+
byte(RandIntRange(1, 256)),
163+
byte(RandIntRange(1, 256)),
164+
byte(RandIntRange(1, 256)),
165+
)
166+
case 1:
167+
return net.IPv4(
168+
172,
169+
byte(RandIntRange(16, 32)),
170+
byte(RandIntRange(1, 256)),
171+
byte(RandIntRange(1, 256)),
172+
)
173+
default:
174+
return net.IPv4(
175+
192,
176+
168,
177+
byte(RandIntRange(1, 256)),
178+
byte(RandIntRange(1, 256)),
179+
)
180+
}
181+
}
182+
183+
// RandomIPv4Loopback generates IPv4 Loopback address
184+
func RandIPv4Loopback() net.IP {
185+
return net.IPv4(
186+
127,
187+
byte(RandIntRange(1, 256)),
188+
byte(RandIntRange(1, 256)),
189+
byte(RandIntRange(1, 256)),
190+
)
191+
}
192+
155193
// RandIPv6 generates a random IPv6 address.
156194
func RandIPv6() net.IP {
157195
ip := make(net.IP, net.IPv6len)

random/random_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,3 +192,43 @@ func TestRandIPv6(t *testing.T) {
192192
}
193193
}
194194
}
195+
196+
func TestRandIPv4Private(t *testing.T) {
197+
for range 100 {
198+
r := RandIPv4Private()
199+
parsed := net.ParseIP(r.String())
200+
if parsed == nil {
201+
t.Error("Generated IP is nil: " + r.String())
202+
}
203+
if parsed.To4() == nil {
204+
t.Error("Generated IP is not a valid IPv4 address: " + r.String())
205+
}
206+
207+
// Check if the IP is private
208+
isPrivate := r.IsPrivate()
209+
210+
if !isPrivate {
211+
t.Error("Generated IP is not in a private range: " + r.String())
212+
}
213+
}
214+
}
215+
216+
func TestRandIPv4Loopback(t *testing.T) {
217+
for range 5 {
218+
r := RandIPv4Loopback()
219+
parsed := net.ParseIP(r.String())
220+
if parsed == nil {
221+
t.Error("Generated IP is nil: " + r.String())
222+
}
223+
if parsed.To4() == nil {
224+
t.Error("Generated IP is not a valid IPv4 address: " + r.String())
225+
}
226+
227+
// Check if the IP is loopback
228+
isLoopback := r.IsLoopback()
229+
230+
if !isLoopback {
231+
t.Error("Generated IP is not the expected loopback address:" + r.String())
232+
}
233+
}
234+
}

0 commit comments

Comments
 (0)