Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.35 KB | None | 0 0
  1. func cksum(bytes []int) int{
  2. a := 0
  3. b := 0
  4. for i := 0; i < len(bytes); i++ {
  5. a = (a + bytes[i]) % 255
  6. b = (b + a) % 255
  7. }
  8. return (b << 8) | a;
  9. }
  10.  
  11. package main
  12.  
  13. import "fmt"
  14. import "bytes"
  15.  
  16. var leftAnswers = []string{}
  17.  
  18. func everyEven(bytes []int) []int {
  19. arr := []int{}
  20. for i := 0; i < len(bytes); i++ {
  21. if i % 2 == 0 {
  22. arr = append(arr, bytes[i])
  23. }
  24. }
  25. return arr
  26. }
  27.  
  28. func toBytes(str string) []int{
  29. arr := []int{}
  30. for _,code := range str {
  31. arr = append(arr, int(code))
  32. }
  33. return arr
  34. }
  35.  
  36. func cksum(bytes []int) int{
  37. a := 0
  38. b := 0
  39. for i := 0; i < len(bytes); i++ {
  40. a = (a + bytes[i]) % 255
  41. b = (b + a) % 255
  42. }
  43. return (b << 8) | a;
  44. }
  45.  
  46. func brute(start int) {
  47. counter := 0
  48. alphabet := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  49. fmt.Println("Started", start)
  50.  
  51. for a := start; a < len(alphabet); a++ {
  52. letter1 := string(alphabet[a]);
  53. for b := 0; b < len(alphabet); b++ {
  54. letter2 := string(alphabet[b]);
  55. for c := 0; c < len(alphabet); c++ {
  56. letter3 := string(alphabet[c]);
  57. for d := 0; d < len(alphabet); d++ {
  58. letter4 := string(alphabet[d]);
  59. for e := 0; e < len(alphabet); e++ {
  60. letter5 := string(alphabet[e]);
  61. for f := 0; f < len(alphabet); f++ {
  62. letter6 := string(alphabet[f]);
  63. counter += 1
  64. var buffer bytes.Buffer
  65. buffer.WriteString(letter1)
  66. buffer.WriteString(letter2)
  67. buffer.WriteString(letter3)
  68. buffer.WriteString(letter4)
  69. buffer.WriteString(letter5)
  70. buffer.WriteString(letter6)
  71. pw := buffer.String()
  72. checksum := cksum(toBytes(pw))
  73. go lhs(pw, checksum)
  74. go rhs(pw, checksum)
  75. if (counter % 1000000 == 0) {
  76. fmt.Println(start, counter, " processed")
  77. }
  78. }
  79. }
  80. }
  81. }
  82. }
  83. }
  84. }
  85.  
  86. func lhs(pw string, checksum int) {
  87. if checksum == 53358 {
  88. leftAnswers = append(leftAnswers, pw)
  89. }
  90. }
  91.  
  92. func rhs(pw string, checksum int) {
  93. if checksum == 61453 {
  94. go findPassword(pw)
  95. }
  96. }
  97.  
  98. func findPassword(pw string) {
  99. for i := 0; i < len(leftAnswers); i++ {
  100. fullpw := leftAnswers[i] + pw
  101. bytes := toBytes(fullpw)
  102. evens := everyEven(bytes)
  103. if cksum(evens) == 0 {
  104. fmt.Println("THE PASSWORD IS:", fullpw)
  105. }
  106. }
  107. }
  108.  
  109. func main() {
  110. for i := 0; i < 52; i++ {
  111. go brute(i)
  112. }
  113. select {}
  114. }
  115.  
  116. for i := 0; i < 52; i++ {
  117. go brute(i)
  118. }
  119.  
  120. counter := 0
  121. alphabet := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  122. fmt.Println("Started", start)
  123.  
  124. for a := start; a < len(alphabet); a++ {
  125. // stuff
  126.  
  127. counter := 0
  128. alphabet := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  129. fmt.Println("Started", start)
  130.  
  131. letter1 = alphabet[start]
  132.  
  133. for b := 0; b < len(alphabet); b++ {
  134. // stuff
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement