afl-transmit/main.go

64 lines
1.4 KiB
Go
Raw Normal View History

2020-06-19 13:31:20 +00:00
package main
import (
"flag"
"fmt"
"github.com/maride/afl-transmit/logistic"
2020-06-19 13:31:20 +00:00
"github.com/maride/afl-transmit/net"
2021-04-20 08:28:03 +00:00
"github.com/maride/afl-transmit/stats"
2020-06-19 13:31:20 +00:00
"github.com/maride/afl-transmit/watchdog"
"log"
)
var (
outputDirectory string
2021-04-20 08:36:04 +00:00
printStats bool
2020-06-19 13:31:20 +00:00
)
func main() {
// Register flags
watchdog.RegisterWatchdogFlags()
net.RegisterSenderFlags()
net.RegisterListenFlags()
2021-04-23 14:17:44 +00:00
net.RegisterCryptFlags()
logistic.RegisterPackerFlags()
2020-06-19 13:31:20 +00:00
RegisterGlobalFlags()
flag.Parse()
// Check if we have the only required argument present - outputDirectory
if outputDirectory == "" {
fmt.Println("Please specify fuzzer-directory. See help (--help) for details.")
return
}
// Read peers file
net.ReadPeers()
2021-04-23 14:17:44 +00:00
// Initialize crypto if desired
cryptErr := net.InitCrypt()
if cryptErr != nil {
fmt.Printf("Failed to initialize crypt function: %s", cryptErr)
return
}
2020-06-19 13:31:20 +00:00
// Start watchdog for local afl instances
go watchdog.WatchFuzzers(outputDirectory)
2021-04-20 08:28:03 +00:00
// Start stat printer
2021-04-20 08:36:04 +00:00
if printStats {
go stats.PrintStats()
}
2021-04-20 08:28:03 +00:00
2020-06-19 13:31:20 +00:00
// Listen for incoming connections
listenErr := net.Listen(outputDirectory)
if listenErr != nil {
log.Println(listenErr)
}
}
// Registers flags which are required by multiple modules and need to be handled here
func RegisterGlobalFlags() {
flag.StringVar(&outputDirectory, "fuzzer-directory", "", "The output directory of the fuzzer(s)")
2021-04-20 08:36:04 +00:00
flag.BoolVar(&printStats, "print-stats", true, "Print traffic statistics every few seconds")
2020-06-19 13:31:20 +00:00
}