Advertisement
Guest User

Untitled

a guest
Mar 27th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "flag"
  6. "fmt"
  7. "io/ioutil"
  8.  
  9. "os"
  10.  
  11. "log"
  12.  
  13. "strings"
  14.  
  15. crypt "github.com/amoghe/go-crypt"
  16. )
  17.  
  18. var (
  19. passfile string
  20. dictionary string
  21. )
  22.  
  23. func init() {
  24. flag.StringVar(&passfile, "f", "", "Open shadow")
  25. flag.StringVar(&dictionary, "d", "", "Open pass dictionary")
  26. }
  27.  
  28. func main() {
  29. // разбор флагов
  30. flag.Parse()
  31.  
  32. // вывод справки
  33. if passfile == "" || dictionary == "" {
  34. println("Please " + os.Args[0] + " -h")
  35. os.Exit(0)
  36. }
  37.  
  38. // открываем shadow
  39. passFile, err := os.Open(passfile)
  40. if err != nil {
  41. log.Fatalln(err)
  42. }
  43. defer passFile.Close()
  44.  
  45. // парольный словарь
  46. dictFile, err := ioutil.ReadFile(dictionary)
  47. if err != nil {
  48. log.Fatalln(err)
  49. }
  50.  
  51. passDict := strings.Split(string(dictFile), "\n")
  52.  
  53. // построчно
  54. scanner := bufio.NewScanner(passFile)
  55. for scanner.Scan() {
  56. j := scanner.Text()
  57. // строки с логин/пароль
  58. if strings.Contains(j, ":") {
  59. user := strings.Split(j, ":")[0]
  60. cryptPass := strings.Split(j, ":")[1]
  61. fmt.Printf("[*] Cracking Password For: %v\n", user)
  62. for i := 0; i < len(passDict)-1; i++ {
  63. if testPass(cryptPass, passDict[i]) != "" {
  64. println(testPass(cryptPass, passDict[i]))
  65. break
  66. }
  67. }
  68. }
  69. }
  70. }
  71.  
  72. func testPass(cryptPass string, passWord string) string {
  73. saltSearch := strings.LastIndex(cryptPass, "$")
  74. salt := cryptPass[0:saltSearch]
  75.  
  76. cryptWord, err := crypt.Crypt(passWord, salt)
  77. if err != nil {
  78. log.Fatalf("Ошибка SHA: %v", err)
  79. }
  80. // если найден !
  81. if cryptWord == cryptPass {
  82. return "[+] Found PASSWORD: " + passWord
  83. }
  84. return ""
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement