2025数字中国创新大赛数字安全赛道数据安全产业积分争夺赛决赛 Writeup

战队信息

战队名称:Besti Club

战队排名:3(学生组)

数据安全综合场景赛

数据删除与恢复 题目1

交易数据查询系统,想着尝试登录去发现哪些用户虽然被删除还能登录,发现密码post传输前经过了加密,直接利用js代码把所有密码加密一下,在192.168.84.155页面打开控制台,输入代码:

users=["v*3!weibeizhen","lianliangshan-","changlinqir*8","bilevkrxvvr!","yinshanv.8KB","Jpiyuanrong4j=","w=oxuqun","Kbiqingiw017.","!baolang","cimer15&wangguizhi","Uu21%fanjian","Vv22xianglijuan^","Ww23wanghong&","baiguizhuang!","@caozhengxiang","yunfuchaoZ=","Ii9wangyan!","Mmningxiurong13%","Nn14zhanglihua^","feiliangx@Cpi","Emiaojinjuan-.","!=heshuwanL","@lulongmu","yanfuhui-tz.","m9@suyufeih","*xibeilei","!qiyingdi","y*weiyingwant","Gg7&zhangxiuyun","F*shiqianming*","@M!wuchun","pingyimei!","luwuhao*","!=yxjsfengjun","!zhuningmao","Ee5%huangzhiqiang","zhangzehua@cimer..","C@gqPluhuiyiW","qipingxian7=!","wujiaqing@","vo@vlepengfu","-mmiaogui","nwanghuao-!","-7Jsushenghua","!hpanfeiguk78","@yuanzhencheng","NhanlingJ1*W6","wanghuaCc3cimer#","jinguizhiJj10@","douquanguang-!","EwY!helingui","panmeimei*o8","Ze1@6Lmuhuile","caoxingshu-","nwuzhenghuiL=","fP8.zqfeiqi","douguang9!LR","3anlilin!","yumingksyx6y@M",".tangxiahuiT","-LpRut*weifeng","d@xiaoguoyikO","Llmengpeng12$cimer","guoxiaohongDd4$","!sunjinhuicc","!@langzhilangd","O=FCKzmuwanlu",".yhuashanhuiQO","@AhebinopGkBYS","!douwuda",".zhourong","cenboqiu!z7","PQ@qidaikxBsL","@-jianghuanyou","P=zhangquanfan","-zhoulihai","SStshifeiAX.","Hhwangming8*","renyizhi!","-=Cmafengya","*PDhuangheliq.","haoyinghe!","yuyuanxueQ37g!","JanpingluZW*","yangemei1Pm*o2","m.biannanhongh","anxianUiJj!*","@langhaohong!!","@sshuiluxiuxsF","weifutian=m","chenxinAa1!cimer","cimer2@wuwen","guxin-tI-","Xlixiangli.","AK@zhaomeisigq","Kk11gantingting#","9v.shishashun","yinzhenguo2R*"];
const secretKey1 = "ThisIsAComplexKey123!"; const secretKey2 = "AnotherSecretKey456_"; const secretKey3 = "AndYetAnotherKey!@#";
var passs=new Array(users.length);var iiiii=0;for(iiiii=0;iiiii<users.length;iiiii++){passs[iiiii]=strEnc(users[iiiii], secretKey1, secretKey2, secretKey3);}

再输入"passs"并回车即可得到加密后的密码,写到python中:

username = """weibeizhen
lianliangshan
changlinqi
bile
yinshan
piyuanrong
xuqun
biqing
baolang
wangguizhi
fanjian
xianglijuan
wanghong
baiguizhuang
caozhengxiang
yunfuchao
wangyan
ningxiurong
zhanglihua
feiliang
miaojinjuan
heshuwan
lulongmu
anfuhui
suyufei
xibeilei
qiyingdi
weiyingwan
zhangxiuyun
shiqianming
wuchun
pingyimei
luwuhao
fengjun
zhuningmao
huangzhiqiang
zhangzehua
luhuiyi
qipingxian
wujiaqing
lepengfu
miaogui
wanghua
sushenghua
panfeigu
yuanzhencheng
hanling
wanghua
jinguizhi
douquanguang
helingui
panmeimei
muhuile
caoxingshu
wuzhenghui
feiqi
douguang
anlilin
yuming
tangxiahui
weifeng
xiaoguoyi
mengpeng
guoxiaohong
sunjinhui
langzhilang
muwanlu
huashanhui
hebin
douwuda
zhourong
cenboqiu
qidai
jianghuanyou
zhangquanfan
zhoulihai
shifei
wangming
renyizhi
mafengya
huangheli
haoyinghe
yuyuanxue
anpinglu
yangemei
biannanhong
anxian
langhaohong
shuiluxiu
weifutian
chenxin
wuwen
guxin
lixiangli
zhaomeisi
gantingting
shishashun
yinzhenguo"""

