Advertisement
Guest User

Untitled

a guest
Jun 30th, 2016
587
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.43 KB | None | 0 0
  1. #!/usr/bin/ruby -w
  2.  
  3. passphrase = "This is my passphrase))"
  4.  
  5. def test(phrase)
  6.   print phrase, "\t"
  7.   system("dashd", "-wallet=wallet_to_recover.dat", "walletpassphrase", phrase, "20")
  8.   case $?.exitstatus
  9.   when 0
  10.     puts "Found it!  #{phrase}"
  11.     exit 0
  12.   when 127
  13.     puts "dashd 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