这是一次没啥技术含量的分析,只为水一篇博文嘿嘿,这个接口也是这个作者免费开放的。在此感谢作者
最近看到一些网站都有这个网课答案查询软件
于是想着,这么简单的软件,应该不会很复杂吧,然后下载之后进行了抓包(谁让咱不会逆向涅)
打开工具:Wireshark(还真是个强大的软件呢),随便查询一下,然后慢慢找吧
似乎就是这个了
把这个值,转码看下吧
好吧这个是返回值了,应该没错了,然后是这个请求url,继续拿去转码一下
三个值:title,secret,token
然后既然是get请求,直接放到浏览器看下,老铁没毛病。
然后就是分析三个值了,第一个title就是关键词了,第二个secret暂时不知道,第三个token估计是秘钥吧
然后打开那个网站看一下
好吧三个值是什么意思知道了,secret加密文件加密的,token是作者授权的,所以token应该不变就这一个就行了。
既然是加密文件,那要么是在本地文件,亦或者还有接口,然后继续翻抓包软件吧。这次把目标锁定在http协议上。所以加一个过滤器
嗯,又看到一个
继续转码看看
t=后面跟的是之前搜的东西,放到浏览器打开看下
这串值似乎就是之前的加密文件加密后的东西
/topic/getSubject?title=lanol&secret=8942b58ebfe8e11133e7127e47256fe1&token=C00B0C13B9814BEA5360766F4445D623
然后看下这个页面源代码吧。
引用了一个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)
然后ok,生成的secret一模一样
然后就可以查题了
完美
然后我又翻了一下抓包记录
打开到浏览器看了下
感谢这个软件的作者了
最后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)