百度一下应该就有了,单纯记录一下。
比如文件夹的右键菜单:
1 | [HKEY_CLASSES_ROOT\Directory\shell\<名称>] |
在文件夹里面右键背景的选单:[HKEY_CLASSES_ROOT\Directory\Background]
百度一下应该就有了,单纯记录一下。
比如文件夹的右键菜单:
1 | [HKEY_CLASSES_ROOT\Directory\shell\<名称>] |
在文件夹里面右键背景的选单:[HKEY_CLASSES_ROOT\Directory\Background]
正常来讲,当数据包到达Linux系统时,都会经过一个防火墙进行基于规则的匹配过滤,决定该数据包继续进行转发还是直接丢弃等。iptables
则负责担任这个防火墙的角色。自顶向下讲,iptables包含了若干个表(如raw
、mangle
、nat
表等等)和若干个chain
(如PREROUTING
、INPUT
等),组成一个2维的关系表:
表/Chain | PREROUTING |
INPUT |
FORWARD |
OUTPUT |
POSTROUTING |
---|---|---|---|---|---|
(路由决策) | ✓ | ||||
raw |
✓ | ✓ | |||
(连接跟踪) | ✓ | ✓ | |||
mangle |
✓ | ✓ | ✓ | ✓ | ✓ |
nat (DNAT) |
✓ | ✓ | |||
(路由决策) | ✓ | ✓ | |||
filter |
✓ | ✓ | ✓ | ||
security |
✓ | ✓ | ✓ | ||
nat (SNAT) |
✓ | ✓ |
不同的chain根据数据包的来源或者去向分别进行匹配过滤,内置的chain包含:
PREROUTING
:传入流量到达本地网络栈时触发(此时还没进行任何路由决策)INPUT
:传入数据包经过路由决策后,目的地址为本机时触发FORWARD
:传入数据包经过路由决策后,目的地址为其他主机时触发OUTPUT
:本地流量进入本地网络栈时触发POSTROUTING
:路由决策后的传出流量或转发流量将数据放置到网线前触发每个chain则包含若干个表对数据包进行过滤/修改,iptables的表大致可以分为以下几类:
filter
:是否允许数据包继续转发到目的地址(还是丢弃)的表nat
:进行源/目的地址转换(即网络地址转换,NAT)的表,源/目的地址转换分别对应上表的SNAT/DNATmangle
:更改数据包的IP头字段或者标记数据包的表raw
:将每个连接的数据流视为一个个独立数据包并对其进行标记的表(前三个表会受到iptables的连接跟踪机制影响,即只对连接的首个数据包起效)security
:跟SELinux有关,没接触过因此,传入到本机的流量会依次经过PREROUTING
下的raw
、mangle
、nat
表,然后再经过INPUT
下的mangle
、filter
、security
和nat
表。转发到其他主机的流量则经过PREROUTING
、FORWARD
和POSTROUTING
这3个chain,本地的传出流量则是OUTPUT
再到POSTROUTING
。
每个表可以通过iptables -t <表类型> -L
进行查看,如iptables -t nat -L
,不指定的情况下是filter
表。
iptables
的规则首先进行匹配,匹配成功则执行该规则的动作。匹配的规则是非常灵活的,可以根据协议类型、源/目的地址、连接状态等进行匹配。而动作目标(target
)则是规则触发时所执行的动作,由参数-j
决定,主要有两类目标:终止目标和非终止目标。iptables
会依次执行chain
中的规则,直到遇到终止目标时返回,遇到非终止目标则会继续执行相应的规则(如跳转到某些子chain
进行匹配)。
连接跟踪:将每个packet组成一系列的连接,并对其进行状态跟踪,状态有:
NEW
:首个valid的TCP/UDP packet到达且并未关联任何已有连接ESTABLISHED
:首个valid的反向响应RELATED
:不属于已有连接但与已有连接相关的packet,如FTP协议中除了控制连接外,还有一个传输数据的连接,该连接则属于RELATEDINVALID
:不属于已有连接且不能视为建立连接的packetUNTRACKED
:见下SNAT
、DNAT
:源/目的地址经NAT改变后的虚拟状态raw
表标记为NOTRACK
会跳过该机制(即状态设为UNTRACKED
)。
另外有一点值得一提的是POSTROUTING
的target MASQUERADE
,本质上相当于一个自动化的SNAT,不需要自己填写外部的IP地址,但相对地,该target则需要指定一个网卡。
上文提到了iptables的众多功能,但还有一点略过没讲的就是里面的路由决策部分。这一部分不是iptables的工作,而是ip route
的工作(注:route
命令与ip route
相似,但现在更偏向于使用ip route
)。
一般情况下,系统默认会有3个路由表,可以通过ip rule
进行查看:
local
:本机路由和广播的表,本地网络连接的路由将参考这个表main
:用于传输数据的路由表,对应网卡的网络设置default
:默认为空的路由表每个表中通常会包含若干个路由规则,可以通过ip route [show table <表名或表ID>]
查看,不过这部分没怎么深入了解,以后有时间再看了。
iptables
可以配合路由表一起使用,如在iptables的mangle
表中执行了MARK
的动作时,ip
可以根据该mark执行不同路由表下的路由规则。举个例子:在iptables中设置了iptables -t mangle -A FORWARD -i eth1 -j MARK --set-mark 1
以及在ip中设置了ip rule add fwmark 1 table 10
时,在iptables标记为1的数据包会执行ip中路由表10下的规则。
先说总结:某些资源搁浅在网盘上理论上是救不了的了,感觉写后台的好兄弟应该是有认真考虑过这个问题的。要么老老实实多备个硬盘,要么就加密上传。
事不过三,确实是被好几次“10分钟倒计时”折磨到了。把手机扔一边放个视频不是问题,问题是中间还得手动点个地方,还可能答几道题,被烦到了,于是有了此文。(适用于广东共青团,其他地方未知)
从电脑端的“12355青年之声”开始,用Fiddler抓包,如图:
第一次登录需要微信的授权,紫线以上都是微信的授权请求,而蓝线就是个人主页了,右下角可以看到纯文本形式的样子。不过没想到微信接入居然还是用http,真不怕中间人劫持吗(虽然也没啥好劫持就是了,最多拿拿个人资料)
微信授权的作用范围是tuanapi.12355.net
开头的请求,内部用Java的Session Cookie进行追踪,在点开始学习后,会有这么一个请求,然后跳转到最新一期的学习页面。(下面的youthstudy.12355.net/h5/
就是开始学习的页面了)
一波胡乱分析,保持登录状态无非就两个要素,一个是Session Cookie(微信授权给tuanapi请求的那个set-cookie),另外一个是url中的mid
参数了。万幸的是,这个接口只验证了mid,没检查cookie是否存在(即使没有cookie,mid合理时请求依然会返回成功,而mid没给的时候会提示bad request)。如果真要这个Session Cookie,可能还真一时半会不能解决,毕竟这需要伪造微信授权了,已经超出目前能力范围了……
那么mid
从何而来,Ctrl+F查找一番,之前一个请求被高亮标出了:
它包含了获取当前用户的所有数据,其中有一栏就是mid=xxxx
,直接搬过来用就好了。这个请求就要用到头疼的Session Cookie了。
在正常情况下,输入完来自……之后,就会跳转到当前最新的一期,这时候的请求是这样的,章节ID和url就拿到手了:
由于session cookie是在tuanapi.12355.net
域名下有效的,因此青年大学习(youthstudy.12355.net
开头的API请求)需要另外一个认证机制,这里它用的是token,就是上图红色框出来的那一段。它从何来,就在前面一点的一个post请求,post的内容就是前面用mid
请求的那个API返回的URL后面的那一坨sign
,token就在响应JSON的data
下的entity
里面,就叫token
。注意这里的header也有X-Litemall-IdentiFication
和X-Litemall-Token
,只不过token留空了而已。
获取完最新一期的数据后,反手就是POST保存学习的进度,内容很简单,就一个章节ID,前面获取最新章节的id
就是了(那个pid
不是,别搞混了): (真良心啊,是我我就写播完视频之后用一段js触发保存了,什么没保存?那麻烦请重新看一遍)
由于我们还要学完截个图,所以还得整个 假装已经 学完的页面出来,不过既然有URL,翻翻图片就好了,就这个以..../end.jpg
结尾的文件,然后自己写个网页,套点css,用微信打开,截个图走人就好了。
整个代码如下:
1 | #! /usr/bin/python3 |
有一个int类型的必要参数:--mid
,这个靠自己抓包了,爱莫能助。复制粘贴保存为xxx.py
然后用python xxx.py --mid xxx
差不多就这样了。其他参数--save_chapter_file
用于避免多次请求保存(虽然有没有重复请求其实都差不多,但是科技玩家还是低调一点比较好),--deploy_webpage_path
是生成的网页地址,这里默认是我apache2服务器的根目录下的youth_study.html
:https://cdn.zhouxuebin.club/youth_study.html