吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4359|回复: 14
收起左侧

[Python 转载] 记一次设计自动签到脚本的探索过程

  [复制链接]
jjjzw 发表于 2021-3-23 19:51
本帖最后由 jjjzw 于 2021-3-23 21:14 编辑

去年疫情爆发后,学校要求每日上报位置、体温等信息,虽然填一下也不麻烦,但是经常忘记被辅导员点名,这次借着学python爬虫的机会写一个自动上报的程序

1、进行一次正常的填报,并抓包:
6651616496392_.pic_hd.jpg

2、直奔最关心的post包,看看里面有哪些东西:
6671616496759_.pic_hd.jpg

重要的东西有两个:带有身份信息的Cookie上传位置信息的字符串


3、如果是自己使用,直接保留原有的Cookie即可,如果要其他的人使用,就要搞清楚Cookie里面真正有用的数据是哪些
在加载页面时发现了一个get-info的包:
6681616497329_.pic.jpg
6691616497427_.pic_hd.jpg
注重这个包,是因为它不仅带有一样的Cookie,而且在返回的json中携带了身份信息和上次填报的地理位置
用python进行测试:
[Python] 纯文本查看 复制代码
import requests
from bs4 import BeautifulSoup
# 取消https的warnings
requests.packages.urllib3.disable_warnings()

# 照搬抓到的包的headers
headers = {
    "Host": "zlapp.*****.edu.cn",
    "Accept": "application/json, text/plain, */*",
    "Connection": "keep-alive",
    "Accept-Language": "zh-cn",
    "Accept-Encoding": "br, gzip, deflate",
    # 修改Cookie测试
     "Cookie": "eai-sess=2k34n5bbf8di0s9lm2u3g4vs8eu2i40d",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) "
                  "Version/11.1.2 Safari/605.1.15",
    "Referer": "https://zlapp.edu.cn/site/ncov/Daily",
    "X-Requested-With": "XMLHttpRequest"
}
url = "https://zlapp*****.cn/ncov/wap/get-info"
r = requests.get(url, headers=headers, verify=False)
b = BeautifulSoup(r.content, "lxml")
print(b)

经过测试,Cookie只需要eai-sess就可以获取个人信息
(小白对于Cookie的生成不太了解,不知道是不是通过md5加密的数据)

4、伪造上传数据
选取一段:
[Python] 纯文本查看 复制代码
address=%E4%B8%8A%E6%B5%B7%E5%B8%82%E6%9D%A8%E6%B5%A6%E5%8C%BA%E4%BA%94%E8%A7%92%E5%9C%BA%E8%A1%97%E9%81%93%E6%AD%A6%E5%B7%9D%E8%B7%AF78%E5%BC%8448%E5%8F%B7%E5%A4%8D%E6%97%A6%E5%A4%A7%E5%AD%A6%E9%82%AF%E9%83%B8%E6%A0%A1%E5%8C%BA

发现将中文进行了urlencode编码
了解了编码方式,可以继续分析数据。解码后,发现字符串携带的信息很少,很容易伪造!
[Python] 纯文本查看 复制代码
# 很眼熟的时间戳,可以使int(time.time() * 1000)获得
now_time=1616169823968

# 一卡通号码
number=183****

# 名字,可以使用quote函数进行编码
realname=***

# 日期,使用time.strftime("%Y%m%d", time.localtime())可以获得
date=20210319

还有三个未知的数据:iduidcreated
想起来在观察get-info包的时候见过这几个值
于是想出了解决办法:请求get-info,并通过正则提取这些变量:
[Python] 纯文本查看 复制代码
headers1 = {
        "Host": "zlapp.edu.cn",
        "Accept": "application/json, text/plain, */*",
        "Connection": "keep-alive",
        "Accept-Language": "zh-cn",
        "Accept-Encoding": "br, gzip, deflate",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) "
                      "Version/11.1.2 Safari/605.1.15",
        "Referer": "https://zlapp.edu.cn/site/ncov/Daily",
        "X-Requested-With": "XMLHttpRequest"
    }
headers1.update({"Cookie": cookie})
url1 = "https://zlapp.edu.cn/ncov/wap/get-info"
info1 = requests.get(url1, headers=headers1, verify=False)
b1 = str(BeautifulSoup(info1.content, "lxml"))
created_raw = re.search('"created":[0-9]{10}', b1).group(0)
created = str(created_raw)[10:]
uid_raw = re.search('"uid":"[0-9]{5}"', b1).group(0)
uid = str(uid_raw)[7:-1]
id_raw = re.search('"id":[0-9]{8}', b1).group(0)
id_ = str(id_raw)[5:]
number_raw = re.search('"number":"[0-9]{11}"', b1).group(0)
number = str(number_raw)[10:-1]
realname_raw = re.search('"realname":"[\u4e00-\u9fa5]{3}"', b1).group(0)
realname = str(realname_raw)[12:-1]
name = quote(realname)


5、组合字符串并post:(理论上将地理位置改成奇怪的名字也没问题,但是不敢···)
[Python] 纯文本查看 复制代码
# data="now_time="+now_time+"&``````"+``````
post_ = requests.post(url, headers=headers, data=data)
b = BeautifulSoup(post_.content, "lxml")
print(b)


6、得到返回结果:{"e":0,"m":"操作成功","d":{}}
成功完成上报!

7、总结
一个完整的上报过程还有很多可以探究、学习的知识点,比如Cookie的生成规则、json_text的处理方式等
但由于我水平太差,还无法作出解析

Tips:由于不了解学校的信息安全条例,这篇帖子隐藏了与学校有关的完整url,也无法给出完整的python代码,但不影响阅读,希望大佬们理解!
其他网站、app类似签到等操作也可以用这种思路来分析

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
an335nan783 + 1 + 1 我很赞同!
Mr.mao + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| jjjzw 发表于 2021-3-23 21:09
Pandolar 发表于 2021-3-23 21:02
人在牢里,刚下jing车。
劝楼主抱着练习技术的目的去看待健康系统,千万别盈利和大规模扩散呀

hhhh谢谢提醒
 楼主| jjjzw 发表于 2021-3-23 22:44
不负韶华 发表于 2021-3-23 21:49
headers挺多数据没用

是有很多没用,我是习惯了把整个headers写上去
Cacarot 发表于 2021-3-23 20:02
沉心云 发表于 2021-3-23 20:19
楼主是钉钉吗?
Pandolar 发表于 2021-3-23 21:02
人在牢里,刚下jing车。
劝楼主抱着练习技术的目的去看待健康系统,千万别盈利和大规模扩散呀
VICK168 发表于 2021-3-23 21:15
真不错,注意别让辅导员和学校知道,以免吃警告或处分,
飞飞小飞侠 发表于 2021-3-23 21:30
找了几天这东西了,post包已经拿到了就是不知道下一步,现在知道了,谢谢楼主
不负韶华 发表于 2021-3-23 21:49
headers挺多数据没用
spawn_fly 发表于 2021-3-24 14:54
思路不错,学习 python 还是有用的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-11 15:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表