基本概念
飞翔的红蜻蜓:飞翔的红蜻蜓app是一款由北京知行灵动科技有限公司开发的专门为高校阳光体育开发的手机跑步软件,输入高校阳光体育管理系统的学号和密码就可以开启跑步了,但是一定要注意连接好校内wifi哦,通过这个人员软件可以查看详细的跑步信息和线路,提高学生的锻炼意识。
浙理体育:飞翔的红蜻蜓定制化版本
解决方案
1、Android反编译
Android反编译:https://www.jianshu.com/p/e8e07023d827
2、关键代码
数据上传接口: Api/webserver/uploadRunData
3、抓包分析
Fiddler安卓抓包: https://www.cnblogs.com/wenbodeboke/p/9770771.html
其中Body数据进行gzip压缩无法直接查看
查看二进制数据
导出二进制数据
4、数据解析
package io.shentuzhigang.demo.text;
import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
/**
* @author ShenTuZhiGang
* @version 1.0.0
* @date 2020-10-12 23:01
*/
public class GZIPTest {
public static void main(String[] args) throws IOException {
byte[] arrOutput = {};//导出的数据
System.out.println(new String(uncompress(arrOutput)));
}
public static byte[] compress(String str, String encoding) {
if (str == null || str.length() == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip;
try {
gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes(encoding));
gzip.close();
} catch ( Exception e) {
e.printStackTrace();
}
return out.toByteArray();
}
public static byte[] uncompress(byte[] bytes) {
if (bytes == null || bytes.length == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
try {
GZIPInputStream ungzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = ungzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
}
return out.toByteArray();
}
}
{
"begintime": "",开始时间
"endtime": "",结束时间
"uid": "",未知id
"schoolno": "",学校代码
"distance": "",距离
"speed": "",速度
"studentno": "",学生代码
"atttype": "",类型
"eventno": "",
"location": "",定位
"usetime": ""
}
参考文章