对闽江软高成绩查询系统的查询接口进行突破(android)

这次我们的目标是闽江软高成绩查询的安卓客户端,先看下下载的截图

b543c86102479a83af6760acfd3d1829.png - 大小: 63.71 KB - 尺寸: 882 x 519 - 点击打开新窗口浏览全图
好,在开始前我们先说下这个安卓客户端有啥功能。

这个客户端可以查课程表,可以查成绩,但是在查成绩的时候是这样的,先输入学号,后台根据学号去查这个学号下面的课程,再选择课程,然后就可以查了。卧槽!!!啊!!可以随便查任何一个人的成绩啊,不需要身份证号码的啊。于是博主邪恶的一笑,眼前飘过几个大字:全校成绩随便查!

呵 呵,博主最喜欢看学霸秀成绩,妈妈再也不用担心我看不到学霸秀成绩了。当然,这个软件还有个神奇的功能,那就是充满了各种广告啊卧槽!本来就很烂了,这是 要让他烂成屎的节奏么?咱们先不评论软件的好坏,咱(xue)们(xiao)的原则是能用就行,管什么UI,管什么安全啊。

OK,扯了半天咱们来看下图吧。

5e1138d87c4d4c387e2454a3adc457aa.png - 大小: 170.96 KB - 尺寸: 1141 x 991 - 点击打开新窗口浏览全图
UI布局很简(zha)洁(zha)啊有木有,广告也很实(e)用(xin)啊有木有。这简直是一个完(ruo)美(bao)的安卓应用啊有木有啊卧槽。

好的,博主现在进行反编译,需要用到软件dex2jar,这个软件是将apk中的classes.dex转化成jar文件,好的,我们来测试下。

首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.15文件夹。
在命令行下定位到dex2jar.bat所在目录,运行 dex2jar.bat    classes.dex,生成 classes_dex2jar.jar

然后下载jdjui这个软件,将jar反编译成java源码。ok,咱们看个截图。控制台生成jar文件成功

a33ac16c944c59b1c395cf18e974454d.png - 大小: 21.22 KB - 尺寸: 668 x 381 - 点击打开新窗口浏览全图
反编译jar文件的界面
d50d9ad23ea4afa2c49ea833af9488f3.png - 大小: 9.23 KB - 尺寸: 600 x 400 - 点击打开新窗口浏览全图
呵呵,看到了youmi,著名的安卓广告植入商。

OK, 咱们来看下源码里面是怎么请求的,在源代码里面看到了soap,说明客户端是用的webservice提供的统一接口。

0d64af030debea70dc135b504e076a7f.png - 大小: 48.94 KB - 尺寸: 673 x 655 - 点击打开新窗口浏览全图
OK,这样 就简单了,咱们找到webservice就好了。继续看源码,博主很容易就找到了webservice的地址
d66149449ab0349b357497de37181f92.png - 大小: 45.19 KB - 尺寸: 1040 x 507 - 点击打开新窗口浏览全图
,ok,找到了地址咱 们去看看吧
38a4385c3958c32740a1fce4e450103a.png - 大小: 26.92 KB - 尺寸: 517 x 820 - 点击打开新窗口浏览全图
嗯,提供了很多的接口,但是这我们需要只是查询成绩,所以只看成绩查询的。在这博主还发现一个神奇的事情,就是这个 webservice根本不需要验证身份,任何请求都可以的,what the fuck ! 上面说了查询成绩先输学号查课程,然后查成绩,先看查课程的接口
0ebeb86571ef13e4c0671347236ec0fb.png - 大小: 40.29 KB - 尺寸: 1054 x 610 - 点击打开新窗口浏览全图
只需要传入stdID学号就可以了,成绩查询需要同时传入学号和课 程
23ddf596e967018aed2915b9d3258e4c.png - 大小: 38.16 KB - 尺寸: 1009 x 619 - 点击打开新窗口浏览全图
ok,既然已经知道了接口地址和参数,咱们就用php的soap来模拟一下吧。php的soap比较简单,我这里使用的是 nusoap-0.9.5这个库,贴上代码

<?php
	require_once('./nusoap-0.9.5/lib/nusoap.php');
	$client = new nusoap_client('http://112.111.44.52:819/service.asmx?WSDL', true);
	$err = $client->getError();
	if ($err) {  echo 'error1'; }
	$param_sid = array('stuID' => $_POST['sid']);
	$client->soap_defencoding = 'UTF-8';
	$client->decode_utf8 = false;


	$coursestr = $client->call('getCourse',$param_sid);
	$courseArr = split(',', $coursestr['getCourseResult']);
	$scoreArr;
	if ($client->fault) {
		echo 'error2';
	} else {
		$err = $client->getError();
		if ($err) {
			echo 'error3';
		} else {
			$courseLength = count($courseArr);
			for($i=0;$i<$courseLength;$i++){
				$tmpStr = array('stuID' => $_POST['sid'],'Course' => $courseArr[$i]);
				$thisRes = $client->call('getScore',$tmpStr);
				$scoreArr[$i] = '{"course":"'. urlencode($courseArr[$i]).'","score":"'.$thisRes['getScoreResult'].'"}';
			}
			echo(urldecode(json_encode($scoreArr)));
		}
	}
?>

这段代码就是模拟一个soap的请求,发送学号查询结果。咱们来看下查询结果,我这做了个简单的查询页面。

dc65ba93b4592347d57f5081fce37e5f.png - 大小: 34.43 KB - 尺寸: 449 x 628 - 点击打开新窗口浏览全图
只需要输入学号就 可以查出这个学号下面对应所有课程的成绩,只是速度有点慢,因为我需要查询遍历所有的课程去请求数据,也就是说每次查询都要发起20个左右的请求,所以会 有些慢。还有,不知道学校的服务器开的最大请求数多少,我连续查个几次服务器就挂了,太渣了。本来是想做个全校成绩的遍历统计分析的,照这个样子服务器分 分钟挂掉的意思,做了估计也用不了。呵呵。

当然,如果仔细观察成绩会发现,有些课程并没有查出成绩,换成web的查询就可以查询出来,个人推测可能是使用的不同的数据库,数据没有进行很好的同步导致的。不过作为参考还是不错的。

好了,对闽江软高成绩查询安卓客户端的分析就到这,只需要知道学号就可以分分钟查成绩,当然,查全校的成绩也不是难事。如果将这个页面修改成手机页面,那将会更加便捷。

本文链接:https://www.92ez.com/?action=show&id=9
!!! 转载请先联系non3gov@gmail.com授权并在显著位置注明作者和原文链接 !!! 小黑屋
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。

5b22329aab99775493efb1669b6199b2.png

5b22329aab99775493efb1669b6199b2.png

大小: 34.03 KB
尺寸: 584 x 454
浏览: 40 次
点击打开新窗口浏览全图

上一篇: 对闽江软高成绩查询系统的查询接口进行突破(WEB分析)
下一篇: 使用NFC Module For Arduino V1.0在linux下读取公交卡信息

访客评论
#1
回复 Doctor 2013-10-27, 1:14 PM
我不是妹子,我看上了。
发表评论

评论内容 (必填):