苏大Mooc系统的刷课脚本的制作(3/3)
系统 脚本 制作 MOOC
2023-06-13 09:15:04 时间
最后决定用最简单的python脚本进行实现。具体过程部分析了,不过值得一提的是,在登陆获取用户的cookie的时候,他也发送了一个挺长的“随机”串,研究了半天才发现他是使用了md5摘要算法,将密码和密码的摘要一同发给了服务器。。。。。。
以下是源码:
#cheat.py
import urllib,urllib2,cookielib,md5,re,json,sys
def login(name,pwd):
url_login="http://ids1.suda.edu.cn/amserver/UI/Login?goto=http://myauth.suda.edu.cn/default.aspx?app=kczx"
m=md5.new()
m.update(pwd)
pwd_md5=m.hexdigest()
cj=cookielib.CookieJar()
post_data=urllib.urlencode({
'IDButton':'Submit',
'encoded':'false',
'goto':'',
'gx_charset':'UTF-8',
'IDToken0':'',
'IDToken1':name,
'IDToken9':pwd,
'IDToken2':pwd_md5,
})
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('User-agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36))')]
urllib2.install_opener(opener)
req=urllib2.Request(url_login,post_data)
urllib2.urlopen(req)
return opener
def watch(PlainId,fPartName,fPartId,fSecond,fVideoSecond,fVideoFileId,opener):
if fVideoFileId==u'0':
return
url='http://kczx.suda.edu.cn/G2S/Learning/StudentLearning.ashx?action=GetG2SSetStageLearnPartStudent&fPlanID='+PlainId+'&fPartID='+fPartId+'&fSecond='+fVideoSecond
urllib2.install_opener(opener)
urllib2.urlopen(url)
print fPartName+'has been watched'
return
if __name__=='__main__':
#url_lecture='http://kczx.suda.edu.cn/G2S/Learning/Learning.htm?Part=&Plan=34&type=2'
if len(sys.argv)!=4:
print 'Please enter <number> <pwd> <url>'
sys.exit();
name=sys.argv[1]
pwd=sys.argv[2]
url_lecture=sys.argv[3]
opener=login(name,pwd)
urllib2.install_opener(opener)
PlainId=re.findall(r'(?<=Plan=).*?(?=&)',url_lecture)[0]
url_ajax='http://kczx.suda.edu.cn/G2S/Learning/StudentLearning.ashx?action=GetG2SStageLearnGetChapter&fPlanID='+PlainId
ajax_text=urllib2.urlopen(url_ajax).read()
ajax_text=ajax_text.replace('RowCount','"RowCount"')
ajax_text=ajax_text.replace('Rows','"Rows"')
s=json.loads(ajax_text)
fPartName=[]
fPartId=[]
fSecond=[]
fVideoFileId=[]
fVideoSecond=[]
for k in s['Rows']:
fPartName.append(k['fPartName'])
fPartId.append(k['fPartID'])
fSecond.append(k['fSecond'])
fVideoSecond.append(k['fvideoSecond'])
fVideoFileId.append(k['fVideoFileID'])
for k in range(len(fPartName)):
watch(PlainId,fPartName[k],fPartId[k],fSecond[k],fVideoSecond[k],fVideoFileId[k],opener)
当然,为了省事,没有任何的容错处理和用户界面。。。使用时,输入:
myths@myths-X450LD:~$ python cheat.py <学号> <密码> <课程网址>
而且在Linux下,课程网址中的“&”符号需要转义为"\&"才能用。。。。。。
基本就是这些了,按理说如果管理员有心,是可以查出我们提交的数据其实是有问题的,不过目测应该是没人看的吧~~~
相关文章
- 在 Windows 系统下常用的 bat 脚本分享
- 推荐系统提纲笔记
- 苏大Mooc系统的刷课脚本的制作(2/3)
- RHEL7.9系统下一键脚本安装Oracle 11gR2单机版本
- rollup 命令行报错“无法加载... rollup.ps1,因为在此系统上禁止运行脚本。”
- Linux系统设置开机自动运行脚本的方法实例
- 使用Yum命令管理Linux系统(linux的yum命令)
- 攻击Linux系统遭黑客攻击:勒索病毒袭击!(linux系统勒索病毒)
- Linux W 命令:查看系统用户的登录状态(linuxw命令)
- 安装Linux系统:LEX快速上手(lexlinux安装)
- 探索Linux系统源代码之旅(linux源代码目录)
- 探索Linux系统在手机上的新可能(linux系统手机)
- Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息
- Linux设备总线驱动:深入理解常用引脚,构建高效系统(linux设备总线驱动)
- Linux系统快速反弹提权大法(linux反弹提权脚本)
- Linux系统加固脚本:保障系统安全的必备措施(linux加固脚本)
- Linux脚本命令大全:帮助您轻松掌握Linux系统中的核心命令和脚本编程技巧。
- 脚本Linux系统中执行BAT脚本的简易方法(linux 执行 bat)
- linux系统使用python监测系统负载脚本分享
- ubuntu系统中nginx启动脚本