password = """28B135FC0CC48EFB32A0D948E426DC92C4F0D133F26BE53121DEFA78CA95B563
82D691A890A88DB482D691A890A88DB43A12ED90EF43C7C895EC72CCCBF8DE11
BDCE229BD5C338ADE4CA51339A1803CFD9E4573EF8B102C75C245EF271DBD29C
18AAEE09BDD235381FF8505E9413EB305CFE228A9CB3C03A
77FEC3CC5F791C39F7480025B5F32889BCCCA23BF258498C
244AB149F987921EE8542EBBA2A7D2678E5DCE0AAED2B8239C9FE13E24E58482
5B3FAF5CEAB20EB5BE604A523A2758AF
ACED3631822919C64030FC7A6324952558CC666B5E9DCB2F88506AE2A117D028
AF1DF5142D40201E5F2E36624F1F9DE9
46E99CDCA9EC4EBB0B89494BA704E8F3455423198CBA49DE0AC5040670350334C04657EB30F0C3D6
D58F58D5D6B05398DCD2AE6D0DF889DB6F46C8831A5A967B
1752256E3FFBACBD49385D802F25E4FFCD2E4D58847F99C047EA1A60DA44B768
F5F6FF77646C3887455423198CBA49DE90D357C28F621746CFDAF2BBAB1366B5
82FED8ED8B23B595EC55BAEAB3826731B5FBEBF4F31515D126CC75AABB821588
BEC8C65BD8ADD690682E893E7E187808A7E3E84F27ED2FA7BD032B1F0B67BDE3
2CA0641B53008574587C2FFD26FCFF8668EBB3B07EE9F033
7F7455AEB8A3D5F3CAFB30434AF3DC03BC3293D7F1B0CD52
C4320240CF49306B6FF8607C9680BEB13336C6C1C631EB11450D3642B8A3C953
7562A156FDC7AF98C412816124FADCADC06EDCED6CF69DE37877624AC21EC178
A0BAAFC7418B353018300D03955C4A22FB0CF502D0AA654C9C91F6E70C319133
36B7E13DEA8205E644457352355EED2EAD220093DD8AEC7E162FE0E6779CF6F9
70CFA7A897B9DADF8A26DA42A7D089004B607AF209F5D6FC
CA83CCD5A68ECDCF56EB7F46FCE6AF663EA4479419B9C6D1
7E44631EA9AB3CAA6096556469FF1240F43B296FEED85723
43F91EB481F4E158D55F43B19BB0CD699CC6262A1C7538F4
964A4A9AC764D44B7772F7A6B62B3BF59C91F6E70C319133
7AF6D0704502503A71D59D5761C882109C91F6E70C319133
B386736D05E4B25F4F93A320FB732F5489C86A8E94053E6BF1339191F5F69873
DE66703718E5B876C412816124FADCAD83325BEE0035E4EB66D7EE49889FDA58
2F7E1F270075B2EF6CF5CF8C9E7F22D361D962E4FD449344A68763DB32973891
1D2C4B6B131EA0432A71CB756121C4D74EF5F92F6E769726
B1F012423090C50397E80A2A615B9C463F53781856C209FE
70C07BA3C85E231EA21F6FE7436AAA5A
DF4A002E00E036C9BDC69FF1DF115A1ED2F7421FBDE5414C4EF5F92F6E769726
CC70831F6D0A70D08AA82CE642948817854ACACCA5C4B013
5FE0DE44C3BE01588C7E39B2162852204C8168FF766674650DF3B303251B3C7D9A8AD3B177765506
C412816124FADCADDD129E1A497EF7BA00D2F6A8FAD969F2D770F28CEAAB3B92696A1D2DEB1F07A9
08BD09AF52FCB36EFD5638E17822A913270243B91CA242909B2C4E6BD38810EB
5F565F1DFA43A5176FF8607C9680BEB19332589845ACF52F26CC75AABB821588
74A3C5211A98029B3DD22B36363C61E02192006609A511A0
660577A26FEAD8F9266DEED799FAFFC814A4D3F8A62363F9
B20B374F425C82A5771F576A7A2FCF7E9C91F6E70C319133
03F8F73BA857DDB80F710A4F176A888B782A8BF6C1618E9B
631B73BCF103525B2B13683BD01F55130E4AA24D43A7AFC5D153B0A97DC06B42
58D847EAB90C2AE87CD76A7CF2ECC9C118C0A54B3ADCC5A25C245EF271DBD29C
8A0BC4B14C2E3088D8D43043A83C09DDFC21D6BD7680CCBDBD032B1F0B67BDE3
70D785C0AC453661CC45B7C5822833B9B3A2BEC303F5C432DB1BD5ED4BD91AAE
455423198CBA49DE546C1368AC7880728BE72A3825CDCC92ADA9BB8029DADA67
EC943EBE2AA04024EC55BAEAB382673160EFBA0BAFB4A19E1A588164FD404001
D0557277A4841D5CB5FBEBF4F31515D1B5FBEBF4F31515D11EBBA6CD1654F709
8A900528F0E364B6D9F81ED540C918884E31B9E2DB50CCCF
24A950F069C3E9792A3E964953DE1B560BFC44DF3D5C2089
EA82737E7032E4A5EC386EFE5B1FEC9A75C365807FD6F67FB50693B707096DDE
AF25DABA4B0A8519129BC6505C7B5A8B2B01774B9B66BE10
A8693B068CCE1FEFE38ED34016269C89D3BC194BB0E32CC518915C6D05253213
E81206EEDB17A17B19258E62289E1B1DE62AAD9424A0491D
0275496085B5C172B5FBEBF4F31515D18714C96F26512A26
BC0EE7B6C367E95FCB475AFD1608906226CC75AABB821588
807173FD9F1DC6EA0F2E1F5A27FFF684A82B1BBDA00F298BDBEDDC73B4757C9C
8502B8AC2675D632A7E3E84F27ED2FA7FBD8B25424928CC4
2F3B6F170C9E5C10C4F7432768E6A4F0466CA3B48387661FBD032B1F0B67BDE3
EB39DBD16C52CF41771F576A7A2FCF7E4B3016942EBC90C4E5C08E88A6BF28D8
55BC005052529A8B01767253B039151779A9FC8D514BF1C794A1BCD6B200252D262B8F74A62193C9
B4CE7F02EE2A0CE94F0C2160D3CD8D73FF8DD8E3C2D2C11E8F44C616838A0DD1
66EFCFC84FFB3EFADC42F9BAD11A9254F184CFFBE4E57A8A
6A146C8B2C23CCD1DDA5AC7329658E3DF1640A82B18BF5CC49E94DABF5224FD5
9B317F06E7288FF002147A8A9EB5B15BE50FFBAAA3B6A7FE3EA4479419B9C6D1
0ADAE517D949C1FFA2CC3AAB96233FDEEC3D8E8D5585E0A6A2D402056551A406
8809D19210E81184010FBECC0B766126816D06B6AA49F6FFB6CB830D7966F0BD
129C7396C4C12373FA050B5F9C29F77D
8904F569124D554F3336C6C1C631EB119A8AD3B177765506
640F983498A32E6EF0AF2952567439EB6E636A8F5DE79076
FD13E0CE8B22B2D5B7934BC2B1DBED58A70A0A2149080CBFEFA1D15F730C6776
A0838330FA81D3F089CB024C0797605707ADD38CF2CA1C4E9EB60CC45C335991
EB302AEE4258984D62FDFC0D8CEAE36FE173897C2E6C98B43BF805B0D7D0520D
FFA0463F9B88847F8A4291F73CD70A1F32A7BE6CF6200508
7ADD8774F5BF1407A380AA6F57C9A755B329D8DA1C07C267
A247BCD055B3AAB8EF93194C49755EEEF8393636FA0EB3A0
69E2F231FC33AD56A9E51CCEF68D618026CC75AABB821588
4A4EA328F025D60FD5182D992B16E8CBD376867FF8B25B85
1931345CAFFDBD3CB5FBEBF4F31515D1D9F81ED540C91888D5F10AE4E30F5363
9C388F73EFC6137D9069D4A4DB1EDD8E38A0A099584620C8
FA599CA5C4838A54B2E0D564B400953FDAC8DBEFED5D1228185AB8CDA3C4B2AE
B53AB5FAB69A6DC127AD147562F65EE34520A887056AB87B
F9FD640581C2638A05AD180485383124C6A55EC63CE7F0D4AAD75AFE65B0E319
EE9530863EBDDDFAA44B1E49F612A45998F821A5761501BCF4453670BFA54242
A7D2C435F483EE66F56F379D20977159973B410B26161149
4F3DF9178A1C15D7162A16CB5A31FBDD90D357C28F621746D862828941B2C711
FAB9A33E3CE10B6C2237C4E56DAA8097015BE0162B7DEB9E66A727A284979254
EDE390638369607ADFE1DEB561D7AD1D64F0D842837B7CCA
A47CDC5B7829175B88D87C6F64A9DE6FCD0F7683FD25B231D770F28CEAAB3B92
46E99CDCA9EC4EBB1740A088B2AF3924A50CF3CFC943544F
CA70598678D270FDDF02320BAFFE490A78AE33E2B1E671E9
092D622F2D68F4D718300D03955C4A22B2B9B40AB8B25A1C
C8FC51E95EDA2AB3E537DEFC3A8D3F276DE48A945B9809B951DAB6A49BE8B964
C74C4A44DDCA236AE2629FC19F575380B00356037C4752823FD094CA3F8EF3DF
CA990A4ABAED4A4F69070F0F0BB1FF70C8975AEFC6CFBD3A4EF5F92F6E769726
BDB5228F824471D9E38ED34016269C89F23B589D26F7B00D6F5C51BE75C9B05B"""


