Hi there 👋

Welcome to my blog

Private Network Access update

在你访问一个 http 网站时你可能遇到了下面的错误。 The request client is not a secure context and the resource is in more-private address space local 这是 Chrome94 之后的版本提供的错误提示,因为你的浏览器从 一个源为 http 的网站访问了一个 私有地址 (不太准确)。这在 Chrome 之后默认是不允许的。1 Why? 为什么不允许?当前的浏览器都不限制 http 网站访问私有地址,这是一个安全隐患。 假设你有一个路由器,用户名密码都是默认的,然后访问了一个 http 的网站,那个网站是可以访问到路由器的,而你的路由器的用户名密码又是默认的,那么网站就可以登录到你的路由器了。 还有就是我们一般认为外界是访问不了本地网络的服务的,这样我们可能都设个弱口令。但是通过浏览器,网站就可以访问到本地网络,我们的本地服务就有被攻击的风险。 What? 什么情况下请求会被认为是Private Network Access? 网络地址分为 3 类(不讨论 IPv6)。详细资料可以从2获取 Local 127.0.0.0/8 Private 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16 Public 上面列出的之外的 ip 从上到下越来越开放, 一个源为 http 的请求的地址比目的地址更开放,那么这个请求就是私有网络访问。不外乎 3 种情况,Public->Private,Public->Local,Private->Local。 另一个比较特殊的是用代理会改变目的地址的 ip,通过代理获取的资源,被看作是从代理的 ip 那里获取的。(这里说的改变不是真的改变) How?...

September 27, 2021 Â· 1 min Â· 101 words Â· Me

Pointers in C/C++

C/C++ 的指针是什么?int* ? *(int*)var? 是什么鬼??? 指针就是地址,与其说指针,地址更容易理解。 指针变量的定义 一般的定义一个指针变量:数据类型* 变量名= new 数据类型(); int* i = new int(1); Sheep* sheep = new Sheep("mmm"); 一个指针变量是有类型的(这不是废话?)为什么要有类型?地址大小不都是一样的吗?一般是32位或64位啊。 但是如果指针变量没有类型的话用*运算符怎么取值?是取32位还是64位还是其他的?所以定义指针变量时声明的变量类型就是这个道理。 如果你学过了汇编,下面的例子可以帮助你理解,看例子1,这里将2020h移入一个内存空间,为什么要加word ptr? 2020h不就是2个字节吗,你再声明写入一个2字节的内存空间不是有点多余?这里看起来有点多余,但是如果有这样的汇编指令(例子2和3),他们的行为一样吗? 实际上是不一样的mov word ptr [addr],20h可以理解为mov word ptr [addr],0020h是实际上写入了2个字节的数据,例子3只写入了一个字节。再看例子4,如果不加word ptr你怎么区分例子2和例子3?(就是说你不知道你要写入多少数据) mov word ptr [addr],2020h ;例子1 mov word ptr [addr],20h ;例子2 mov byte ptr [addr],20h ;例子3 mov [addr],20h ;例子4 mov ax,[addr] ;例子5 可以运行、修改下面的汇编代码测试上面的说法。 DATA SEGMENT num dd 660F0655H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: mov ax,data mov ds,ax lea si,num mov word ptr [si],2020h mov ah,4ch int 21h CODE ENDS END START 指针的具体使用 代码 #include <iostream>using namespace std; int main() { int* i = new int(1); int* j = new int(2); int k = 0; int l = 0x64fe10; // 或者 &j /** * l为j变量的地址,理论上**l就可以取j的值 *l取j的内存地址,再取值。 * 实际上因为int类型不能直接取值,要转换成对应的数据类型的指针,再取值。 * 即*(int*)(*(int*)l) */ cout << "变量的内存地址" << endl; cout << "&i: " << &i << endl; cout << "&j: " << &j << endl; cout << "&k: " << &k << endl; cout << "&l: " << &l << endl << endl; cout << "变量的值" << endl; cout << "i: " << i << endl; cout << "j: " << j << endl; cout << "k: " << k << endl; cout << "l: " << l << endl << endl; cout << *i << endl; cout << "l的值转成\"int*\"类型后取值" << endl; cout << *(int*)l << "\thex: " << (int*)(*(int*)l) << endl; cout << "l的值指向的地址的值,再取前面的值指向的地址的值:" << *(int*)(*(int*)l) << endl << endl; return 0; } 运行结果 变量的内存地址 &i: 0x64fe18 &j: 0x64fe10 &k: 0x64fe0c &l: 0x64fe08 变量的值 i: 0x2632540 j: 0x2632560 k: 0 l: 6618640 1 l的值转成"int*"类型后取值 40052064 hex: 0x2632560 l的值指向的地址的值,再取前面的值指向的地址的值:2 变量的内存分布 地址的值可能有所不同...

June 14, 2021 Â· 2 min Â· 310 words Â· Me

mount-cifs-in-android

虽然 Google 在新版本的 android 中提供了新的访问文件的方式 (一些文件管理器可以访问 smb,其他应用程序访问这个文件管理器就可以间接的访问 smb 了), 但是并不是所有的应用程序都支持,所以直接挂载 smb 是一个比较好的解决办法(必须要 Root)。 前提条件 Android 系统获取 Root 权限 安装了 BusyBox(不确定) 折腾的结果 需要快速解决问题的只看这个就行了 执行下面的程序就可以挂载 smb 了,根据自己实际情况修改 host,user,pass,还有脚本末尾的挂载位置 host="192.168.1.5" user="sheep" pass="123456789" gid=9997 uid=9997 file_mode=0770 dir_mode=0770 # 挂载前要新建要挂载到的位置的文件夹 # //$host/main 是smb的文件夹 /.../emulated/0/{cifs/main} 是手机存储文件夹 su -mm -c mount -o user=$user,pass=$pass,rw,gid=$gid,uid=$uid,file_mode=$file_mode,dir_mode=$dir_mode -t cifs //$host/main /mnt/runtime/full/emulated/0/cifs/main 折腾的大致过程 首先打开终端,这里用的是 termux,理论上其他终端也可以。 然后输入下面的命令 su # 获取root权限 mkdir /mnt/sdcard/cifs # 挂载点 mount -o user=******,pass="*****" -t cifs //192.168.1.5/down /mnt/sdcard/cifs # 无密码 mount -t cifs -o user=guest //192....

January 28, 2021 Â· 1 min Â· 146 words Â· Me

学习Markdown

常用的 Markdown 语法,记录一些加强记忆。 删除线 ~~删除线~~ 删除线 斜体 _斜体_ 斜体 粗体 **粗体** 粗体 斜体粗体 **_斜体粗体_** 斜体粗体 水平分割线 --- 链接 <http://http://oldshensheep.com> http://http://oldshensheep.com [我是一个链接](http://oldshensheep.com) 我是一个链接 ![我的桌面图片](http://example.com/p.jpg)

December 6, 2020 Â· 1 min Â· 23 words Â· Me

一些重要的东西

总有一些东西对自己有很大的影响…… 他们的出现看起来很平凡,但是潜在的影响却是巨大的。 平凡而影响巨大 Music VOCALOID Android Phone Python 暂时这么多,可能还有其他的未想起来。 只是一个记录

December 5, 2020 Â· 1 min Â· 10 words Â· Me