optimisation and cleanup! ✨
This commit is contained in:
parent
c059111465
commit
641ef2d77e
5 changed files with 280 additions and 189 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,3 +1,2 @@
|
||||||
/js
|
.DS_Store
|
||||||
/bin
|
/bin
|
||||||
*.code-workspace
|
|
|
@ -1,7 +1,7 @@
|
||||||
# ipaddrgen 👩💻
|
# ipaddrgen 👩💻
|
||||||
### the funny ip address generator
|
### the funny ip address generator
|
||||||
|
|
||||||
a small cli program written in go that generates random ip addresses and "does things" to them. (often very slowly)
|
a small cli program written in go that generates random ip addresses and "does things" to them.
|
||||||
|
|
||||||
**Q:** *"why would you make this?"*
|
**Q:** *"why would you make this?"*
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ windows: `go build -o ./bin/ipaddrgen.exe ./src`
|
||||||
|
|
||||||
linux/mac: `go build -o ./bin/ipaddrgen ./src`
|
linux/mac: `go build -o ./bin/ipaddrgen ./src`
|
||||||
|
|
||||||
|
*alternatively, just run it with `go run ./src`*
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
enjoy! ❤
|
enjoy! ❤
|
||||||
|
|
8
ipaddrgen.code-workspace
Normal file
8
ipaddrgen.code-workspace
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {}
|
||||||
|
}
|
136
methods.txt
Normal file
136
methods.txt
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
trolling
|
||||||
|
nuking
|
||||||
|
DDoSing
|
||||||
|
colour-coding
|
||||||
|
evaluating
|
||||||
|
pissing on
|
||||||
|
installing apache2 on
|
||||||
|
crypto mining on
|
||||||
|
teleporting to
|
||||||
|
griefing
|
||||||
|
fetishising
|
||||||
|
publically endorsing
|
||||||
|
crowdfunding
|
||||||
|
noscoping
|
||||||
|
load balancing
|
||||||
|
expiring SSL certs on
|
||||||
|
scamming
|
||||||
|
http.POST('dickbutt')ing on
|
||||||
|
torrenting Bee Movie from
|
||||||
|
defragmenting
|
||||||
|
debugging
|
||||||
|
lorem ipsuming
|
||||||
|
telling your mother about
|
||||||
|
randomly generating
|
||||||
|
[meta joke]ing
|
||||||
|
making amazon purchases on
|
||||||
|
minting
|
||||||
|
investing in
|
||||||
|
starting an NFT collection using
|
||||||
|
buying
|
||||||
|
parking
|
||||||
|
truncating
|
||||||
|
deleting
|
||||||
|
disconnecting
|
||||||
|
blacklisting cornhub on
|
||||||
|
reporting
|
||||||
|
surveilling
|
||||||
|
webcrawling
|
||||||
|
scanning traffic from
|
||||||
|
tunelling my smart oven to
|
||||||
|
i forgot
|
||||||
|
applying thermal paste to
|
||||||
|
committing tax fraud with
|
||||||
|
torrenting disney movies on
|
||||||
|
surfing the web on
|
||||||
|
LOL'ing
|
||||||
|
shitposting on
|
||||||
|
wasting time on
|
||||||
|
setting while loop flags for
|
||||||
|
livestreaming
|
||||||
|
introducing the in-laws to
|
||||||
|
404'ing
|
||||||
|
leaking
|
||||||
|
connecting via bluetooth to
|
||||||
|
obtaining the wi-fi password for
|
||||||
|
you were never actually going to visit
|
||||||
|
decrypting
|
||||||
|
encrypting
|
||||||
|
firewalling
|
||||||
|
installing
|
||||||
|
hacking
|
||||||
|
inspecting the elements of
|
||||||
|
tunelling via
|
||||||
|
downloading from
|
||||||
|
uploading to
|
||||||
|
throttling
|
||||||
|
nuclear-powering
|
||||||
|
rat-infesting
|
||||||
|
installing Windows Server 2008 on
|
||||||
|
connecting my raspberry pi to
|
||||||
|
git committing
|
||||||
|
sudo rm -rf /'ing
|
||||||
|
doing your mom on
|
||||||
|
balling
|
||||||
|
pirating on
|
||||||
|
downloading R2R software from
|
||||||
|
water-cooling
|
||||||
|
ejecting
|
||||||
|
formatting
|
||||||
|
formatting system partition on
|
||||||
|
vaccinating
|
||||||
|
medicating
|
||||||
|
injecting
|
||||||
|
pouring milk on
|
||||||
|
microwaving
|
||||||
|
deepfrying
|
||||||
|
randomizing chance on
|
||||||
|
exposing dream's cheating scandal from
|
||||||
|
hosting dream SMP on
|
||||||
|
brapping
|
||||||
|
:)
|
||||||
|
jerking off
|
||||||
|
rendering
|
||||||
|
saving to
|
||||||
|
screenshotting
|
||||||
|
pinging
|
||||||
|
FATAL ERROR: cannot connect to
|
||||||
|
ok bud 👍
|
||||||
|
streaming 'Big Mouth' from
|
||||||
|
casting to
|
||||||
|
synchronising
|
||||||
|
closing all ports on
|
||||||
|
opening all ports on
|
||||||
|
finding your father on
|
||||||
|
SSHing to
|
||||||
|
printscreening
|
||||||
|
sending ominous countdown to
|
||||||
|
sending pizzas to
|
||||||
|
sending doordash to
|
||||||
|
transcoding
|
||||||
|
killing
|
||||||
|
pending
|
||||||
|
buffering
|
||||||
|
loading
|
||||||
|
hard-wiring
|
||||||
|
fucking
|
||||||
|
sending nudes to
|
||||||
|
installing a VPN on
|
||||||
|
stealing nudes from
|
||||||
|
getting critical wirus alerts from
|
||||||
|
:trollface:ing
|
||||||
|
staring at
|
||||||
|
PWNing
|
||||||
|
downloading RAM from
|
||||||
|
hey google connect to
|
||||||
|
stealing
|
||||||
|
generating
|
||||||
|
banning
|
||||||
|
proxying
|
||||||
|
causing a ruckus on
|
||||||
|
grossly offending
|
||||||
|
nullnullnull
|
||||||
|
doing indescribable things to
|
||||||
|
owning
|
||||||
|
sending your minecraft base coordinates to
|
||||||
|
melting
|
318
src/main.go
318
src/main.go
|
@ -1,225 +1,171 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"log"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/TwiN/go-color"
|
"github.com/TwiN/go-color"
|
||||||
)
|
)
|
||||||
|
|
||||||
var methods = []string{
|
// === internal vars (no need to edit these!) ===
|
||||||
"trolling",
|
|
||||||
"nuking",
|
|
||||||
"DDoSing",
|
|
||||||
"colour-coding",
|
|
||||||
"evaluating",
|
|
||||||
"pissing on",
|
|
||||||
"installing apache2 on",
|
|
||||||
"crypto mining on",
|
|
||||||
"teleporting to",
|
|
||||||
"griefing",
|
|
||||||
"fetishising",
|
|
||||||
"publically endorsing",
|
|
||||||
"crowdfunding",
|
|
||||||
"noscoping",
|
|
||||||
"load balancing",
|
|
||||||
"expiring SSL certs on",
|
|
||||||
"scamming",
|
|
||||||
"http.POST('dickbutt')ing on",
|
|
||||||
"torrenting Bee Movie from",
|
|
||||||
"defragmenting",
|
|
||||||
"debugging",
|
|
||||||
"lorem ipsuming",
|
|
||||||
"telling your mother about",
|
|
||||||
"randomly generating",
|
|
||||||
"[meta joke]ing",
|
|
||||||
"making amazon purchases on",
|
|
||||||
"minting",
|
|
||||||
"investing in",
|
|
||||||
"starting an NFT collection using",
|
|
||||||
"buying",
|
|
||||||
"parking",
|
|
||||||
"truncating",
|
|
||||||
"deleting",
|
|
||||||
"disconnecting",
|
|
||||||
"blacklisting \"pornhub.com\" on",
|
|
||||||
"reporting",
|
|
||||||
"surveilling",
|
|
||||||
"webcrawling",
|
|
||||||
"scanning traffic from",
|
|
||||||
"tunelling my smart oven to",
|
|
||||||
"i forgot",
|
|
||||||
"applying thermal paste to",
|
|
||||||
"committing tax fraud with",
|
|
||||||
"torrenting disney movies on",
|
|
||||||
"surfing the web on",
|
|
||||||
"LOL'ing",
|
|
||||||
"shitposting on",
|
|
||||||
"wasting time on",
|
|
||||||
"setting while loop flags for', // ",
|
|
||||||
"livestreaming",
|
|
||||||
"introducing the in-laws to",
|
|
||||||
"404'ing",
|
|
||||||
"leaking",
|
|
||||||
"connecting via bluetooth to",
|
|
||||||
"obtaining the wi-fi password for",
|
|
||||||
"you were never actually going to visit",
|
|
||||||
"decrypting",
|
|
||||||
"encrypting",
|
|
||||||
"firewalling",
|
|
||||||
"installing",
|
|
||||||
"hacking",
|
|
||||||
"inspecting the elements of",
|
|
||||||
"tunelling via",
|
|
||||||
"downloading from",
|
|
||||||
"uploading to",
|
|
||||||
"throttling",
|
|
||||||
"nuclear-powering",
|
|
||||||
"rat-infesting",
|
|
||||||
"installing Windows Server 2008 on",
|
|
||||||
"connecting my raspberry pi to",
|
|
||||||
"git committing",
|
|
||||||
"sudo rm -rf /'ing",
|
|
||||||
"doing your mom on",
|
|
||||||
"balling",
|
|
||||||
"pirating on",
|
|
||||||
"downloading R2R software from",
|
|
||||||
"water-cooling",
|
|
||||||
"ejecting",
|
|
||||||
"formatting",
|
|
||||||
"formatting system partition on",
|
|
||||||
"vaccinating",
|
|
||||||
"medicating",
|
|
||||||
"injecting",
|
|
||||||
"pouring milk on",
|
|
||||||
"microwaving",
|
|
||||||
"deepfrying",
|
|
||||||
"randomizing chance on",
|
|
||||||
"exposing dream's cheating scandal from",
|
|
||||||
"hosting dream SMP on",
|
|
||||||
"brapping",
|
|
||||||
":)",
|
|
||||||
"jerking off",
|
|
||||||
"rendering",
|
|
||||||
"saving to",
|
|
||||||
"screenshotting",
|
|
||||||
"pinging",
|
|
||||||
"FATAL ERROR: cannot connect to",
|
|
||||||
"ok bud 👍",
|
|
||||||
"streaming 'Big Mouth' from",
|
|
||||||
"casting to",
|
|
||||||
"synchronising",
|
|
||||||
"closing all ports on",
|
|
||||||
"finding your father on",
|
|
||||||
"SSHing to",
|
|
||||||
"printscreening",
|
|
||||||
"sending ominous countdown to",
|
|
||||||
"sending pizzas to",
|
|
||||||
"sending doordash to",
|
|
||||||
"transcoding",
|
|
||||||
"killing",
|
|
||||||
"pending",
|
|
||||||
"buffering",
|
|
||||||
"loading",
|
|
||||||
"hard-wiring",
|
|
||||||
"fucking",
|
|
||||||
"sending nudes to",
|
|
||||||
"installing a VPN on",
|
|
||||||
"stealing nudes from",
|
|
||||||
"getting critical wirus alerts from",
|
|
||||||
":trollface:ing",
|
|
||||||
"staring at",
|
|
||||||
"PWNing",
|
|
||||||
"downloading RAM from",
|
|
||||||
"hey google, connect to",
|
|
||||||
"stealing",
|
|
||||||
"generating",
|
|
||||||
"banning",
|
|
||||||
"proxying",
|
|
||||||
"causing a ruckus on",
|
|
||||||
"grossly offending",
|
|
||||||
"nullnullnull",
|
|
||||||
}
|
|
||||||
|
|
||||||
var running = true
|
var running bool
|
||||||
var progress = 0
|
var i_was_IPv6 = false
|
||||||
var wasIPv6 = false
|
var i_was_ported = false
|
||||||
var wasPorted = false
|
var i_last_method string
|
||||||
var lastMethod string
|
var i_methods []string
|
||||||
var method string
|
var methods_file = "methods.txt"
|
||||||
|
|
||||||
func segv4() string {
|
// === timings ===
|
||||||
return strconv.FormatInt(rand.Int63n(255), 10)
|
|
||||||
}
|
// minimum wait for an update (ms).
|
||||||
func segv6() string {
|
var min_wait int64 = 0
|
||||||
return strconv.FormatInt(rand.Int63n(65535), 16)
|
|
||||||
}
|
// maximum wait for an update (ms).
|
||||||
|
var max_wait int64 = 50
|
||||||
|
|
||||||
|
// === chances ===
|
||||||
|
|
||||||
|
// chance (0.0 - 1.0) for the operation to complete each update.
|
||||||
|
var complete_rate = 0.1
|
||||||
|
|
||||||
|
// chance (0.0 - 1.0) for the random IP to be IPv6.
|
||||||
|
var ipv6_chance = 0.05
|
||||||
|
|
||||||
|
// chance (0.0 - 1.0) for the random IP to have a port.
|
||||||
|
var port_chance = 0.05
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
|
// read the methods file!
|
||||||
|
content, err := os.Open(methods_file)
|
||||||
|
if err != nil {
|
||||||
|
// fuck!!!
|
||||||
|
log.Fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// line scanner for the methods file!
|
||||||
|
scanner := bufio.NewScanner(content)
|
||||||
|
for scanner.Scan() {
|
||||||
|
// append new lines to the methods list!
|
||||||
|
i_methods = append(i_methods, scanner.Text())
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := scanner.Err(); err != nil {
|
||||||
|
// fuck!!!
|
||||||
|
log.Fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// close the file afterwards!
|
||||||
|
content.Close()
|
||||||
|
|
||||||
rand.Seed(time.Now().UnixNano())
|
rand.Seed(time.Now().UnixNano())
|
||||||
|
|
||||||
|
var waitdelta = max_wait - min_wait
|
||||||
|
|
||||||
|
running = true
|
||||||
for running {
|
for running {
|
||||||
|
|
||||||
// what are we doing
|
// === create a new IP to do the funny to ===
|
||||||
for method == lastMethod {
|
|
||||||
method = color.Ize(color.White, methods[rand.Intn(len(methods))])
|
|
||||||
}
|
|
||||||
|
|
||||||
// where are we doing it
|
// what are we doing (method)
|
||||||
var address string = color.Ize(color.Yellow, segv4()+"."+segv4()+"."+segv4()+"."+segv4())
|
var method = newMethod()
|
||||||
|
|
||||||
// random chance to be IPv6
|
// where are we doing it (address)
|
||||||
if rand.Intn(100) < 5 && !wasIPv6 {
|
var address string = newAddress(
|
||||||
address = color.Ize(color.Yellow, segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6())
|
ipv6_chance, port_chance,
|
||||||
wasIPv6 = true
|
method != "opening all ports on" &&
|
||||||
} else {
|
method != "closing all ports on")
|
||||||
wasIPv6 = false
|
|
||||||
}
|
|
||||||
|
|
||||||
// random chance to have a port
|
// === print the damn thing! ===
|
||||||
// "what are the chances of this firing with ipv6?" - loudar, seconds before getting an ipv6 with a port
|
|
||||||
if rand.Intn(100) < 5 && !wasPorted && method != "closing all ports on" {
|
|
||||||
address += ":" + color.Ize(color.Cyan, strconv.FormatInt(rand.Int63n(65535), 10))
|
|
||||||
wasPorted = true
|
|
||||||
} else {
|
|
||||||
wasPorted = false
|
|
||||||
}
|
|
||||||
|
|
||||||
// print ip address with method(if applicable)
|
// > [doing something to] 127.0.0.1...
|
||||||
if method != " " {
|
if method != " " {
|
||||||
fmt.Print(method, " ")
|
fmt.Print(method, " ")
|
||||||
}
|
}
|
||||||
fmt.Print(address)
|
fmt.Print(address)
|
||||||
|
|
||||||
// ...........................................[ √ ]
|
// and now, the slow, painful wait begins...
|
||||||
var complete = false
|
var progress = 0
|
||||||
for !complete {
|
for {
|
||||||
if rand.Intn(10) < 9 || progress < 3 {
|
// if complete check fails, and we have over 3 wait periods...
|
||||||
// process.stdout.write('.')
|
// print periods at random intervals, wasting the user's time
|
||||||
|
if rand.Float64() > complete_rate || progress < 3 {
|
||||||
|
// > ..........
|
||||||
fmt.Print(".")
|
fmt.Print(".")
|
||||||
progress++
|
progress++
|
||||||
|
|
||||||
// set complete time
|
// time (ms) after which the progress bar will update
|
||||||
// var waitUntil = new Date().getTime() + 250 + math.round(math.min(2**(random()*12), 5000+random()*1000))
|
var waitUntil = time.Now().UnixMilli() +
|
||||||
var waitUntil = time.Now().UnixMilli() + 250 + int64(math.Min(math.Pow(2, float64(rand.Intn(12))), float64(5000+rand.Intn(1000))))
|
int64(min_wait) +
|
||||||
|
rand.Int63n(waitdelta)
|
||||||
|
|
||||||
// wait until time has arrived
|
// wait until flag time reached
|
||||||
for time.Now().UnixMilli() < waitUntil {
|
for time.Now().UnixMilli() < waitUntil {
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// console.log('['+' ✔️ '.green+']')
|
|
||||||
fmt.Print("[ " + color.Ize(color.Green, "√") + " ]\n")
|
|
||||||
progress = 0
|
|
||||||
complete = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lastMethod = method
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// [ √ ]
|
||||||
|
fmt.Print("[ " + color.Ize(color.Green, "√") + " ]\n")
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newMethod() string {
|
||||||
|
var method string = i_last_method
|
||||||
|
for method == i_last_method {
|
||||||
|
method = color.Ize(color.White, i_methods[rand.Intn(len(i_methods))])
|
||||||
|
}
|
||||||
|
i_last_method = method
|
||||||
|
return method
|
||||||
|
}
|
||||||
|
|
||||||
|
// newAddress returns a randomly-generated IP address, IPv4 or IPv6, sometimes with a port.
|
||||||
|
//
|
||||||
|
// the chance of an IPv6 being returned is determined by ipv6_chance.
|
||||||
|
// the chance of a port being assigned is determined by port_chance and no_ports.
|
||||||
|
func newAddress(ipv6_chance float64, port_chance float64, no_ports bool) string {
|
||||||
|
var addr string
|
||||||
|
|
||||||
|
// random chance to be IPv6 (ffe8::...)
|
||||||
|
if rand.Float64() > ipv6_chance {
|
||||||
|
addr = color.Ize(color.Yellow, segv4()+"."+segv4()+"."+segv4()+"."+segv4())
|
||||||
|
} else {
|
||||||
|
addr = color.Ize(color.Yellow, segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6()+":"+segv6())
|
||||||
|
}
|
||||||
|
|
||||||
|
// random chance to have a port
|
||||||
|
// "what are the chances of this firing with ipv6?"
|
||||||
|
// - loudar, seconds before getting an ipv6 with a port
|
||||||
|
if rand.Float64() < port_chance && !no_ports {
|
||||||
|
addr += ":" + color.Ize(color.Cyan, strconv.FormatInt(rand.Int63n(65535), 10))
|
||||||
|
}
|
||||||
|
|
||||||
|
return addr
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns an IPv4 segment, a random 8-bit value, in decimal.
|
||||||
|
//
|
||||||
|
// i.e. 0, 69, 88, 123, 127, 255...
|
||||||
|
func segv4() string {
|
||||||
|
return strconv.FormatInt(rand.Int63n(255), 10)
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns an IPv6 segment, a random 16-bit value, in hexadecimal.
|
||||||
|
//
|
||||||
|
// i.e. ff80, e396, 4d87, c388, c5f6...
|
||||||
|
func segv6() string {
|
||||||
|
return strconv.FormatInt(rand.Int63n(65535), 16)
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue