It was the Bitcointalk forum that inspired us to create Bitcointalksearch.org - Bitcointalk is an excellent site that should be the default page for anybody dealing in cryptocurrency, since it is a virtual gold-mine of data. However, our experience and user feedback led us create our site; Bitcointalk's search is slow, and difficult to get the results you need, because you need to log in first to find anything useful - furthermore, there are rate limiters for their search functionality.
The aim of our project is to create a faster website that yields more results and faster without having to create an account and eliminate the need to log in - your personal data, therefore, will never be in jeopardy since we are not asking for any of your data and you don't need to provide them to use our site with all of its capabilities.
We created this website with the sole purpose of users being able to search quickly and efficiently in the field of cryptocurrency so they will have access to the latest and most accurate information and thereby assisting the crypto-community at large.
#!/usr/bin/ruby -w build.rub
arrayNumSymbols = "\#$%&*+-=@_0123".chars.to_a
arraySymbols = "\#$%&*+-=@_".chars.to_a
arrayNumbers= "0123".chars.to_a
counter = 0
NumDiccionario = 1
#--------------------------------------------------------------------------------
min_left = 0
max_left = 1
min_center = 0
max_center = 2
min_right = 0
max_right = 4 # This is not including an extra character that can be added at the end
max_Right_Symbol=3 # within right characters, this constant define the number of consecutive symbols
extra_symbol=1 # value 0 or 1. It defines if an extra character shall be added at the end
#-----------------------------------------------------------------
def storeWord(file,left,center,right,counter)
case NumDiccionario
when 1 then file.puts left + "word1" + right + "\n" #_$word1$$$000+ -> LCR=2-0-6
when 2 then file.puts left + "WORD1" + right + "\n" #_$WORD1$$$000+ -> LCR=2-0-6
when 3 then file.puts left + "Word1" + right + "\n" #_$Word1$$$000+ -> LCR=2-0-6
when 4 then file.puts left + "word1" + center + "word2" + right + "\n" #_word100word2$$$0+ -> LCR=1-2-4
when 5 then file.puts left + "WORD1" + center + "WORD2" + right + "\n" #_WORD100WORD2$$$0+ -> LCR=1-2-4
when 6 then file.puts left + "Word1" + center + "Word2" + right + "\n" #_Word100Word2$$$0+ -> LCR=1-2-4
end
counter = counter + 1
return counter
end
#-----------------------------------------------------------------
left = ""
center = ""
right = ""
print "Building dictionary" + NumDiccionario.to_s + " .\n"
print "Wait...\n"
# --- This code defines the number of characters in the left, center and right of the generated password
case NumDiccionario
when 1 then max_left = 2; max_center = 0; max_right = 6;
when 2 then max_left = 1; max_center = 2; max_right = 4;
when 3 then max_left = 1; max_center = 2; max_right = 4;
when 4 then max_left = 2; max_center = 0; max_right = 5;
end
nameFile = "diccionario" + NumDiccionario.to_s + ".txt"
File.open(nameFile, 'w') do |file|
# ------- Calculation of left characters ------------
(min_left..max_left).each do |length_left|
arraySymbols.repeated_permutation(length_left) do |str_left|
left = str_left.join
# ------- Calculation of center characters -------------
(min_center..max_center).each do |length_center|
arrayNumSymbols.repeated_permutation(length_center) do |str_center|
center = str_center.join
# ------- Calculation of right characters -------------
(min_right..max_right).each do |length_right|
max_symbols = [length_right, max_Right_Symbol].min
(0..max_symbols).each do |num_symbols|
if (num_symbols == 0)
arrayNumbers.repeated_permutation(length_right) do |str_numeros|
right = str_numeros.join
counter = storeWord file,left,center,right,counter
if extra_symbol==1
arraySymbols.each do |extra_caracter|
right = str_numeros.join + extra_caracter
#---- Store this word in the dictionary ----------
counter = storeWord file,left,center,right,counter
end
end
end
else
arraySymbols.each do |symbol|
str_symbols = symbol * num_symbols
max_numeros= length_right-num_symbols
arrayNumbers.repeated_permutation(max_numeros) do |str_numeros|
right = str_numeros.join + str_symbols
counter = storeWord file,left,center,right,counter
right = str_symbols + str_numeros.join
counter = storeWord file,left,center,right,counter
if extra_symbol==1
arraySymbols.each do |extra_caracter|
right = str_symbols + str_numeros.join + extra_caracter
counter = storeWord file,left,center,right,counter
end
end
end
end
end
end
end
end
end
end
end
end
print "Words counter: #{counter}. Maximum estimated time for password recovery #{counter/36000} hours. #{counter/864000} days \n"
File.open('lastLine.txt', 'w') do |file2|
file2.puts "0"
end
#!/usr/bin/ruby -w search.rub
num_line = 0
NumDiccionario = 1
#--------------------------------------------------------------------------------
#-----------------------------------------------------------------
def checkPassword (pass)
print pass, "\t"
system("bitcoind", "walletpassphrase", pass, "20")
case $?.exitstatus
when 0
puts "You found it! #{pass}"
File.open('password.txt', 'w') do |file|
file.puts phrase + "\n"
end
exit 0
end
#-----------------------------------------------------------------
str_num_line = "0"
File.open('lastLine.txt', 'r') do |file2|
str_num_line = file2.gets
end
if (str_num_line.to_i > 0 )
print "Last searching stopped at line " + str_num_line + "\n"
STDOUT.flush
print "Continue from here? y/n:"
resp = gets.chomp
if (resp == "y")
num_line =str_num_line.to_i
end
end
print "Starting at line " + num_line.to_s + "... Good luck!!\n"
fileName = "Dictionary" + NumDiccionario.to_s + ".txt"
File.open(fileName, 'r') do |file|
print "Shifting index..."
(0..num_line).each do |i|
line = file.gets
end
print "Searching..."
while line = file.gets
print "Checking line:" + num_line.to_s + ": " + line
str = line.chomp
checkPassword str
num_line = num_line + 1
if (num_line % 100)
File.open('lastLine.txt', 'w') do |file2|
file2.puts num_line.to_s + "\n"
end
end
end
end