Hexo新姿势!

Hexo新姿势!

图源:《三色Δ绘恋》第8幕 烟花大会

Hexo的插件真是个好东西!一开始部署博客的时候并没有太在意插件的问题,毕竟觉得博客主题自带的插件挺全面的,足够使用了。但是用久了总是会腻,就想着静态博客能不能整一些新操作,即使只是添加点小功能。于是就翻了翻 Hexo 的插件目录,挑了些比较有用的插件,拿出来做个总结,同时也是为了方便以后使用做的一个简单记录。

管理员界面

插件是hexo-admin,效果是一个类似CodiMD编辑页面的“管理控制台”,可以实时编辑预览Markdown文章,修改tag,从剪贴板粘贴图片到文章等操作。注意:仅用于hexo s状态下的博客实例。

文章加密

插件是hexo-blog-encrypt,使用前须在站点配置文件加入以下内容:

1
2
encrypt:
enable: true

随后在文章的开头部分加入password:字段设置密码即可。

同时,配合abstract:字段和message:字段可以设置对无密码人的提示信息。同时注意不要设置toc。

中英文自动空格

插件为hexo-filter-auto-spacingnpm install --save之后就可以用,无需手动设置。

插入行内JS/CSS/图片

插件为hexo-filter-inline-assets

站点设置:

1
2
3
inline_assets:
enabled: true
limit: 100000

随后引入:

1
2
<link rel="stylesheet" href="css/main.css?__inline=true">
<script src="myscript.js?__inline=true"></script>
阅读更多
【WIP】算法与数据结构回顾 - 广义表

【WIP】算法与数据结构回顾 - 广义表

图源:@Rella 《glow》 91882132

简述

广义表是线性表的一种推广。线性表要求表中元素拥有统一的类型,而广义表无此限制。需要注意的是,广义表和线性表长度一般认为是有限的,但广义表的深度可以是无限的(即递归表)。

广义表是一种数据结构。对广义表的常见操作包括:

  • 创建
  • 从字符串形式创建
  • 销毁
  • 复制
  • 取表头
  • 取表尾
  • 判空
  • 求长度
  • 求深度
  • 从表头插入
  • 从表头删除
  • 遍历

广义表是Lisp语言的基本数据结构。后文以Common Lisp和C++给出各基本操作的示例。

名词注解

长度

指广义表中的元素个数。举例如下:

例一

1
(a, b)

该表中共有两个元素:原子项a,原子项b。因而该表的长度为2。

例二

1
(a, (b, c))

该表中共有两个元素:原子项a,广义表(b, c)。因而该表的长度为2。

深度

指广义表中子表的嵌套层数。举例如下:

例一

1
(a, b)

该表中没有子表,因而该表的深度为1。

例二

1
(a, (b, c))

该表中嵌套了一个无嵌套的子表,因而该表的深度为2。

阅读更多

【持续更新】算法与数据结构回顾 - 大纲

由于高中接触过,大学本科期间又深入了些,以防忘记记一些注意事项、概念和模板之类的东西。

简单分类

数据结构

  • 一维:

    • 基础:数组(Array),链表(Linked list)

    • 高级:栈(Stack),队列(Queue),双端队列(Deque),集合(Set),映射(Map)等。

  • 二维:

    • 基础:树(Tree),图(Graph)

    • 高级:二叉搜索树(BST),堆(Heap),并查集(Disjoint Set),字典树(Trie)等。

  • 特殊结构:

    • 位运算(Bitwise),布隆过滤器(BloomFilter)

    • 缓存(LRU)

    • ……

  • ……

算法

  • 分支(if-else,switch)

  • 迭代(for,while)

  • 递归(分治法,回溯法等)

  • 搜索(深搜,广搜,A*等)

  • 动态规划

  • 二分查找

  • 贪心

  • 计算几何

  • ……

阅读更多
D^3CTF 2021 - Misc - easyQuantum WriteUp

D^3CTF 2021 - Misc - easyQuantum WriteUp

图源:@しぐれうい 《雨に恋う》 83975808

cap.pcapng用Wireshark打开,清晰可见TCP的三次握手和四次挥手:

image-20210225173442277

image-20210225173518052

于是需要仔细分析中间的数据传输过程。

注意到某些数据包内有“numpy”等字符串:

image-20210225173716886

于是想到可能是某种兼容Python的序列化方法。

又注意到有固定的头部数据:

image-20210225174044360

image-20210225174106286

而pickle序列化时也有固定的头部数据(协议版本4.0):

image-20210225174451338

于是尝试利用pickle进行反序列化。示例如下:

1
2
3
4
5
6
7
8
9
10
import pyshark
import pickle

cap = pyshark.FileCapture('cap.pcapng')
test_pack = cap[3]
data = test_pack.data.data.binary_value

deserialized = pickle.loads(data)

print(deserialized)
阅读更多
D^3CTF 2021 - Misc - Robust WriteUp

D^3CTF 2021 - Misc - Robust WriteUp

图源:@電瘋扇 《仓鼠松鼠》 91999586

“Robust”意为“鲁棒性”。

打开cap.pcapng,发现都是QUIC协议的数据包。结合提供的firefox.log(即使用firefox浏览器访问时生成的SSL Key Log)可以想到基于QUIC协议且强制使用TLS 1.3的HTTP3。

导入SSL Key Log:

image-20210301153942031

清晰可见HTTP3数据包。利用过滤器过滤出所有HTTP3数据包,然后从头查看:

1
http3

image-20210301154351049

可以明显看出,642号包之前的部分是在载入网页和JavaScript脚本。在第642号包处可以发现一个m3u8 playlist:

image-20210305163835730

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×