B1ue1nWh1te

云卷云舒,处之泰然。

安全微课自动刷课脚本的技术原理及使用教程

22 条评论 项目 Python 安全微课 B1ue1nWh1te
好久不用了,也许已经失效。


Sea_Open

本项目属于Sea_Open

技术原理

基本介绍

从零实现本程序需要掌握:
Python中阶知识、网页行为分析、GET与POST基本概念

分析我们手动看课的过程,[登录-进入课程-疯狂点击下一步-完成课程-重复操作直到完成]。
这是典型的流水线工作,使用程序完成是比较容易实现的。

首先想办法实现用自己的账号登录,其次分析网页判断我们看完一门课的逻辑,它的逻辑是当我们点开一门课就调用“开始学习”的函数,当我们看完这门课后又会调用“结束学习”的函数,这时它的数据库中就会记录我们已经看完了这门课,而中间那些点击下一步的过程本质上是无用的,它是通过判断从开始到结束的时间是否大于等于10秒来验证你确实看了这门课。

那么我们就可以编写程序模拟上述过程,实现自动化刷课了。





[2021夏季学期编程训练题三]解题思路及参考代码

3 条评论 WriteUp C++ 练习 B1ue1nWh1te

更新日志

[2021年7月26日] 更新了难度1和2的题解。

[2021年9月5日] 更新了难度3和4的题解(部分题目是从CSDN搬运的,因为这些题目表面复杂实际简单,写出来很费时间却无助于提升)。

[2021年9月5日] 训练四题解已更新,点此<传送门>进入。

前言

文章内容为作者个人学习心得,解题思路及参考代码不一定是最优的,如发现有不正确的地方或更优的解法,欢迎批评指正或讨论交流,联系方式可以在页面下方找到。

1.部分A+B

1

A, DA, B, DB = input().split()  #读入数据(字符串型)
PA = DA*A.count(DA)     #统计A中出现DA的次数,并将DA重复这么多次,得到PA
PB = DB*B.count(DB)     #统计B中出现DB的次数,并将DB重复这么多次,得到PB
PA = 0 if PA == '' else int(PA)     #若DA在A中一次都没有出现,则PA为0,否则转为整型
PB = 0 if PB == '' else int(PB)     #若DB在B中一次都没有出现,则PB为0,否则转为整型
print(PA + PB)      #输出PA与PB的和


[2021夏季学期编程训练题二]解题思路及参考代码

4 条评论 WriteUp C++ 练习 B1ue1nWh1te

更新日志

[2021年7月9日] 开始更新训练二题解,今天先上难度1的题,正好题目简单,可以让大家领会一下Python的优雅。之后的题目也都会有Python版本(因为太好用了,毕竟是小训练问题不大),同时考虑到兼顾的问题,也会向朋友们征集C++版本的代码进行发布。如果想要某题的C++代码也可以在下方评论区留言,我有时间就手敲。

[2021年7月11日] 更新了难度2的题目,之后参考代码都是Python的,无论有无基础,认真看都是能看懂的。

[2021年7月14日] 已更新所有题目的题解。

[2021年9月5日] 训练三题解已更新,点此<传送门>进入。

本文只有第7、12、21题使用了C++编写,若需其他题目的C++思路,点击这里查看森大的文章。

前言

文章内容为作者个人学习心得,解题思路及参考代码不一定是最优的,如发现有不正确的地方或更优的解法,欢迎批评指正或讨论交流,联系方式可以在页面下方找到。

1.字符串反转2

1

思路: 由于数据的条数不明,故使用while循环。处理方式就是将字符串以空格符进行分割得到由每个单词组成的列表,之后对列表进行逆序操作,最后用空格符将单词连成句子并输出。

try:
    while True:  # 持续循环
        sentence = input()
        temp = sentence.split(" ")  # 以空格符分割字符串得到单词列表
        temp.reverse()  # 将单词列表逆序
        sentence = " ".join(temp)  # 拼接成句子
        print(sentence)  # 输出逆序后的句子
except EOFError:  # 若已经到输入的结尾EOF则退出
    pass




[2021夏季学期编程训练题一]解题思路及参考代码

2 条评论 WriteUp C++ 练习 B1ue1nWh1te

更新日志

[2021年7月5日] 做了难度为1和2的所有题目,额外加一道难度为3的第2题(今天均为C++解法 明天难度3和4尝试用Python来写)

[2021年7月6日] 目前做了第6和21题(C++写法),第3、5、7题(Python写法),题目是做一部分更新一部分的。评论区已经打开,如果你有好的建议和想法欢迎留言。

[2021年7月7日] 今天更新了第4、9、10题,还剩第8题明天用Python解。

[2021年7月8日] 第8题详解已更新,C++写法。(Python写法读bin文件有点复杂,就改用C++了)至此,训练一所有题目已经AC。

[2021年7月9日] 训练二题解已更新,点此<传送门>进入。

前言

文章内容为作者个人学习心得,解题思路及参考代码不一定是最优的,如发现有不正确的地方或更优的解法,欢迎批评指正或讨论交流。

1.众数

1

思路:由于输入的数据是比较规范的,所以可以通过判断新输入的数和上一个输入的数是否相同来入手,如果相同则计数器加1,如果不同则代表上一个数已经统计完毕,将数和计数值存入两个数组中,它们的下标相互对应,清空计数器并对下一个数进行同样的操作。计数完成后遍历计数数组寻找最先出现的最大众数的下标,输出数字数组中这一下标位置存储的数即可。


关于Base64隐写的简要分析

0 条评论 知识 WriteUp CTF Base64隐写 B1ue1nWh1te

前言

最近在入门CTF时遇见了一道Misc题是关于Base64隐写的(文章后半部分会提到),刷新了我对Base64的认知,因此写下这篇文章来介绍一下关于Base64隐写的知识。

在介绍Base64隐写之前,我们得先了解Base64编码的原理。

Base64编码

Base64编码就是用64个字符(2的6次方),对二进制数据进行编码的方式。这64个字符包括大写字母(A-Z)、小写字母(a-z)、数字(0-9)以及+和/这两个符号。由于Base64编码只用到了64个字符,所以使用6个二进制位就可以把所有的字符表示出来,于是原来的1个字节对应8个二进制位在Base64编码中就变成了1个字节对应6个二进制位。

每个字符对应的数值见下表:
base64编码表