CTF | 2022 CISCN 初赛 WriteUp
引言 第十五届全国大学生信息安全竞赛创新实践能力赛(CISCN 2022) - 线上初赛 http://www.ciscn.cn 比赛地址: 知识问答地址(5月28日10:00开放): https://knowledge.ichunqiu.com/2022dxs 场景实操地址(5月28日10:00开放): https://ctf.ichunqiu.com/2022dxs 又是一年一度的国赛,今年比赛时间从 24h 修改成了 10h,属实比去年 CTF 高考轻松了不少(呜呜 今年国赛也是一堆 ddl 的夹缝中度过,不过不是和 Asuri 一起打啦(润啦),今年就和现在的校队师傅们组了个 xdlddw 战队来摸鱼。 (嗯,熊大佬带带我 这篇大部分来自 xdlddw 战队的 writeup,喵喵..
更多一日一技:Any与TypeVar,让IDE的自动补全更好用
相信有很多同学在写Python的时候,会使用类型标注来提高代码的可读性,同时还能帮助IDE实现自动补全。假设我们现在获得了一个对象,这个对象可能是列表也可能是生成器,我写一个函数,获取它的第一个元素。代码很简单:123456789101112131415161718192021222324252627282930313233from typing import Iteratorfrom contextlib import suppressclass People: def __init__(self, name): self.name = name def eat(self): print(f'{self.name}正在吃饭') def walk(self):..
更多《从论文到代码,学术研究的工程化落地实践》直播录屏
PyCon China Python Meetup 2021 原计划2021年线下举行。由于疫情不可抗力,被延期到了今天线上举办。我今天分享的题目是《从论文到代码,学术研究的工程化落地实践》。介绍了Gne的起源——如何从一篇论文,发展到现在能够每天入库100万篇新闻的通用爬虫系统的故事。在分享中,我说明了学术研究与工程实践有哪些差异,在理论落地中,我们将会遇到哪些挑战。为什么有些领域,学术研究非常成熟了,但目前市面上还没有一家公司在这些领域落地成功。请大家点击观看。我的分享从04:41:47开始。
更多HHKB and Key bindings
HHKB 自 2021 年 4 月中购入HHKB ,到目前为止已经使用了一年多,期间除了偶尔用用笔记本自带的键盘外,没碰过别的键盘,总的来说,我对这把键盘很满意。对我来说,键盘的手感这种类玄学说法在我这里不生效,HHKB对我来说就是一个完全够用的小个头键盘,比较合理的键位配置,舒服的移动距离,才是我喜欢它的原因。而我的快捷键配置也是随着我对HHKB的熟悉慢慢变化的,前半年我用的是有刻的键帽,后半年我开始尝试了无刻,然后就真香了。无刻虽然开始时比较困难,但是一旦熟悉,就只有好处了。 无刻的好处 可以让注意力集中,不会因为低头看键盘找键而分心(因为键盘上也没东西) 可以迫使自己对键盘进行记忆,我相信大部分人对于字母可以盲打,但是对于部分符号,就比较困难。无刻可以帮助你记忆这些快捷键的位置,因为没有眼睛的帮助..
更多常见排序算法的原理和实现
冒泡排序冒泡排序的原理很简单,就是每次都把当前无序序列中最大(或者最小)的元素移动到序列的开头(或者结尾),之后再对除该元素之外的剩余序列做同样的操作。当所有的元素都冒泡完毕之后,整个序列就会变得有序。冒泡排序的过程正如它的名字一般,每次都把序列中最大的元素移动到末尾(假设我们选择了这种规则),这种操作就好像水中的泡泡不断地从水中浮到水面一般。冒泡排序的实现如下,简单观察就可以知道它的时间复杂度为O(n2)123456def bubble_sort(arr): length = len(arr) for i in range(length - 1): for j in range(length - 1 - i): if arr[j] > arr[j +..
更多FreeBSD vs Linux:哪个开源操作系统更强大
本文是“攻玉计划”的一部分,翻译自 https://www.ateamsystems.com/tech-blog/freebsd-vs-linux-which-open-source-os-is-superior/FreeBSD 和 Linux,哪一个更强大?这个问题没那么简单。它们各有春秋,不能一概而论。来自我们 A-Team Systems 的专家们有数十年这两个系统的使用经验,所以,我们将详细阐述这两个系统的优势和劣势,供你选择最适合的系统。FreeBSD vs Linux:功能对比让我们比较一下这两个 Unix 系统的关键几个方面:操作系统完整性在这一点上,FreeBSD 更有优势。这是因为 Linux 实际上并不是一个完整的操作系统,而只是一个内核。这是一个很常见的误解,因为很多用户经常把 Li..
更多一日一技:如何从大量商品数据里面找到降价商品?
相信很多做爬虫的同学都会爬电商网站,每天爬一次,然后监控商品是否降价。如果你只监控一个商品,那么是否降价这非常容易判断,但如果你要找到这个网站里面所有降价的商品,那就非常麻烦了。如下图所示,是美国电商沃尔玛的全站商品数据:每个商品每天都会爬一次,一共有61w+条数据。里面有N个商品降价了,现在需要把这些降价的商品找出来。商品有十几万个,如果你分别找到每个商品的ID,然后用ID再找到这个商品每一天的数据,最后看它是否降价,这个工作量非常大,速度也会非常慢。Pandas内部使用了SIMB技术来对并行计算进行优化,我们需要尽量在不使用for循环的情况下,完成这个任务。为了简单起见,我们假设降价就是指今天比昨天的价格低,不考虑先涨价再降价的情况。要解决这个问题,我们需要使用DataFrame的pct_change..
更多一日一技:用Python做游戏有多简单
我520的公众号图片发了以后,有很多同学问我这个游戏是怎么做的,难不难。我就用两篇文章来介绍一下,如果使用Python做游戏。这个游戏是使用PyGame做的,贴图素材是从itch.io找的。我之前也没有用过PyGame,这次属于是现学现用,参考的教程是PyGame: A Primer on Game Programming in Python。用PyGame做游戏非常简单,我们今天第一篇文章,让大家实现一个可以在地图上移动的小猪。基本框架首先,无论你是做什么游戏,别管三七二十一,先把下面这段代码复制粘贴到你的编辑器里面。所有游戏都需要这几行代码:123456789101112131415import pygamedef main(): pygame.init() pygame.display...
更多在 Arch Linux 上编译小米平板 4 的 LineageOS 19.1
背景是我在 xda 上发现了一个很不错的小米平板 4 的 ROM:[ROM][12.1][clover] LineageOS 19 for Xiaomi Mi Pad 4 [UNOFFICIAL] (opens new window),刷入一把发现内核没有集成 WireGuard,从 defconfig: clover: Disable WireGuard support (opens new window) 看到似乎是作者主动禁用了 WireGuard 相关内容。咱也不知道为啥(不懂 Android 开发,更不懂系统相关的开发了),索性我把这一行的 Commit revert 掉,编译个新的好了。 本文记录了相关的踩坑过程(这是构建完成后的回顾记录,不能保证一定通过,但能减少一些坑了)。 如果你也..
更多轻量级任务队列RQ的简单使用
RQ (Redis Queue)是一个轻量级的Python任务队列,这里记录一下它的简单使用。首先安装RQ(这里使用的Python版本是3.8.0)pip install rq==1.10.1随后创建如下的文件.├── __init__.py├── jobs.py└── run.py其中__init__.py中通过连接redis-server创建了两个queue:default和queue_1123456from redis import Redisfrom rq import Queueredis_conn = Redis('127.0.0.1', db=0)rq_default_queue = Queue('default', connection=redis_conn)rq_queue_1 = Qu..
更多