import requests
url = "http://192.168.84.155/"

username = username.split('\n')
password = password.split('\n')

r_r = requests.get(url)

deleted_users = []

for i in range(len(username)):
    data = {"username":username[i],"password":password[i]}
    r = requests.post(url,data)

    if r_r.text != r.text:
        print(str(i)+":")
        print(username[i])
        print(password[i])
        # print(r.text)
        if "商家成交信息" in r.text:
            print("可以商家登录")
            if "管理员" in r.text:
                print("是管理员")
        elif "验证失败: 用户信息未找到" in r.text:
            deleted_users.append(username[i])
            print("验证失败: 用户信息未找到")
        else:
            print(r.text)

        print()

for s in deleted_users:
    print(s, end="_")

得到结果如下,同时发现管理员账号:

在这里插入图片描述

可以登录mysql。最后得到已删除用户如下:

在这里插入图片描述

wangguizhi_ningxiurong_zhanglihua_mengpeng_gantingting,md5 后得到答案

在这里插入图片描述

8429e825242b4e9063862b78da1e46dd

数据删除与恢复 题目2

125

登录mysql,得到公钥和数据:

在这里插入图片描述

导出

在这里插入图片描述

 openssl rsa -pubin -text -modulus -in warmup -in pub1.pem

得到 n,e1,e2

共模攻击:


from Crypto.Util.number import long_to_bytes
from gmpy2 import invert
# 欧几里得算法
def egcd(a, b):
	if a == 0:
		return (b, 0, 1)
	else:
		g, y, x = egcd(b % a, a)
		return (g, x - (b // a) * y, y)

def main(c1, c2):
	n = 0x9FCE08D524EC3C634726C235223A886751792906175C20CAC7B2BA3E7A6406F045DD51632C41A675A9929EC0B7E0E91C8848E18764E619D3BAC79CDEB3940CAD6FB8BBFC60655E164D200D09FA5BFA2F8E8B7605566CF4075C407CE83D2624CE78A7C54C651277DDB1AAFA5CA2716CEE7FB859FA661B5E685CBCCF3F9E32656E0C40979396367E8C51CCDD92F46A3C51CE8DD688DB0CEE6DEA7B07D2322461B6CE6D7214C5D50DD54F59E206F3343E6B6D23ABF71739F766FB5AEBC51465A34CB651A7991C962EB81C78EDF3C91532759BD9A481E6410E5FD9D2759753EDC95624C1703D4C50BB890BF04F9B18D4504E1FB82A81581C59A11F348A172111E7981CE69242EED19050F015B4039B0B5C4B73622B844A652F2826AEF288DA86C3D670472A10B65321BF77623D01821452B41BA73CD503E86193C8D7C807E0640AA7D6B8CC42BFC6E4EFA6B48BFBEB12933579D27F313150B4DD5163BE418838A68B0B48C16510D2790E827E0536A02CCF776464838A1E4D010A48BCD4C792F2E8636C57DC2BD7A4CFE77CEA94F91778F4DD386040259F4EEB6E421177A1911F62D59A64B8DC40D1C592BB1A5A195E41BCA60EB7F1DE7B8A43ABC87398B3C0A86C2469EF78EFE47C84C53403E4E2988F7501394D5708E1C16046B4188760A44D39FCA67A2757D43EBFE57854DAF96FF2A24528970C524FC7EA1DD818FA6A0B390989
	# c1 = 533757146593934448256197672772438039401025923458408392477339094037335059848457148453251518382847182259379463712033377410609800342324068159746099025728036998160963561320532206832843549163252839312303107099659087577507792002181915924756446661160251063803063328221254145647010759739414915619123538513128627135331474112978549494562990018111879520524144908527893944849091472572798122835502986148706315741738365950305262521903352648836099671828477350254796321029120859122169636191807727086463383777780999050285168000207462280910572499181661699075032551859855151296960936350040073347754140942394723743828538945155937963714829313273954093393398621900880544618983621411916153933626346084348104874327908613257810316602309920778895260893887941858786348306660932531481886097407526251017861311812754520769885270374780756371146457078081197951171245093411535482557224731210673746184598515739272727993974598431340543229069728615423673998256203451816201714710799453498407331183821530437561459457004118007645093456572391601860701846433780992562396583950389931736708913430342418049831413311323069140502084365682591509518165443267759416990979832052738228852789859636424578573994222583077337174103664886087655866089357058860622897699881781129080811783347
	# c2 = 340696130466104781200829311977818819934382939566488931518990871748634628309681122277729365664564608699781476883621037874412793600249381039676659474590411926533816135555074315186995211605386247915622457200353029542005064078806905831482856797455701501132324282072675811523471690709410260252499752272324070107654456493855890446884172055552091795111629918569601864965693943772320097680426616718184382313972726622913691281062768025000210336342595696222093248071047984648017521124205164728212004390393571605839727971256374030813583803693984625912952729179068040832767108605293665300893909807493071013269420626993618272301539586580826774224074370712829229033341779619973077075920511220144654980874759577081433489685965147231406225310063161210394487822238536230248768725957670814468104647652015835067525660433540070823753692705479324113153177064691143636349709481519495022025939197240588774450350837335361429806105236644239548752279661734817840494222298069539963083499058645557194053938440500602067401025408663682743937852510518911270421017146014873270099903964421220418836083229480097327548185863562719566063141408793747144269841305673059238582655184718881753867803295883392875027280739596615726583843087933348056047277117506623911904607680
	e1 = 3512729867
	e2 = 3280106057
	s = egcd(e1, e2)
	s1 = s[1]
	s2 = s[2]
	# 求模反元素
	if s1<0:
		s1 = - s1
		c1 = invert(c1, n)
	elif s2<0:
		s2 = - s2
		c2 = invert(c2, n)

	m = pow(c1,s1,n)*pow(c2,s2,n) % n
	# m = long_to_bytes(m)
	
	# print(m)
	return long_to_bytes(m)

if __name__ == '__main__':
	# main()
	ret = ""
	with open('order.csv','r') as f:
		f.readline()
		while True:
			order = f.readline()
			if order == '':
				break
			order = order.split(',')
			id = order[0]
			c1 = order[1]
			c2 = order[2]
			
			m = main(int(c1),int(c2))
			# print(m.decode())
			ret += m.decode() + '\n'

	with open('retpri.txt','w') as f:
		f.write(ret)

搜索得到结果:

在这里插入图片描述

2511_980

数据删除与恢复 题目3

125

根据题目要求及题目2解密的数据,编写脚本如下:

"""
在恢复订单数据后,发现部分订单存在账单异常问题。请选手根据恢复后的订单数据进行数据核查,找到充值米币到账数量错误的交易、米币优惠幅度高于20%的交易、VIP到账天数错误的交易、实付金额错误的交易、VIP充值优惠幅度高于20%的交易并统计每种错误交易类型的数量,请选手按照答案标准格式的排列顺序,通过""_""拼接后,作为标准答案提交。
注意:充值会员30天为月卡,金额为15元.
         充值会员90天为季卡,金额为30元.
         充值会员365天为年卡,金额为88元.
         米币价格与充值金额,交易换算为1:1
         计算充值优惠幅度是否高于20%时,使用正确的价格(充值金额或充值天数对应的金额)进行计算,不能使用现有错误实付金额计算
         
【答案标准】例:若充值米币到账数量错误的交易为6笔,米币优惠幅度高于20%的交易为2笔,VIP到账天数错误的交易为3笔,实付金额错误的交易为4笔,VIP充值优惠幅度高于20%的交易为5笔。
则提交最终答案为:6_2_3_4_5
"""

# 充值米币到账数量错误的交易
def get_wrong(moneypay, mibi_ago, mibi_after):
    """充值米币到账数量错误的交易"""
    mibi_get = mibi_after - mibi_ago
    if moneypay != mibi_get:
        return True
    return False
    pass

# 米币优惠幅度高于20%的交易
def youhui_high(moneypay, youhui):
    r"""米币优惠幅度高于20%的交易"""
    if youhui > moneypay * 0.2:
        return True
    return False
    pass

# VIP到账天数错误的交易
def vipdays_wrong(dayspay, days_ago, days_after):
    '''VIP到账天数错误的交易'''
    days_get = days_after - days_ago
    if dayspay != days_get:
        return True
    return False
    pass

# 实付金额错误的交易
def pay_wrong(moneypay, youhui, moneypay_true):
    '''实付金额错误的交易'''
    if moneypay - youhui != moneypay_true:
        return True
    return False
    pass

# VIP充值优惠幅度高于20%的交易
def vipyouhui_high(moneypay, youhui):
    '''VIP充值优惠幅度高于20%的交易'''
    if youhui > moneypay * 0.2:
        return True
    return False
    pass

def vipdays_to_money(dayspay):
    if dayspay == 30:
        return 15
    elif dayspay == 90:
        return 30
    elif dayspay == 365:
        return 88
    else:
        raise ZeroDivisionError

def main():

    get_wrong_ret = []
    youhui_high_ret = []
    vipdays_wrong_ret = []
    pay_wrong_ret = []
    vipyouhui_high_ret = []
    with open('retpri.txt', "r") as f:
        #订单号: 202502100796, 商品名称: 充值米币, 充值金额: ¥100, 充值前米币数量: 188, 充值后米币数量: 288, 优惠券: 50, 实付金额: ¥50
        while True:
        # if True:
            # f.readline()
            order = f.readline()
            if order == '':
                break
            
            order = order.split('订单号: ')[1]

            order = order.split(', 商品名称: ')
            order_id = int(order[0])
            order = order[1]

            if order.startswith('充值米币'):
                order = order.split('充值米币, 充值金额: ¥')[1]
                order = order.split(', 充值前米币数量: ')
                moneypay = int(order[0])
                order = order[1]

                order = order.split(', 充值后米币数量: ')
                mibi_ago = int(order[0])
                order = order[1]

                order = order.split(', 优惠券: ')
                mibi_after = int(order[0])
                order = order[1]

                order = order.split(', 实付金额: ¥')
                youhui = int(order[0])
                moneypay_true = int(order[1])

                # print(moneypay)
                # print(mibi_ago)
                # print(mibi_after)
                # print(youhui)
                # print(moneypay_true)

                if get_wrong(moneypay, mibi_ago, mibi_after):
                    get_wrong_ret.append(order_id)

                if youhui_high(moneypay, youhui):
                    youhui_high_ret.append(order_id)

                if pay_wrong(moneypay, youhui, moneypay_true):
                    pay_wrong_ret.append(order_id)
            else:
                order = order.split('充值会员, 充值天数: ')[1]
                order = order.split(', 充值前剩余天数: ')
                dayspay = int(order[0])
                order = order[1]

                order = order.split('天, 充值后剩余天数: ')
                days_ago = int(order[0])
                order = order[1]

                order = order.split('天, 优惠券: ')
                days_after = int(order[0])
                order = order[1]

                order = order.split(', 实付金额: ¥')
                youhui = int(order[0])
                moneypay_true = int(order[1])

                moneypay = vipdays_to_money(dayspay)

                # print(dayspay)
                # print(days_ago)
                # print(days_after)
                # print(youhui)
                # print(moneypay_true)

                if vipdays_wrong(dayspay, days_ago, days_after):
                    vipdays_wrong_ret.append(order_id)
                
                if pay_wrong(moneypay, youhui, moneypay_true):
                    pay_wrong_ret.append(order_id)

                if vipyouhui_high(moneypay, youhui):
                    vipyouhui_high_ret.append(order_id)

    # print(get_wrong_ret)
    # print(youhui_high_ret)
    # print(vipdays_wrong_ret)
    # print(pay_wrong_ret)
    # print(vipyouhui_high_ret)

    print(str(len(get_wrong_ret))+'_'+str(len(youhui_high_ret))+'_'+str(len(vipdays_wrong_ret))+'_'+str(len(pay_wrong_ret))+'_'+str(len(vipyouhui_high_ret)))

if __name__ == '__main__':
    main()

得到结果:

在这里插入图片描述

3_142_3_4_612
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