duangsuse::Echo
#sysadmin Arch #linux 一次滚挂历程(差一点) *原因:很久没滚,GNOME mutter wm莫名有了键盘焦点的bug。 未使用 -Syu 以至于为一些旧的包 --ignore icu 的升级,谁知xml依赖它呢?另外还 --overwrite'jupyterlab/*' *差点滚挂: 不能 systemctl restart display-manager ; pacman -S 启动不了!而且我的tty1开的是支持中文的 cage kitty (虽然不会bootloop 🙉 并非btrfs…
#sysadmin Arch #linux 一次莫名其妙的boot卡第一屏
ps. #tool #github https://chromewebstore.google.com/detail/webdevauthn 比那些付费垃圾TOTP(sha1 6b) 厉害多了 😅
经过PE验证,
没法直接从其他发行版iso照搬
一看Arch liveCD 都1G多了 😅就选择Alpine,但手里的U盘不方便直接dd,需要 isolinux 启动(应该使用 https://www.ventoy.net/cn/index.html 的)
众所周知, GRUB 采用 1vm+2init 执行Linux,第一次init在内存盘,第二次明明也可以让grub传指针进来(squashfs,iso9660) 却莫名其妙要指定/proc/cmdline 去 find .iso 以便
Ubuntu 的是
因此最终你要对.iso 敲两次代码……
然后在毫无文档的init fallback 上挂载
然后OpenRC依然会挂,而且连bash都没有(不能用 arch-chroot https://wiki.archlinuxcn.org/wiki/Chroot ) 😅😅
替换一下 $esp/init*,这样就不卡第一屏
gnome-control-center 也坏了,草,是我的 nm-iwd 导致的
靠这些垃圾发行版还不如USB cdc上网
最后说个冷知识: /dev 树并不是在内核里定义好的
而是由init脚本(udev)创建,在切到第二个init(systemd) 后,看起来就像内核搞的一样 😄
devtmpfs 只是 -o size=固定的 tmpfs
/dev/null 这些统称为内存设备: https://github.com/torvalds/linux/blob/master/drivers/char/mem.c#L696
完整列表见 device.rst
Linux内核的启动参数,主要是 root=/dev/ram0 ,通过pivot_root的新方式都是在可脚本环境下挂载/的
initrd由多个 .cpio.gz 构成,真希望能把.iso 与挂载脚本也加进内存去啊😅😅 为啥非要从u盘
https://run.tournament.org.il/extracting-multi-layered-initramfs/
https://github.com/owenson/tiny-linux-bootloader/blob/master/bsect.asm#L112
http://boot.ipxe.org/ 网络启动
#learn
https://wiki.archlinuxcn.org/wiki/Arch_的启动流程#Getty https://wiki.archlinuxcn.org/wiki/块设备持久化命名
https://mickyching.github.io/kernel/linux-vfs-introduction.html
https://kernel-tour.org/fs/devtmpfs.html
https://github.com/0voice/linux_kernel_wiki/blob/main/文章/设备驱动/Linux操作系统学习之字符设备.md#三-字符设备基本构成
魔数解析 https://ty-chen.github.io/linux-kernel-0x400000/
https://uniondong.github.io/docs/linux/linux_driver_develop_basic/一文秒懂linux字符设备驱动/#21-cdev
https://github.com/torvalds/linux/blob/master/fs/binfmt_script.c
手写fs https://linux-kernel-labs.github.io/refs/heads/master/labs/device_drivers.html
ps. #rust 😅 macro 是教你这么玩的么,简直是对元编程的侮辱
一个KV表写成这B样,唉 https://github.com/torvalds/linux/blob/master/net/9p/error.c 都不好意思了
ps. #tool #github https://chromewebstore.google.com/detail/webdevauthn 比那些付费垃圾TOTP(sha1 6b) 厉害多了 😅
经过PE验证,
$esp/boot/initramfs-linux.img #约40M 莫名其妙成了空文件,必须重新 https://wiki.archlinuxcn.org/wiki/Mkinitcpio -g initr.img没法直接从其他发行版iso照搬
一看Arch liveCD 都1G多了 😅就选择Alpine,但手里的U盘不方便直接dd,需要 isolinux 启动(应该使用 https://www.ventoy.net/cn/index.html 的)
众所周知, GRUB 采用 1vm+2init 执行Linux,第一次init在内存盘,第二次明明也可以让grub传指针进来(squashfs,iso9660) 却莫名其妙要指定/proc/cmdline 去 find .iso 以便
mount /media/cdromUbuntu 的是
boot=casper iso-scan/filename=/a.iso 但Alpine不吃这一套因此最终你要对.iso 敲两次代码……
#grub.cfg
menuentry "find iso" {
find --set=iso a.iso
}
menuentry "boot $iso" {
loopback l0 $iso
linux (l0)/boot/vm*
initrd (l0)/boot/initr*
}
然后在毫无文档的init fallback 上挂载
mount /dev/sda2 /tmp #反正不能直接从GRUB里传/dev号,不通用,也不能直接 find -d1 /media ,需要逐个mount..
mount -t iso9660 -o loop /tmp/a.iso /media/cdrom #不能自动探测loop0/cdfs,全默认fat
fdisk -l #输出是正常的,然而mount不是!然后OpenRC依然会挂,而且连bash都没有(不能用 arch-chroot https://wiki.archlinuxcn.org/wiki/Chroot ) 😅😅
for p in sys dev; do mount --bind /$p /mnt/$p; done
chroot /mnt /bin/bash <<OK
mkinitcpio -g a.img
OK 替换一下 $esp/init*,这样就不卡第一屏
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Main.lookingGlass.toggle();'
gnome-control-center 也坏了,草,是我的 nm-iwd 导致的
靠这些垃圾发行版还不如USB cdc上网
最后说个冷知识: /dev 树并不是在内核里定义好的
而是由init脚本(udev)创建,在切到第二个init(systemd) 后,看起来就像内核搞的一样 😄
devtmpfs 只是 -o size=固定的 tmpfs
/dev/null 这些统称为内存设备: https://github.com/torvalds/linux/blob/master/drivers/char/mem.c#L696
完整列表见 device.rst
Linux内核的启动参数,主要是 root=/dev/ram0 ,通过pivot_root的新方式都是在可脚本环境下挂载/的
initrd由多个 .cpio.gz 构成,真希望能把.iso 与挂载脚本也加进内存去啊😅😅 为啥非要从u盘
https://run.tournament.org.il/extracting-multi-layered-initramfs/
https://github.com/owenson/tiny-linux-bootloader/blob/master/bsect.asm#L112
http://boot.ipxe.org/ 网络启动
#learn
https://wiki.archlinuxcn.org/wiki/Arch_的启动流程#Getty https://wiki.archlinuxcn.org/wiki/块设备持久化命名
https://mickyching.github.io/kernel/linux-vfs-introduction.html
https://kernel-tour.org/fs/devtmpfs.html
https://github.com/0voice/linux_kernel_wiki/blob/main/文章/设备驱动/Linux操作系统学习之字符设备.md#三-字符设备基本构成
魔数解析 https://ty-chen.github.io/linux-kernel-0x400000/
https://uniondong.github.io/docs/linux/linux_driver_develop_basic/一文秒懂linux字符设备驱动/#21-cdev
https://github.com/torvalds/linux/blob/master/fs/binfmt_script.c
#! 的由来手写fs https://linux-kernel-labs.github.io/refs/heads/master/labs/device_drivers.html
ps. #rust 😅 macro 是教你这么玩的么,简直是对元编程的侮辱
declare_err!(EPERM, "Operation not permitted.");.. 一个KV表写成这B样,唉 https://github.com/torvalds/linux/blob/master/net/9p/error.c 都不好意思了
Google
Chrome Web Store
Add new features to your browser and personalize your browsing experience.
Forwarded from Milkice's 我是高仿号我根本不懂中文
结合前两天折腾国产 Android ROM 的经历,随便聊聊 Android Webview 相关
在如今这个大部分 App 读作 native 实则写作 web 的年代,webview 逐渐成为非常关键的基础设施和黑白帽子们喜闻乐见的攻击面
AOSP 自带的 webview 都是编译 AOSP ROM 时同步编译的 Chromium webview 而来,由于是编译而来,因而该 webview 采用的都是厂商的签名,意味着如果系统不更新或是厂商不发布对应签名的 webview 更新版本,用户系统内置的 webview 将永远停在该版本;而在 Android 6 及之前版本,webview 的包名硬编码在了 framework-res.apk 之中,两者共同导致一旦厂商宣布停更,用户的 webview 也随之停更,直接导致 webview 版本碎片化
Google 后面也开始做事了,要求厂商内置Google webview(由 Google 签名并在 Play Store 上维护更新的 webview 版本),同时从 Android 7 开始在开发者选项中用户可自行切换 webview 实现,看似缓解了 webview 碎片化的问题,但是忘了最大又是最特色的市场——中国
很早很早之前在国内应用商店还是能比较方便地下载到 Chrome 及 webview,自从后面 App 开发者实名再加上备案机制隆重登场后,国内各大应用商店已经见不到这两者的踪影,系统自带的 webview 自然也是没人管没人更新了,到头来 webview 碎片化依旧严重,反正对于厂商来说,webview 版本老旧带来的安全隐患他们也根本不 care,合规才是第一要义
之前我还很反感一些国产 App 动不动自带个 webview,还会跟着酷安的教程强行把 App 改用系统 webview,但现在看来在 webview 碎片化如此严重的国产 Android ROM 市场上,App 厂商们这么做也无可厚非
当然我也不是为他们的行为洗地,实际上这些 App 自带的 webview 也是从远古 chromium 魔改而来,安全性不予评价
频道里的 Android 用家们还是定期检查下手机上的 webview 版本吧,可以戳 [这里] 查看是否有更新
题外话:考虑到用户如果同时安装了 Google webview 和 Chrome 就会导致系统里同时出现两个百兆级别的 webview,在 Android 10 后 Google 引入了 trichrome library,简而言之就是 Chrome 和 webview 直接共用一个 trichrome 内核避免双倍占用,在 Play 更新 Chrome 的同时会自动更新 trichrome
在如今这个大部分 App 读作 native 实则写作 web 的年代,webview 逐渐成为非常关键的基础设施和黑白帽子们喜闻乐见的攻击面
AOSP 自带的 webview 都是编译 AOSP ROM 时同步编译的 Chromium webview 而来,由于是编译而来,因而该 webview 采用的都是厂商的签名,意味着如果系统不更新或是厂商不发布对应签名的 webview 更新版本,用户系统内置的 webview 将永远停在该版本;而在 Android 6 及之前版本,webview 的包名硬编码在了 framework-res.apk 之中,两者共同导致一旦厂商宣布停更,用户的 webview 也随之停更,直接导致 webview 版本碎片化
Google 后面也开始做事了,要求厂商内置Google webview(由 Google 签名并在 Play Store 上维护更新的 webview 版本),同时从 Android 7 开始在开发者选项中用户可自行切换 webview 实现,看似缓解了 webview 碎片化的问题,但是忘了最大又是最特色的市场——中国
很早很早之前在国内应用商店还是能比较方便地下载到 Chrome 及 webview,自从后面 App 开发者实名再加上备案机制隆重登场后,国内各大应用商店已经见不到这两者的踪影,系统自带的 webview 自然也是没人管没人更新了,到头来 webview 碎片化依旧严重,反正对于厂商来说,webview 版本老旧带来的安全隐患他们也根本不 care,合规才是第一要义
之前我还很反感一些国产 App 动不动自带个 webview,还会跟着酷安的教程强行把 App 改用系统 webview,但现在看来在 webview 碎片化如此严重的国产 Android ROM 市场上,App 厂商们这么做也无可厚非
当然我也不是为他们的行为洗地,实际上这些 App 自带的 webview 也是从远古 chromium 魔改而来,安全性不予评价
频道里的 Android 用家们还是定期检查下手机上的 webview 版本吧,可以戳 [这里] 查看是否有更新
题外话:考虑到用户如果同时安装了 Google webview 和 Chrome 就会导致系统里同时出现两个百兆级别的 webview,在 Android 10 后 Google 引入了 trichrome library,简而言之就是 Chrome 和 webview 直接共用一个 trichrome 内核避免双倍占用,在 Play 更新 Chrome 的同时会自动更新 trichrome
#learn #cpp Redis 作者展示 https://yabzhang.github.io/posts/project/reading_smallchat/
作为一个展示样例,这端代码展示了如何处理内存管理、网络套接字的使用、多路复用、客户端连接的管理、消息和指令的处理等逻辑。除去注释只有短短两百多行,用来学习和理解服务端编程已经足够了 ———— 麻雀虽小五脏俱全。
>晚上逛 Github 发现个好用的项目(替代sftp分发),可以用于传输文本和二进制流,支持 curl 和浏览器端,可选 E2EE,支持自建中转服务器,用于在几台服务器之间临时传文件很方便
https://github.com/nwtgck/piping-server
>piping server的衍生项目,配合piping server可以实现用adb远程控制Android设备,前端功能相当丰富,包括文件管理/终端/scrcpy屏幕共享
Demo:https://piping-adb.nwtgck.org/
项目:https://github.com/nwtgck/piping-adb-web
该项目依赖的上游透过WebUSB让用户可以在网页端通过adb管理Android设备 https://app.tangoapp.dev/guide
#rust #meme https://github.com/lvkv/whenfs 通过base64存储图片,类似 youtubefs
#cg https://swiftcafe.io/2016/10/29/pdf
https://github.com/Losses/pdf-postprocess
用 headless chromium 把 svg 转成 pdf,这样样式就全都对了。
Typst 编译到 PDF 就是走的 svg,谁愿意写 postscript
作为一个展示样例,这端代码展示了如何处理内存管理、网络套接字的使用、多路复用、客户端连接的管理、消息和指令的处理等逻辑。除去注释只有短短两百多行,用来学习和理解服务端编程已经足够了 ———— 麻雀虽小五脏俱全。
>晚上逛 Github 发现个好用的项目(替代sftp分发),可以用于传输文本和二进制流,支持 curl 和浏览器端,可选 E2EE,支持自建中转服务器,用于在几台服务器之间临时传文件很方便
https://github.com/nwtgck/piping-server
>piping server的衍生项目,配合piping server可以实现用adb远程控制Android设备,前端功能相当丰富,包括文件管理/终端/scrcpy屏幕共享
Demo:https://piping-adb.nwtgck.org/
项目:https://github.com/nwtgck/piping-adb-web
该项目依赖的上游透过WebUSB让用户可以在网页端通过adb管理Android设备 https://app.tangoapp.dev/guide
#rust #meme https://github.com/lvkv/whenfs 通过base64存储图片,类似 youtubefs
#cg https://swiftcafe.io/2016/10/29/pdf
https://github.com/Losses/pdf-postprocess
用 headless chromium 把 svg 转成 pdf,这样样式就全都对了。
Typst 编译到 PDF 就是走的 svg,谁愿意写 postscript
yabzhang.github.io
smallchat 源码阅读
smallchat1 是 redis 作者 antirez 所写的一个聊天室的小程序;代码短小精悍,很有意思。据说作者以此例向前端朋友展示系统编程的趣味 😄 2~
这里记录下阅读源码所获。
首先从 main 开始:
/* The main() function implements the main chat logic: * 1. Accept new clients connections if any. * 2. Check if any client sent us some new message.…
这里记录下阅读源码所获。
首先从 main 开始:
/* The main() function implements the main chat logic: * 1. Accept new clients connections if any. * 2. Check if any client sent us some new message.…
Forwarded from MiaoTony's Box (MiaoTony 🐱)
#今天又看了啥 #security #Windows
搜狗输入法0day,绕过锁屏有手就行
搜狗输入法可绕过Window10锁屏,该方法目前仍然有效,且Win11复现成功,有些输入法存在“游戏中心”,有些输入法不存在,应该是版本问题。
https://mp.weixin.qq.com/s/naqT_o6Q-DHU9f6pJffAbg
TL;DR
在锁屏界面切换搜狗输入法,打开虚拟键盘,右键搜狗 logo 进入游戏中心,任意打开游戏弹出网页 QQ 登录界面,使用 QQ 下载拉起资源管理器,cmd 启动!甚至还是 system 权限!
震惊!Windows 2000 锁屏绕过又回来了!
搜狗输入法0day,绕过锁屏有手就行
搜狗输入法可绕过Window10锁屏,该方法目前仍然有效,且Win11复现成功,有些输入法存在“游戏中心”,有些输入法不存在,应该是版本问题。
https://mp.weixin.qq.com/s/naqT_o6Q-DHU9f6pJffAbg
TL;DR
在锁屏界面切换搜狗输入法,打开虚拟键盘,右键搜狗 logo 进入游戏中心,任意打开游戏弹出网页 QQ 登录界面,使用 QQ 下载拉起资源管理器,cmd 启动!甚至还是 system 权限!
震惊!Windows 2000 锁屏绕过又回来了!
#tool kotlin 命令加速器 https://gist.github.com/duangsuse/50937b30cbf24a6be0eb69da3a7231b3
灵感
结果 😅 实现监听就花了大篇,
在使用rePTY恢复REPL的标准流时,又发现好像和后台开个终端没区别
因此把焦点放在 main() 的static环境的缓存上,基于pipe实现请求响应
反射的调用省略,总之是单类应用
因为一些莫名其妙的上游bug花了一整天
./catdo bash #export JAVACMD=$PWD/catdo
time kotlin -e 1+1
2
VM .: jstack 331655
2
real 0m2.769s
real 0m3.121s
time kotlin a.main.kts
real 0m1.176s
real 0m1.397s
灵感
>make a mainClass invoker(argv[0]=fqName) in jshell, poll on fqName.txt(NUL-splitted, prepend argv[1:])
if exists, just rewrite fqName.txt, then run reptyr $(lsof -t fqName.txt)
sudo sysctl -w kernel.yama.ptrace_scope=0
use newWatchService to impl watch(Map<Str, Runnable>){}, minimal, in jshell
结果 😅 实现监听就花了大篇,
void main() {
watch(mk(c->{
c.put("a.txt", () -> System.out.println("File modified"));
}));
} 在使用rePTY恢复REPL的标准流时,又发现好像和后台开个终端没区别
因此把焦点放在 main() 的static环境的缓存上,基于pipe实现请求响应
反射的调用省略,总之是单类应用
因为一些莫名其妙的上游bug花了一整天
echo=lambda x:x[::-1]
def bind(f, u=open("a.txt",'wb+')):
while True:
while (ln:=u.read())==b'': pass # see also for fd,ev in select.poll():
u.seek(0); u.truncate(0)
u.write(f(ln)); u.flush() #echo >>
bind(echo)
#net 已注册2年 https://wojs.org/ by hostinger
wojs.org
币李李币(゜-゜)つ干杯~ - bililibi!
Forwarded from 科技圈🎗在花频道📮
博客园已收到赞助 对方称初学编程时受到博客园的帮助
博客园在8月1日发布针对自身网站的救援行动后,次日就收到了河南图奕网络科技有限公司的赞助。对方表示,其出手相救的理由自然而不简单:从我刚学编程的时候博客园就给我很大很大帮助。
更加可贵的是,河南图奕网络自己当前并不宽裕。
博客园
博客园在8月1日发布针对自身网站的救援行动后,次日就收到了河南图奕网络科技有限公司的赞助。对方表示,其出手相救的理由自然而不简单:从我刚学编程的时候博客园就给我很大很大帮助。
更加可贵的是,河南图奕网络自己当前并不宽裕。
博客园
👍2
#os #wasm #backend https://www.bilibili.com/video/BV1oE421w7Vt
猜猜为什么jvm里没有malloc这种概念,只提供了 byte[N]?
因为C语言允许从随机的整数构造指针, 导致每次读写数据结构都像SQL注入一样不安全,各种能越过内核鉴权
C还没有标准的序列化手段(除了 criu.org 按mmap来封送),一个Rc归还内存被cpp弄出魔法的效果
哪怕send(一个bytes[]) 到tcp都要序列化,而C对此的实现,居然是\0结尾字符串😅
不过呢,C struct是和二进制文件对应最好的,指针紧随数据,免重定向就类似于序列化了,但是C没有利用好这个等价关系,那至少需要sizeof的值
这么弱智的数据模型,所以只能用一些4K page实现虚拟地址了,越界就要中断,约等于内核vma就是虚拟机,哈哈。把一个越界检查和union多型整成了页表映射那么臃肿
WASM的JIT就完全不需要这种概念,app和内核驱动一样安全,线程和协程一样轻量
unikernel.org 还不是能跑起来
猜猜为什么jvm里没有malloc这种概念,只提供了 byte[N]?
因为C语言允许从随机的整数构造指针, 导致每次读写数据结构都像SQL注入一样不安全,各种能越过内核鉴权
C还没有标准的序列化手段(除了 criu.org 按mmap来封送),一个Rc归还内存被cpp弄出魔法的效果
哪怕send(一个bytes[]) 到tcp都要序列化,而C对此的实现,居然是\0结尾字符串😅
不过呢,C struct是和二进制文件对应最好的,指针紧随数据,免重定向就类似于序列化了,但是C没有利用好这个等价关系,那至少需要sizeof的值
这么弱智的数据模型,所以只能用一些4K page实现虚拟地址了,越界就要中断,约等于内核vma就是虚拟机,哈哈。把一个越界检查和union多型整成了页表映射那么臃肿
WASM的JIT就完全不需要这种概念,app和内核驱动一样安全,线程和协程一样轻量
unikernel.org 还不是能跑起来
Bilibili
虚拟内存是什么? Lunaix内部设计之再论虚拟内存(上)_哔哩哔哩_bilibili
欢迎来到系列《Lunaix内部设计》的第一期视频。这个系列不算是一个全新的系列,相反,这是对我的另一个系列:《从零自制操作系统》的拓展与延伸,起到一个互补的作用。“再论虚拟内存” - 是该系列的第一集内容,主要是带大家走进 Lunaix 内核中虚拟内存模型的设计,以及背后的动机和理论。而本视频是上半部分,我们将会从头回顾虚拟内存的概念,阐述我们的动机,以及介绍对页表层级的抽象。LunaixOS源代, 视频播放量 2999、弹幕量 1、点赞数 179、投硬币枚数 74、收藏人数 147、转发人数 6, 视频作者…
👍1
🔮 奇闻异录 与 沙雕时刻 meme collection
#ChatGPT #GPT4 GPT4 的发布会 www.youtube.com/watch?v=outcGtbnMuQ 全程无尿点。但如果要挑出一段精华,我觉得是下面摘出来的这两分钟时间,演示的是: 1. 在草稿本上用纸笔画出一个非常粗糙的草图 2. 拍照告诉 GPT 我要做一个网站长这样,给我生成网站代码 3. 网站做完,总共历时十秒钟左右 source from weibo
YouTube
淘汰Websim! Claude Artifact:将截图变成可执行的应用程序|支持源代码下载|无代码开发|免费AI工具|
在本视频中,我分享了用Claude Artifact功能,通过无代码的方式,分别开发了应用,游戏和网页的过程!真正颠覆性的AI开发工具!支持源代码下载进行二次开发! #ai工具 #免费ai #claude #artifacts #websim #无代码开发
简中互联网废物大赏
Photo
https://m.youtube.com/watch?v=fq0HQtXrDiU #china 退休
令人心碎的 #facts
2050年,为了维持一个最底线的赡养率(例如税后工资7k者不会跌到4k)
假设经济、出生率、养老金不出巨大的恶化,特供体系没有膨胀,能实现50%工资替代率的老有所养
近两年,男女每年都要延迟几个月退休。男2 女4
起码都到65退休,这样才不会对年轻人和市场消费造成负担
但,延迟退休其实还有个潜在的问题,就是影响年轻人就业和上升空间
一方面是年轻人找不到工作,另一方面则是老年人不能退休
2:40 可视化对比欧美日韩,可怕的年龄分布图
所以“计划生育是中共作的最大的恶,而且将持续百年”
令人心碎的 #facts
2050年,为了维持一个最底线的赡养率(例如税后工资7k者不会跌到4k)
假设经济、出生率、养老金不出巨大的恶化,特供体系没有膨胀,能实现50%工资替代率的老有所养
近两年,男女每年都要延迟几个月退休。男2 女4
起码都到65退休,这样才不会对年轻人和市场消费造成负担
但,延迟退休其实还有个潜在的问题,就是影响年轻人就业和上升空间
一方面是年轻人找不到工作,另一方面则是老年人不能退休
2:40 可视化对比欧美日韩,可怕的年龄分布图
所以“计划生育是中共作的最大的恶,而且将持续百年”
YouTube
方脸说:延迟退休来袭,我们这代人什么时候能退休?从数据分析,当代人可能得退休年龄,65岁或许不是极限,70退休才有可能是我们的常态,最苦一代获将来袭!
00:00 延迟退休并非空穴来风
02:12 人口结构-赡养率问题
05:57 中国赡养率模拟-70岁退休可能才是出路
10:45 延迟退休可能得方式
17:12 如何看待延迟退休?
02:12 人口结构-赡养率问题
05:57 中国赡养率模拟-70岁退休可能才是出路
10:45 延迟退休可能得方式
17:12 如何看待延迟退休?
Forwarded from Hacker News (yahnc_bot)
WordStar 7, the last ever DOS version, is re-released for free https://www.theregister.com/2024/08/06/wordstar_7_the_last_ever/
The Register
WordStar 7, the last ever DOS version, is re-released for free
The preferred tool of Arthur C Clarke, Anne Rice and George R R Martin
#security 回顾 regreSSHion: RCE in OpenSSH server<9.8
https://www.bilibili.com/video/BV11U411U78q
这一漏洞的描述听起来像是 WannaCry(SMB) 和 Log4Shell 级别的。实际上,该漏洞的利用不太可能。
2014年,OpenSSL加密库中的一个缓冲区溢出漏洞被公开。该缺陷被称为“心脏出血”,这次是它的回归
由glibc free() 数据竞争,导致heap链表 use-after-free 而使得glibc __free_hook 指向黑客在待连接的120s(异步 sigalarm)分配的地址
要利用这一漏洞,攻击者平均需要在没有firewall,fail2ban和Nx的 x86 ASLR 上进行约 10,000 次尝试,每台服务器需要 6 到 8 小时。
漏洞利用需要精心构造的heap链表布局,并发登录ssh以尝试fake key-exchange
https://www.offsec.com/blog/regresshion-exploit-cve-2024-6387/
管理员可以将登录超时设置为零(在 etc/sshd_config 中设置 LoginGraceTime 0)
🤓☝️ https://www.qualys.com/2024/07/01/cve-2024-6387/regresshion.txt
#learn
事实上: 只有基于更慢的ROP才能实现基于 heap 的RCE。默认设置下,
地址空间布局随机化 (ASLR)使注入代码的攻击在64位平台上变得几乎不可能成功,因为所有函数的内存地址都是随机的。
在32位系统中,ASLR能够提供部分防护,因为只有16位地址可供用于随机化,这可以用暴力攻击在很少的几分钟内破解。 这也是为何所有PoC都是针对x86
实现今天唯一可用的ROP(2010 年Adobe Reader被曝出了一个严重的漏洞,攻击者可以通过伪造恶意的 PDF RCE),需要在C语言的缓冲区溢出上,达成这三件事情:
找到system函数地址
找到字符串“/bin/sh”地址。
system函数参数应该放在栈的什么位置,并且不能被canary发现栈已经溢出。
#dalao #blog https://mudongliang.github.io/
https://www.bilibili.com/video/BV11U411U78q
这一漏洞的描述听起来像是 WannaCry(SMB) 和 Log4Shell 级别的。实际上,该漏洞的利用不太可能。
2014年,OpenSSL加密库中的一个缓冲区溢出漏洞被公开。该缺陷被称为“心脏出血”,这次是它的回归
由glibc free() 数据竞争,导致heap链表 use-after-free 而使得glibc __free_hook 指向黑客在待连接的120s(异步 sigalarm)分配的地址
要利用这一漏洞,攻击者平均需要在没有firewall,fail2ban和Nx的 x86 ASLR 上进行约 10,000 次尝试,每台服务器需要 6 到 8 小时。
漏洞利用需要精心构造的heap链表布局,并发登录ssh以尝试fake key-exchange
https://www.offsec.com/blog/regresshion-exploit-cve-2024-6387/
管理员可以将登录超时设置为零(在 etc/sshd_config 中设置 LoginGraceTime 0)
🤓☝️ https://www.qualys.com/2024/07/01/cve-2024-6387/regresshion.txt
#learn
事实上: 只有基于更慢的ROP才能实现基于 heap 的RCE。默认设置下,
该漏洞的利用根本是不可能的,x64缓冲区注入与SQL注入一样被 #linux 等内核修正了,对它的研究可以理解为另一种 #OI ,并不能对线上系统产生威胁地址空间布局随机化 (ASLR)使注入代码的攻击在64位平台上变得几乎不可能成功,因为所有函数的内存地址都是随机的。
在32位系统中,ASLR能够提供部分防护,因为只有16位地址可供用于随机化,这可以用暴力攻击在很少的几分钟内破解。 这也是为何所有PoC都是针对x86
实现今天唯一可用的ROP(2010 年Adobe Reader被曝出了一个严重的漏洞,攻击者可以通过伪造恶意的 PDF RCE),需要在C语言的缓冲区溢出上,达成这三件事情:
找到system函数地址
找到字符串“/bin/sh”地址。
system函数参数应该放在栈的什么位置,并且不能被canary发现栈已经溢出。
#dalao #blog https://mudongliang.github.io/
Bilibili
OpenSSH服务器漏洞的核心技术解释 - regreSSHion - CVE-2024-6387_哔哩哔哩_bilibili
OpenSSH服务器漏洞的核心技术解释 - regreSSHion - CVE-2024-6387, 视频播放量 23851、弹幕量 37、点赞数 1784、投硬币枚数 367、收藏人数 1260、转发人数 98, 视频作者 技术蛋老师, 作者简介 这个人很懒,只留下了知识。,相关视频:SSH协议握手核心过程,XSS网络攻击 - 原理,类型和实践,OpenSSH核心操作 | GitHub SSH连接,TCP三次握手和四次挥手,SQL注入攻击原理,方法和类型,提醒大家升级OpenSSH,高风险的漏洞,漏洞编号CVE…
duangsuse::Echo
#security 回顾 regreSSHion: RCE in OpenSSH server<9.8 https://www.bilibili.com/video/BV11U411U78q 这一漏洞的描述听起来像是 WannaCry(SMB) 和 Log4Shell 级别的。实际上,该漏洞的利用不太可能。 2014年,OpenSSL加密库中的一个缓冲区溢出漏洞被公开。该缺陷被称为“心脏出血”,这次是它的回归 由glibc free() 数据竞争,导致heap链表 use-after-free 而使得glibc…
#os #design 作为编程语言爱好者,谈谈RCE这些bug的根源吧: 程序员没做错, Dennis Ritchie 们错了 😅
为什么“溢出”基本上是C的专属呢?因为老冯的时代,“汇编器是在浪费 CPU cycle” 这种反人性的设计,被推崇为《程序员的自我修养》 (x86汇编的应用与骇客少,不讨论单片机界的情况) #recommend
就像JS人不懂
初学C的人很奇怪为啥 1+1 可以而 "a"+"b" 却不行(还必须 strcat 或 sprintf), 'a'+'a' 更是居然==194!厘清
不过,随着对 x=1; (X==1) 以及从0开始数
但我们先回到"基础类型"。C的 struct,union,[] 是有严重安全隐患的,「这只是性能的牺牲品」?
#rust 已经告诉我们 redox-os.org/ 这样复杂的系统也能默认内存安全, Python 则证明了仅仅靠运算符重载、Rc<T> 这样幼稚的引用计数,就能组装出了不起的AI应用
struct{} 的问题是“地址相关性”。就为了与x86的一些硬件地址对接(1% cases),C让一切数据类型都与 bytes(char*) 直接对应,以便映射到某个内存页位置、通过
(alloc相当于单实例版的现代
这就造成了 memleak, segfault(空指针和类型错误的cast, 例如把小结构cast成大结构) 甚至 "更适合C语言体制的SQL注入"
这里说的,就是子类型里的
并且,哪怕你能够通过一些信息压缩掉int Tag ,用
比如,为什么ES6要推荐一个“凑字数”的 const x= 而不是 let+let mut x? 为啥 Java 到处都是 public final 🔘 Str wtf() ?
你可能是第一次意识到“subtyping” 保存着type tag,但这些真的是编程里的基础(你设计任何"前后端"时都应该考虑的),或许,只是在像XML那样复杂的上层框架里这并不直观。
C99(ISO9899,P61)甚至专门定义了“退化到指针” 和'\0'结尾字符串的行为-它还好意思把这当特性! gcc 实现了常量区间的越界检查,这是说谎:
gcc的"静态检查"只是对stdlib的缺陷涂脂抹粉,并没有消除过度追求低内存,所带来的隐患
并且,只要区分定义
连Ruby 💎和WebKit的作者们都知道可以这样("污点值" taint 和 TrustedTypes),今天有人称其为 contract{}.. 也行吧
然而,即便有了OS的ASLR/Nx保护,stack/heap overflow 今天还是个问题。如果你写
所以
与for和if 对应的数据结构!!它们的重要性无需多言: 如果数据能随意纂改,fn{} 这些代码块、甚至只是算式 的正确语意就无法得到保障。
至少你还能庆幸,与 main(..) 等调用对应的
OOP只不过是把C的病态类型修了一修,它自己还有“读json都要搞反射,但Class对象被认为性能低”所造成的一堆问题
log4j 们是把bug的产生从“代码的语法” “内存结构的语法”往上提高了一层,并没有消灭问题。 能消灭问题的,恐怕只有少写代码,多思考吧。
从某种意义上,缓冲区溢出、反射低性能、线程(ret2调用栈)与 async(ret2回应函数)间的鸿沟,都是『两种语言问题』,即C,Java,JS 这样的语言为了解决框架们的需求
它们原来的心智模型,无法跨越 编译期/运行期、 堆内存/栈内存/json、本机/远程、可信数据/需验证数据,甚至仅仅是 正确/错误 (Object/Error和null) 而一致地存在,就产生了许多需要学习的class libs,以及与它们的宣传不相称的复杂性和log4j那种bug
我最近在设计的逻辑式编程范式,就是为了从心智模型的层面统一这所有的『两种语言」。 祝我成功吧 🌚
实际上呢, linux 这些内核所提供的虚拟内存段(vma https://t.me/dsuse/19844) 实现,通过把内存解释为对象图,这种4K页隔离也完全能删掉, ELF, SHM, CRIU.org 那些高深的结构也就会和普通的JVM对象(对比下"class" PATH?)、多线程、序列化 一样朴素
因为C会和WASM那样安全,没有驱动程序的“引用”,就不能越过内核调用rm -rf 那种事情(yinwang 2013)。 所以fd,socketfd 这些“RPC对象号” 也就不必存在; 线程就只是让while(1) 每隔几千次暂停1次的协程,调度器、主循环evpoll 也可以消失。
用 eBPF 的人都知道我在说什么,现在有足够多的中间表示比x86指令集更优秀,甚至更简单,完全能从汇编上来做“虚拟化”
学内核本质上就是学"4件套",而这4项任何一个普通极客都有所认识: 👀
byte format: ELF,EXT4,boot process(cpio), .. 这是用户最关心的: exe,so,apk 互不兼容,尽管他们的系统“一样高级”,C盘D盘容量一大一小,哪怕你的SSD是512G的
net: AP, Bluetooth Peering, tcp实现, 自然需要多线程和管道, 要考虑"异步" 也就是回调地狱的解决;最重要的是,Web的API和格式(FTP..)是超越运行时差异的存在,它比加了私货的SDK文档更能体现问题的本质
usb: hid键鼠触摇, hdi显示与摄像, 声音, ACPI SMART, 各种传感器.. 或许它们的“设备总线”不是USB,但我们只关心硬件的性能 而非接口!
vm:
不过编程本身是无关于计算机的,就像天文无关于望远镜。
“编程赞歌是组合搭配的赞歌,框架伟大是拆分置换的伟大。代码是流动的数据,内存是暂停的程序——感想”
为什么“溢出”基本上是C的专属呢?因为老冯的时代,“汇编器是在浪费 CPU cycle” 这种反人性的设计,被推崇为《程序员的自我修养》 (x86汇编的应用与骇客少,不讨论单片机界的情况) #recommend
就像JS人不懂
1+"1", 1-"1" 为啥会不同,初学C的人很奇怪为啥 1+1 可以而 "a"+"b" 却不行(还必须 strcat 或 sprintf), 'a'+'a' 更是居然==194!厘清
return struct{} 与*alloc、class Reader{}与UTF16编码,以及它们在C++的平替,就需要更久了不过,随着对 x=1; (X==1) 以及从0开始数
for(i=0) use(a[i]) 的区分,常量级语法和"基础类型" 就不再是问题,转而学习函数对象、链表、fopen()、KV 这些有语意的类型了但我们先回到"基础类型"。C的 struct,union,[] 是有严重安全隐患的,「这只是性能的牺牲品」?
#rust 已经告诉我们 redox-os.org/ 这样复杂的系统也能默认内存安全, Python 则证明了仅仅靠运算符重载、Rc<T> 这样幼稚的引用计数,就能组装出了不起的AI应用
struct{} 的问题是“地址相关性”。就为了与x86的一些硬件地址对接(1% cases),C让一切数据类型都与 bytes(char*) 直接对应,以便映射到某个内存页位置、通过
malloc(N) free(obj) 链表来瓜分glibc mmap(brk)到的进程内存(alloc相当于单实例版的现代
memScoped{} 即 zig ArenaAllocator 。C的"弱类型"设计错误有多深远?直到2004 Linux 2.6.8 才支持Nx 即heap默认不可执行的"保护"..)这就造成了 memleak, segfault(空指针和类型错误的cast, 例如把小结构cast成大结构) 甚至 "更适合C语言体制的SQL注入"
这里说的,就是子类型里的
Animal() as Duck, Rect(1,2) as Square ,要么是表格验证的语意错误,要么从语法上就不该对struct Animal {
enum Tag{Duck,Cat}
union v {
struct Duck{int beck} //实现上会移到外部且把继承的项前置(便于在Animal{}外扩充),以及有virtual vs final 的虚表双指针,顺便用于实现闭包
}
}并且,哪怕你能够通过一些信息压缩掉int Tag ,用
rawtypeof<Animal> xx; xx(1).beck 也比默认强转好太多了。 "默认行为"的重要性被严重轻视了比如,为什么ES6要推荐一个“凑字数”的 const x= 而不是 let+let mut x? 为啥 Java 到处都是 public final 🔘 Str wtf() ?
你可能是第一次意识到“subtyping” 保存着type tag,但这些真的是编程里的基础(你设计任何"前后端"时都应该考虑的),或许,只是在像XML那样复杂的上层框架里这并不直观。
int a[]={1,2}; 这样的“数组”,它的长度只能用静态的sizeof得知,也就是 a[N] 里N必须是个常数,对它的求值才是安全的。C99(ISO9899,P61)甚至专门定义了“退化到指针” 和'\0'结尾字符串的行为-它还好意思把这当特性! gcc 实现了常量区间的越界检查,这是说谎:
range(A=0,B) 类型的缺失从一开始就是个错误。实际上,2int=1long ,区间slice有的内存开销,与它能带来的软件安全是不成比例的。gcc的"静态检查"只是对stdlib的缺陷涂脂抹粉,并没有消除过度追求低内存,所带来的隐患
并且,只要区分定义
a[int32_t], a[index_t] 的实现,对后者只定义一些编译期检查(private constructor),就既安全又高效。连Ruby 💎和WebKit的作者们都知道可以这样("污点值" taint 和 TrustedTypes),今天有人称其为 contract{}.. 也行吧
然而,即便有了OS的ASLR/Nx保护,stack/heap overflow 今天还是个问题。如果你写
sprintf(buf, "%d",0) 编译器会提醒你改用 sprintf_s 或cout,sstream<<所以
main(int narg, char** aarg){} 用什么替换? main(vector<str>) 吗? 恭喜你重新发明了“很慢的” Python,只是还没有它好用与for和if 对应的数据结构!!它们的重要性无需多言: 如果数据能随意纂改,fn{} 这些代码块、甚至只是算式 的正确语意就无法得到保障。
至少你还能庆幸,与 main(..) 等调用对应的
cli_args a0={.raw = new string[]{"/bin/echo",}} "构造器"只是不太好写🥰,没有RCE那么严重的缺陷 OOP只不过是把C的病态类型修了一修,它自己还有“读json都要搞反射,但Class对象被认为性能低”所造成的一堆问题
log4j 们是把bug的产生从“代码的语法” “内存结构的语法”往上提高了一层,并没有消灭问题。 能消灭问题的,恐怕只有少写代码,多思考吧。
从某种意义上,缓冲区溢出、反射低性能、线程(ret2调用栈)与 async(ret2回应函数)间的鸿沟,都是『两种语言问题』,即C,Java,JS 这样的语言为了解决框架们的需求
它们原来的心智模型,无法跨越 编译期/运行期、 堆内存/栈内存/json、本机/远程、可信数据/需验证数据,甚至仅仅是 正确/错误 (Object/Error和null) 而一致地存在,就产生了许多需要学习的class libs,以及与它们的宣传不相称的复杂性和log4j那种bug
我最近在设计的逻辑式编程范式,就是为了从心智模型的层面统一这所有的『两种语言」。 祝我成功吧 🌚
实际上呢, linux 这些内核所提供的虚拟内存段(vma https://t.me/dsuse/19844) 实现,通过把内存解释为对象图,这种4K页隔离也完全能删掉, ELF, SHM, CRIU.org 那些高深的结构也就会和普通的JVM对象(对比下"class" PATH?)、多线程、序列化 一样朴素
因为C会和WASM那样安全,没有驱动程序的“引用”,就不能越过内核调用rm -rf 那种事情(yinwang 2013)。 所以fd,socketfd 这些“RPC对象号” 也就不必存在; 线程就只是让while(1) 每隔几千次暂停1次的协程,调度器、主循环evpoll 也可以消失。
用 eBPF 的人都知道我在说什么,现在有足够多的中间表示比x86指令集更优秀,甚至更简单,完全能从汇编上来做“虚拟化”
学内核本质上就是学"4件套",而这4项任何一个普通极客都有所认识: 👀
byte format: ELF,EXT4,boot process(cpio), .. 这是用户最关心的: exe,so,apk 互不兼容,尽管他们的系统“一样高级”,C盘D盘容量一大一小,哪怕你的SSD是512G的
net: AP, Bluetooth Peering, tcp实现, 自然需要多线程和管道, 要考虑"异步" 也就是回调地狱的解决;最重要的是,Web的API和格式(FTP..)是超越运行时差异的存在,它比加了私货的SDK文档更能体现问题的本质
usb: hid键鼠触摇, hdi显示与摄像, 声音, ACPI SMART, 各种传感器.. 或许它们的“设备总线”不是USB,但我们只关心硬件的性能 而非接口!
vm:
内存和CPU的分时复用,按上面的说法,这是专门为掩饰C语言的缺陷所设计的。 难道Linux所提供的功能,比JS靠WebKit能利用的还多吗?为什么vscode只需要单线程,一些服务却总爱“加塞”,这其实就是C语言没办法“注册回调闭包” 导致的卡线程与线程池优化.. 全是与IO的业务逻辑无关的东西!不过编程本身是无关于计算机的,就像天文无关于望远镜。
“编程赞歌是组合搭配的赞歌,框架伟大是拆分置换的伟大。代码是流动的数据,内存是暂停的程序——感想”
www.redox-os.org
Redox - Your Next(Gen) OS - Redox - Your Next(Gen) OS
The Redox official website
❤3