Advertisement
Guest User

Untitled

a guest
Nov 30th, 2013
1,460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #!/usr/bin/ruby -w
  2.  
  3. passphrase = "hello"
  4.  
  5. def test(phrase)
  6. print phrase, "\t"
  7. system("./bitcoind", "walletpassphrase", phrase, "20")
  8. case $?.exitstatus
  9. when 0
  10. puts "Found it! #{phrase}"
  11. exit 0
  12. when 127
  13. puts "bitcoind not found in current dir"
  14. exit 1
  15. end
  16. end
  17.  
  18. def scramble(passphrase)
  19. characters = " !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
  20. list = []
  21.  
  22. # transpose adjacent chars
  23. (passphrase.length - 1).times do |i|
  24. testphrase = passphrase.dup
  25. testphrase[i] = passphrase[i+1]
  26. testphrase[i+1] = passphrase[i]
  27. list << testphrase
  28. end
  29.  
  30. # delete one char
  31. passphrase.length.times do |i|
  32. testphrase = passphrase.dup
  33. testphrase = testphrase[0,i] + testphrase[(i+1)..-1]
  34. list << testphrase
  35. end
  36.  
  37. # substitutute one char
  38. passphrase.length.times do |i|
  39. characters.chars.each do |c|
  40. testphrase = passphrase.dup
  41. testphrase[i] = c
  42. list << testphrase
  43. end
  44. end
  45.  
  46. # insert one char
  47. (passphrase.length + 1).times do |i|
  48. characters.chars.each do |c|
  49. testphrase = passphrase.dup
  50. testphrase.insert(i, c)
  51. list << testphrase
  52. end
  53. end
  54.  
  55. return list.uniq
  56. end
  57.  
  58. list1 = scramble(passphrase)
  59. list1.each { |i| test i }
  60. list1.each { |i| scramble(i).each { |j| test j }}
  61.  
  62. puts "No luck."
  63. exit 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement