欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!
Python读取项目目录和子目录下的文件
我在functions文件夹下有个py,用来读取config目录里的配置文件,发现 ../config/config.json 报错文件不存在。
咨询了copilot之后,学习了需要用如下写法:
self.config_file = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'config/config.json')
好麻烦。
Electron真的是我见过最令人头痛的软件
Electron
一步一个报错
垃圾软件。
我再用Electron我就是狗!
#怒 #怒 #怒 #怒 #怒 #怒
2021年河南省大学生国家安全知识竞赛一键满分脚本
欢迎
欢迎同学们再次来到紫旭Blog,本次给大家带来的是河南省大学生国家安全知识竞赛一键满分脚本。
警告
基于兴趣免费共享,禁止倒卖,我当然看不到你是不是在倒卖,但是作者在此立下诅咒:倒卖的户口本10天内挨个死。
使用方法
只需要修改最后一行的内容即可,如下所示
guoan.do(学校ID, '学号', '密码')
我会在下面将学校ID列表公布。
源码
注意:52pojie和本站发布的均为同一作者:紫旭网络
# -*- coding: utf-8 -*- import requests import random import json import time class GuoAn(object): def __init__(self): self.s = requests.session() def do(self, school_id, student_id, password): self.login(school_id, student_id, password) def login(self, school_id, student_id, password): url = 'http://gjaqzsjs.haedu.cn/Login/auth' data = { 'unit_code': school_id, 'student_id': student_id, 'password': password } result = self.s.post(url=url, data=data) result = json.loads(result.text) if result['code'] == 2000: print(f'{result["data"]["name"]},登录成功!') time.sleep(1) print(f'{result["data"]["name"]},即将提交答案!') time.sleep(1) self.submitAnswer() # 继续 else: print(f'登录失败,{result["msg"]}') exit() def submitAnswer(self): url = 'http://gjaqzsjs.haedu.cn/Answer/submitAnswer' data = f'answer=%5B%7B%22number%22%3A%22383%22%2C%22answer%22%3A%22C%22%7D%2C%7B%22number%22%3A%227%22%2C%22answer%22%3A%22D%22%7D%2C%7B%22number%22%3A%2273%22%2C%22answer%22%3A%22B%22%7D%2C%7B%22number%22%3A%22127%22%2C%22answer%22%3A%22A%22%7D%2C%7B%22number%22%3A%22251%22%2C%22answer%22%3A%22C%22%7D%2C%7B%22number%22%3A%2247%22%2C%22answer%22%3A%22C%22%7D%2C%7B%22number%22%3A%22443%22%2C%22answer%22%3A%22A%22%7D%2C%7B%22number%22%3A%22515%22%2C%22answer%22%3A%22ABCD%22%7D%2C%7B%22number%22%3A%22638%22%2C%22answer%22%3A%22ABC%22%7D%2C%7B%22number%22%3A%22722%22%2C%22answer%22%3A%22BCD%22%7D%2C%7B%22number%22%3A%22609%22%2C%22answer%22%3A%22ABC%22%7D%2C%7B%22number%22%3A%22524%22%2C%22answer%22%3A%22ABCD%22%7D%2C%7B%22number%22%3A%22520%22%2C%22answer%22%3A%22ABCD%22%7D%2C%7B%22number%22%3A%22832%22%2C%22answer%22%3A%22B%22%7D%2C%7B%22number%22%3A%22996%22%2C%22answer%22%3A%22B%22%7D%2C%7B%22number%22%3A%22791%22%2C%22answer%22%3A%22B%22%7D%2C%7B%22number%22%3A%22796%22%2C%22answer%22%3A%22B%22%7D%2C%7B%22number%22%3A%221000%22%2C%22answer%22%3A%22A%22%7D%2C%7B%22number%22%3A%22883%22%2C%22answer%22%3A%22B%22%7D%2C%7B%22number%22%3A%221048%22%2C%22answer%22%3A%22B%22%7D%5D&use_time={random.randint(60, 180)}' headers = { 'Content-Type': 'application/x-www-form-urlencoded' } result = self.s.post(url=url, data=data, headers=headers) # print(result.text) result = json.loads(result.text) if result['code'] == 4600: print(f'答题完成!') exit() else: print(f'答题失败,{result["msg"]}') exit() if __name__ == '__main__': guoan = GuoAn() guoan.do(7, 'test0006', '123456')
学校ID列表
可以用Ctrl + F查找你的学校,你学校对应的code即为学校ID
[{ "code": "1", "char": "安阳工学院", "type": "1", "type_char": "本科" }, { "code": "2", "char": "安阳师范学院", "type": "1", "type_char": "本科" }, { "code": "3", "char": "安阳学院", "type": "1", "type_char": "本科" }, { "code": "4", "char": "河南财经政法大学", "type": "1", "type_char": "本科" }, { "code": "5", "char": "河南财政金融学院", "type": "1", "type_char": "本科" }, { "code": "6", "char": "河南城建学院", "type": "1", "type_char": "本科" }, { "code": "7", "char": "河南大学", "type": "1", "type_char": "本科" }, { "code": "8", "char": "河南工程学院", "type": "1", "type_char": "本科" }, { "code": "9", "char": "河南工学院", "type": "1", "type_char": "本科" }, { "code": "10", "char": "河南工业大学", "type": "1", "type_char": "本科" }, { "code": "11", "char": "河南警察学院", "type": "1", "type_char": "本科" }, { "code": "12", "char": "河南开封科技传媒学院", "type": "1", "type_char": "本科" }, { "code": "13", "char": "河南科技大学", "type": "1", "type_char": "本科" }, { "code": "14", "char": "河南科技学院", "type": "1", "type_char": "本科" }, { "code": "15", "char": "河南科技学院新科学院", "type": "1", "type_char": "本科" }, { "code": "16", "char": "河南科技职业大学", "type": "1", "type_char": "本科" }, { "code": "17", "char": "河南理工大学", "type": "1", "type_char": "本科" }, { "code": "18", "char": "河南牧业经济学院", "type": "1", "type_char": "本科" }, { "code": "19", "char": "河南农业大学", "type": "1", "type_char": "本科" }, { "code": "20", "char": "河南师范大学", "type": "1", "type_char": "本科" }, { "code": "21", "char": "河南中医药大学", "type": "1", "type_char": "本科" }, { "code": "22", "char": "华北水利水电大学", "type": "1", "type_char": "本科" }, { "code": "23", "char": "黄河交通学院", "type": "1", "type_char": "本科" }, { "code": "24", "char": "黄河科技学院", "type": "1", "type_char": "本科" }, { "code": "25", "char": "黄淮学院", "type": "1", "type_char": "本科" }, { "code": "26", "char": "洛阳理工学院", "type": "1", "type_char": "本科" }, { "code": "27", "char": "洛阳师范学院", "type": "1", "type_char": "本科" }, { "code": "28", "char": "南阳理工学院", "type": "1", "type_char": "本科" }, { "code": "29", "char": "南阳师范学院", "type": "1", "type_char": "本科" }, { "code": "30", "char": "平顶山学院", "type": "1", "type_char": "本科" }, { "code": "31", "char": "商丘工学院", "type": "1", "type_char": "本科" }, { "code": "32", "char": "商丘师范学院", "type": "1", "type_char": "本科" }, { "code": "33", "char": "商丘学院", "type": "1", "type_char": "本科" }, { "code": "34", "char": "新乡学院", "type": "1", "type_char": "本科" }, { "code": "35", "char": "新乡医学院", "type": "1", "type_char": "本科" }, { "code": "36", "char": "新乡医学院三全学院", "type": "1", "type_char": "本科" }, { "code": "37", "char": "信阳农林学院", "type": "1", "type_char": "本科" }, { "code": "38", "char": "信阳师范学院", "type": "1", "type_char": "本科" }, { "code": "39", "char": "信阳学院", "type": "1", "type_char": "本科" }, { "code": "40", "char": "许昌学院", "type": "1", "type_char": "本科" }, { "code": "41", "char": "郑州财经学院", "type": "1", "type_char": "本科" }, { "code": "42", "char": "郑州大学", "type": "1", "type_char": "本科" }, { "code": "43", "char": "郑州工程技术学院", "type": "1", "type_char": "本科" }, { "code": "44", "char": "郑州工商学院", "type": "1", "type_char": "本科" }, { "code": "45", "char": "郑州工业应用技术学院", "type": "1", "type_char": "本科" }, { "code": "46", "char": "郑州航空工业管理学院", "type": "1", "type_char": "本科" }, { "code": "47", "char": "郑州经贸学院", "type": "1", "type_char": "本科" }, { "code": "48", "char": "郑州科技学院", "type": "1", "type_char": "本科" }, { "code": "49", "char": "郑州轻工业大学", "type": "1", "type_char": "本科" }, { "code": "50", "char": "郑州商学院", "type": "1", "type_char": "本科" }, { "code": "51", "char": "郑州升达经贸管理学院", "type": "1", "type_char": "本科" }, { "code": "52", "char": "郑州师范学院", "type": "1", "type_char": "本科" }, { "code": "53", "char": "郑州西亚斯学院", "type": "1", "type_char": "本科" }, { "code": "54", "char": "中原工学院", "type": "1", "type_char": "本科" }, { "code": "55", "char": "中原科技学院", "type": "1", "type_char": "本科" }, { "code": "56", "char": "周口师范学院", "type": "1", "type_char": "本科" }, { "code": "57", "char": "安阳幼儿师范高等专科学校", "type": "2", "type_char": "专科" }, { "code": "58", "char": "安阳职业技术学院", "type": "2", "type_char": "专科" }, { "code": "59", "char": "长垣烹饪职业技术学院", "type": "2", "type_char": "专科" }, { "code": "60", "char": "河南测绘职业学院", "type": "2", "type_char": "专科" }, { "code": "61", "char": "河南地矿职业学院", "type": "2", "type_char": "专科" }, { "code": "62", "char": "河南对外经济贸易职业学院", "type": "2", "type_char": "专科" }, { "code": "63", "char": "河南工业和信息化职业学院", "type": "2", "type_char": "专科" }, { "code": "64", "char": "河南工业贸易职业学院", "type": "2", "type_char": "专科" }, { "code": "65", "char": "河南工业职业技术学院", "type": "2", "type_char": "专科" }, { "code": "66", "char": "河南护理职业学院", "type": "2", "type_char": "专科" }, { "code": "67", "char": "河南机电职业学院", "type": "2", "type_char": "专科" }, { "code": "68", "char": "河南检察职业学院", "type": "2", "type_char": "专科" }, { "code": "69", "char": "河南建筑职业技术学院", "type": "2", "type_char": "专科" }, { "code": "70", "char": "河南交通职业技术学院", "type": "2", "type_char": "专科" }, { "code": "71", "char": "河南经贸职业学院", "type": "2", "type_char": "专科" }, { "code": "72", "char": "河南林业职业学院", "type": "2", "type_char": "专科" }, { "code": "73", "char": "河南农业职业学院", "type": "2", "type_char": "专科" }, { "code": "74", "char": "河南女子职业学院", "type": "2", "type_char": "专科" }, { "code": "75", "char": "河南轻工职业学院", "type": "2", "type_char": "专科" }, { "code": "76", "char": "河南水利与环境职业学院", "type": "2", "type_char": "专科" }, { "code": "77", "char": "河南司法警官职业学院", "type": "2", "type_char": "专科" }, { "code": "78", "char": "河南推拿职业学院", "type": "2", "type_char": "专科" }, { "code": "79", "char": "河南物流职业学院", "type": "2", "type_char": "专科" }, { "code": "80", "char": "河南信息统计职业学院", "type": "2", "type_char": "专科" }, { "code": "81", "char": "河南医学高等专科学校", "type": "2", "type_char": "专科" }, { "code": "82", "char": "河南艺术职业学院", "type": "2", "type_char": "专科" }, { "code": "83", "char": "河南应用技术职业学院", "type": "2", "type_char": "专科" }, { "code": "84", "char": "河南职业技术学院", "type": "2", "type_char": "专科" }, { "code": "85", "char": "河南质量工程职业学院", "type": "2", "type_char": "专科" }, { "code": "86", "char": "鹤壁能源化工职业学院", "type": "2", "type_char": "专科" }, { "code": "87", "char": "鹤壁汽车工程职业学院", "type": "2", "type_char": "专科" }, { "code": "88", "char": "鹤壁职业技术学院", "type": "2", "type_char": "专科" }, { "code": "89", "char": "黄河水利职业技术学院", "type": "2", "type_char": "专科" }, { "code": "90", "char": "济源职业技术学院", "type": "2", "type_char": "专科" }, { "code": "91", "char": "焦作大学", "type": "2", "type_char": "专科" }, { "code": "92", "char": "焦作工贸职业学院", "type": "2", "type_char": "专科" }, { "code": "93", "char": "焦作师范高等专科学校", "type": "2", "type_char": "专科" }, { "code": "94", "char": "开封大学", "type": "2", "type_char": "专科" }, { "code": "95", "char": "开封文化艺术职业学院", "type": "2", "type_char": "专科" }, { "code": "96", "char": "兰考三农职业学院", "type": "2", "type_char": "专科" }, { "code": "97", "char": "林州建筑职业技术学院", "type": "2", "type_char": "专科" }, { "code": "98", "char": "洛阳科技职业学院", "type": "2", "type_char": "专科" }, { "code": "99", "char": "洛阳职业技术学院", "type": "2", "type_char": "专科" }, { "code": "100", "char": "漯河食品职业学院", "type": "2", "type_char": "专科" }, { "code": "101", "char": "漯河医学高等专科学校", "type": "2", "type_char": "专科" }, { "code": "102", "char": "漯河职业技术学院", "type": "2", "type_char": "专科" }, { "code": "103", "char": "南阳科技职业学院", "type": "2", "type_char": "专科" }, { "code": "104", "char": "南阳农业职业学院", "type": "2", "type_char": "专科" }, { "code": "105", "char": "南阳医学高等专科学校", "type": "2", "type_char": "专科" }, { "code": "106", "char": "南阳职业学院", "type": "2", "type_char": "专科" }, { "code": "107", "char": "平顶山工业职业技术学院", "type": "2", "type_char": "专科" }, { "code": "108", "char": "平顶山职业技术学院", "type": "2", "type_char": "专科" }, { "code": "109", "char": "濮阳石油化工职业技术学院", "type": "2", "type_char": "专科" }, { "code": "110", "char": "濮阳医学高等专科学校", "type": "2", "type_char": "专科" }, { "code": "111", "char": "濮阳职业技术学院", "type": "2", "type_char": "专科" }, { "code": "112", "char": "汝州职业技术学院", "type": "2", "type_char": "专科" }, { "code": "113", "char": "三门峡社会管理职业学院", "type": "2", "type_char": "专科" }, { "code": "114", "char": "三门峡职业技术学院", "type": "2", "type_char": "专科" }, { "code": "115", "char": "商丘医学高等专科学校", "type": "2", "type_char": "专科" }, { "code": "116", "char": "商丘职业技术学院", "type": "2", "type_char": "专科" }, { "code": "117", "char": "嵩山少林武术职业学院", "type": "2", "type_char": "专科" }, { "code": "118", "char": "新乡职业技术学院", "type": "2", "type_char": "专科" }, { "code": "119", "char": "信阳航空职业学院", "type": "2", "type_char": "专科" }, { "code": "120", "char": "信阳涉外职业技术学院", "type": "2", "type_char": "专科" }, { "code": "121", "char": "信阳职业技术学院", "type": "2", "type_char": "专科" }, { "code": "122", "char": "许昌电气职业学院", "type": "2", "type_char": "专科" }, { "code": "123", "char": "许昌陶瓷职业学院", "type": "2", "type_char": "专科" }, { "code": "124", "char": "许昌职业技术学院", "type": "2", "type_char": "专科" }, { "code": "125", "char": "永城职业学院", "type": "2", "type_char": "专科" }, { "code": "126", "char": "郑州财税金融职业学院", "type": "2", "type_char": "专科" }, { "code": "127", "char": "郑州城市职业学院", "type": "2", "type_char": "专科" }, { "code": "128", "char": "郑州电力高等专科学校", "type": "2", "type_char": "专科" }, { "code": "129", "char": "郑州电力职业技术学院", "type": "2", "type_char": "专科" }, { "code": "130", "char": "郑州电子商务职业学院", "type": "2", "type_char": "专科" }, { "code": "131", "char": "郑州电子信息职业技术学院", "type": "2", "type_char": "专科" }, { "code": "132", "char": "郑州工业安全职业学院", "type": "2", "type_char": "专科" }, { "code": "133", "char": "郑州轨道工程职业学院", "type": "2", "type_char": "专科" }, { "code": "134", "char": "郑州黄河护理职业学院", "type": "2", "type_char": "专科" }, { "code": "135", "char": "郑州理工职业学院", "type": "2", "type_char": "专科" }, { "code": "136", "char": "郑州旅游职业学院", "type": "2", "type_char": "专科" }, { "code": "137", "char": "郑州商贸旅游职业学院", "type": "2", "type_char": "专科" }, { "code": "138", "char": "郑州澍青医学高等专科学校", "type": "2", "type_char": "专科" }, { "code": "139", "char": "郑州体育职业学院", "type": "2", "type_char": "专科" }, { "code": "140", "char": "郑州铁路职业技术学院", "type": "2", "type_char": "专科" }, { "code": "141", "char": "郑州卫生健康职业学院", "type": "2", "type_char": "专科" }, { "code": "142", "char": "郑州信息工程职业学院", "type": "2", "type_char": "专科" }, { "code": "143", "char": "郑州信息科技职业学院", "type": "2", "type_char": "专科" }, { "code": "144", "char": "郑州亚欧交通职业学院", "type": "2", "type_char": "专科" }, { "code": "145", "char": "郑州幼儿师范高等专科学校", "type": "2", "type_char": "专科" }, { "code": "146", "char": "郑州职业技术学院", "type": "2", "type_char": "专科" }, { "code": "147", "char": "周口职业技术学院", "type": "2", "type_char": "专科" }, { "code": "148", "char": "驻马店幼儿师范高等专科学校", "type": "2", "type_char": "专科" }, { "code": "149", "char": "驻马店职业技术学院", "type": "2", "type_char": "专科" }, { "code": "150", "char": "信阳艺术职业学院", "type": "2", "type_char": "专科" }, { "code": "151", "char": "周口文理职业学院", "type": "2", "type_char": "专科" }, { "code": "152", "char": "洛阳文化旅游职业学院", "type": "2", "type_char": "专科" }, { "code": "153", "char": "郑州城建职业学院", "type": "2", "type_char": "专科" }, { "code": "154", "char": "郑州医药健康职业学院", "type": "2", "type_char": "专科" }, { "code": "155", "char": "铁道警察学院", "type": "2", "type_char": "专科" }, { "code": "156", "char": "郑州大学体育学院", "type": "2", "type_char": "专科" }]
河南宗教知识竞赛加密算法分析(第二篇)
上回说到
请先看第一回:https://blog.zixutech.cn/archives/664
本回
由于官方2天更新了7次,尤其是今天更新了4次,我人直接裂开,官方没有采用我的强加密手段,而是继续乱jb加密,但是更新频次如此之快,我也懒得搞了,本篇文章主要是分享一下期间几次更新的加解密算法,别说还挺有创意的。
算法代码
我已添加了详细的注释供读者们阅读学习,对代码有疑问可以评论提出。
// 宗教答题第2~5次更新的加密函数 function encrypt(content) { // content 是要加密的值,宗教里就是题号 如1000065 // 随机字符串 + # + 题号,拼接后进行base64编码 content = window.btoa('1688106372619ddf853ddce845744766#' + content) // code是要穿插在上述content里的内容,其内容是用户ID(需经过base64解码)和csmpagerid(不知道这到底是啥) let code = window.atob(memberusercode) + csmpagerid; // 开始将code穿插进content进行混淆 for (let i = 0; i < code.length; i++) { // 在1 3 5 7 9 ··· 索引位置逐位插入code的内容 content = content.slice(0, 2 * i + 1) + code.slice(i, i + 1) + content.slice(2 * i + 1); } // 因为content是经过base64编码的,所以其最后可能会出现=== == =这样的,如果有则替换为特定的字符串,这里是O0O0OO0O0O // 如果没有,则直接在后面加上这个O0O0OO0O0O if (content.indexOf('===') == -1 && content.indexOf('==') == -1 && content.indexOf('=') == -1) { content += 'O0O0OO0O0O'; } else { content = content.replace('===', 'O0O0OO0O0O'); content = content.replace('==', 'O0O0OO0O0O'); content = content.replace('=', 'O0O0OO0O0O'); } // 加密完成,返回数据 // console.log(content) return content; } // 宗教答题第2~5次更新的解密函数 function decrypt(content) { // content 要解密的内容,一般是题号,解密前的样子大概是 // M1T0A000N6j0I844N3j2c1y4M1T9Y8x8O5W9R8j0N6W1I9xdOcG5Qbx1N8zcIc4dM4z1I045M3j4Q240N7T1IjMTAwMDAwOQO0O0OO0O0O // 设计一个新的字符串用来当做解密后的字符串 let newStr = '' // 逐位循环去除混淆 for (let i = 0; i < content.length; i++) { // 42的意思是,用户ID的长度和csmpagerid的长度一共是42位,所以只需要去除42个字符即可 if (i >= 42) { // 循环次数大于等于42后,直接不再裁剪,而是拼接最后所有字符串 newStr += content.slice(2 * i) break } // 裁剪字符串,把第0 2 4 6 8 10 ··· 位的混淆字符删掉 newStr += content.slice(2 * i, 2 * i + 1) } // 将结果进行base64解码,至此解密完成 newStr = window.atob(newStr) // console.log(newStr) }
结语
官方更新是好事,但是也请一次更新到位,用最好的技术来应对作弊,或者能给学生们一份题库用来背,也能达到学习的目的。
希望世上再无形式主义!
ElementUI的row col布局在span超过24时仍并在一起的解决方案
首先要注意,row的type必须是flex
然后,直接在CSS里加一行:
.el-row { flex-wrap: wrap; }
完美解决。
ElementUI的select组件的option的label slot里的错位问题
标题很拗口,但是就是这个意思。
问题
本问题实际描述是,当使用select组件,并且为option使用了插槽之后,像官方里的那样使用style=”float: right;” 后 导致错位,如下图所示
右边的tag贴顶了,但是返回去看官方文档里的代码,却没有问题。
仔细看官方的例子,官方在插槽里用的是纯文本<span></span>,而el-tag也会自动转为span,但依然是样式错误。
在此省略一系列尝试之后,终于发现解决办法,特此记录,以便自己和其他有相同问题的朋友查阅。
解决
在el-tag的外层加一个空格即可解决问题,注意不是键盘上的space,而是
此时错位问题完美解决!
紫旭音乐解锁系统使用说明
待编辑。
从现在起,我是祖国绿色能源的使者
3年的准备和不懈努力,终于在2021圆梦。
博主现已加入国家电网,希望大家都能实现自己的梦想!
python3 sorted的一个坑
简单记录一下。
有段时间没碰python了,国网结束之后现在开新坑,被sorted坑了,特此记录。
有一个字典dict需要排序,但是排序后先是遇到排序无效,后是遍历时报错
遍历代码:
for key, value in params.items(): if value and not value == '' or value == 0: sign += str(key) + '=' + str(value) + '&'
检查后发现,是以下地方出问题
1、sorted需要赋值而不是像dict.sort一样直接就变了。忘了赋值。
2、dict在sorted之后变成了list,需要转回dict,直接dict(sorted_list)即可
唉,好久不写这么简单的代码都忘了,手生了。