分析最近的一个网课答案查询2.0

Lan
Lan
2020-05-06 / 0 评论 / 2,270 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2020年05月06日,已超过1450天没有更新,若内容或图片失效,请留言反馈。

这是一次没啥技术含量的分析,只为水一篇博文嘿嘿,这个接口也是这个作者免费开放的。在此感谢作者

最近看到一些网站都有这个网课答案查询软件

image.png

image.png

于是想着,这么简单的软件,应该不会很复杂吧,然后下载之后进行了抓包(谁让咱不会逆向涅)

打开工具:Wireshark(还真是个强大的软件呢),随便查询一下,然后慢慢找吧

image.png

似乎就是这个了

image.png

把这个值,转码看下吧

image.png

好吧这个是返回值了,应该没错了,然后是这个请求url,继续拿去转码一下

image.png

三个值:title,secret,token

image.png

然后既然是get请求,直接放到浏览器看下,老铁没毛病。

image.png

然后就是分析三个值了,第一个title就是关键词了,第二个secret暂时不知道,第三个token估计是秘钥吧

然后打开那个网站看一下

image.png

好吧三个值是什么意思知道了,secret加密文件加密的,token是作者授权的,所以token应该不变就这一个就行了。

既然是加密文件,那要么是在本地文件,亦或者还有接口,然后继续翻抓包软件吧。这次把目标锁定在http协议上。所以加一个过滤器

image.png

嗯,又看到一个

image.png

继续转码看看

image.png

t=后面跟的是之前搜的东西,放到浏览器打开看下

image.png


这串值似乎就是之前的加密文件加密后的东西

/topic/getSubject?title=lanol&secret=8942b58ebfe8e11133e7127e47256fe1&token=C00B0C13B9814BEA5360766F4445D623

然后看下这个页面源代码吧。

image.png

引用了一个JS,然后就是加密。然后思路:把这个JS文件保存,用python调用。

import execjs

with open('jm.js', 'r') as f:
    js = f.read()
question = 'lanol'
jiami = execjs.compile(js).call('get_tk', f'{question}')
print(jiami)

image.png

然后ok,生成的secret一模一样

然后就可以查题了

image.png

完美

然后我又翻了一下抓包记录

image.png

打开到浏览器看了下

image.png

感谢这个软件的作者了

最后python代码:

import execjs
import requests


def answer(question, jiami):
    url = f'https://www.150s.cn/topic/getSubject?title={question}&secret={jiami}&token=C00B0C13B9814BEA5360766F4445D623'
    html = requests.get(url).json()
    return html


print("欢迎使用Lan网课查题助手")
print("www.lanol.cn")
with open('jm.js', 'r') as f:
    js = f.read()
while True:
    question = input("请输入题干(六个字以上):")
    jiami = execjs.compile(js).call('get_tk', f'{question}')
    result = answer(question, jiami)
    qu = result['title']
    an = result['answer']
    print(f'题目:{qu}
答案:{an}')

js文件:


jm.js

密码:www.lanol.cn|大小:212KB
已经过安全软件检测无毒,请您放心下载。
0

评论 (0)

取消