在上一篇文章提到12月份会有一件有意思的事情发生,今天就来揭示是什么。
事情的起因
我的室友因为洗脚接热水,不小心把一卡通(我学校银行卡、饭卡、澡卡通用一张)丢失,在我们学院群里发布了丢失信息和寻找后无果。
本报以放弃的念头,但室友打开完美校园查看消费记录,竟然发现卡被盗刷了,是在洗澡的地方,但具体楼层我们不清楚,因为我们每层楼都有好几间洗澡隔间。
因为考试,所以大家心里都憋着一股气,所以大家就都想抓住盗刷贼,于是我们就没去挂失,准备抓到他,给他一个教训。
简单分析
当天晚上我们就简单分析了一下盗刷贼的行为
1.他最多也就在澡间用用,像银行和餐厅都是有监控的,他还没胆大到去暴露自己。
2.我们需要定时看完美校园的消费记录,确定位置。
原本想第二天中午去找消费的澡间的位置,但谁也没想到第二天早上,室友就从图书馆发来信息,说在代号XX的澡间洗澡,但此时的我们没有相关的准备,只能一层一层的查看,碰到洗澡的人就问,最后结果很显然,已经错过了。
中午简单又分析了一下原因,有两点:
1.没有位置信息,很难快速找到。
2.完美校园不会主动推送消费信息,只能靠自己查看
只有解决这两个问题,我们才能抓到。
提前准备
因此我们开始寝室中午就每个人行动起来,一个一个的试出每一层楼的每一个澡间代号,并按照顺序逐一列出来。
既然完美校园不主动推送,那我们就得主动去获取,因此我想通过python去监控完美校园的消费情况。通过抓包获取到了完美校园消费请求方式,并以此写出来监控代码,进行每一分钟一次查询,并通过微信推送,推送给我们室友每一个人。
现在所有的问题点都已经解决,万事俱备,只欠东风。
抓捕经过
原本以为晚上是十点多那人就会使用,但一直都没收到信息,直到我们都上床休息后,十一点半左右信息才突然推送,我们所有人(此时我班男生也都参与其中了)紧忙根据信息上的指示快速跑到洗澡地点。
虽然澡间有人,查看后他的一卡通,不是我同学的卡,紧忙给给别人道歉。我们回去找下自己的原因,原因是完美校园的消费记录是有延迟的,这次延迟了十分钟,盗刷贼就是洗澡也都走了,结果无功而返。
第三天早上测试发现洗澡间的延迟有时候也很低,我们写的监控代码没问题,只是简单的将刷卡时间和推送时间代码加到代码里了。于是做好了打持久战的准备。
第三天下午,突然收到推送,在xx洗澡间洗澡,并看到消费记录时间为近一分钟,于是八九个男生就冲了上去(此时我班男生也都参与其中了),那人正在洗澡,被我们抓个正着,一拔卡确实是室友的卡,成功抓到盗刷贼。
(拍摄视频只记录以防被诬陷,并没有外传。)
爱心教育
虽然盗刷贼有罪,但为了保护他最后的尊严,我们让他穿上衣服,跟我们下楼,避免在他学院的楼层让他丢人。带到我们的楼层里,虽然很多人很想揍他,但作为当代大学生都知道打人是不对的,我们对他进行了思想教育后并对我室友进行了道歉、赔偿后就让他回去了。
最后
这件事让我们这个考试期间都是十分欢乐的,可能以后朋友聚会,这件事还会频频提起,美好的回忆。
代码附上:
import requests
import json
import time
def server(text,desp,choice):#推送模块,可根据自身需求决定采用何种哪家
if choice:
key='XXXXXXXXXXXXXX'#提醒大家
else:
key='XXXXXXXXXXXXXX'#单独提醒我
sejson={
'key':key,#测试,
'head':text,
'body':desp
}
print(requests.post(url="http://push.ijingniu.cn/send",data=sejson).json())
try:
url='https://server.59wanmei.com/YKT_Interface/xyk'
body={
'token':'XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'method':'XYK_TRADE_DETAIL',
'param':'{"beginDate":"2020-12-01","endDate":"2020-12-31","beginIndex":0,"count":1}'
}
headers = {
'Host': 'server.59wanmei.com',
'Cookie':"XXXXXXXXXXXXXX"
}
t=1
while t:
ka_return=requests.post(url=url,data=body,headers=headers).json()
ka_ce=json.loads(ka_return['body'])['data'][0]
print(ka_ce)
if ka_ce['description']=='淋浴支出':
if ka_ce["opdt"]!="2020-12-25 11:53:55":
text=ka_ce['termName']+'抓人'
desp='检测时间:'+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))+'\r\n刷卡时间:'+ka_ce['opdt']+'\r\n刷卡地点:'+ka_ce['termName']
print(server(text,desp,1))
break
print(f'第{t}次检测中')
t=t+1
time.sleep(60)
except:
server('程序错误','请检查',0)
好家伙,我直接好家伙
哈哈,开心的一批
反过来想,还得感谢一卡通的丢失,不然怎么会有这么有趣的过程:)
是呀,这件事让我班男生都开心好久,这估计是大学期间最美好的回忆。