Orien Daily



📸 @midzystats #YEJI
“Pocket” by has surpassed 4,000 likes on MelOn.
《Pocket》在 MelOn 上的点赞数已超过 4,000 人。 #YEJI
原文 #黄礼志
📸 @Genius_kor #YEJI
“Pocket” is playful, catchy, and impossible not to loop. Check out the lyrics to the (@ITZYofficial) member’s solo song from on Genius now!
🔗 https://genius.com/Yeji-and-itzy-pocket-lyrics
《Pocket》有趣、朗朗上口,而且不可能不循环播放。立即在 Genius 上查看 (@ITZYofficial) 成员的独唱歌曲的歌词!
🔗 https://genius.com/Yeji-and-itzy-pocket-lyrics #YEJI’s #ITZY #Motto #있지 #예지 #Pocket
原文 #黄礼志
📸 @midzystats #YEJI
“Pocket” by has now surpassed 5,000 likes on MelOn.
《Pocket》目前在 MelOn 上的点赞数已超过 5,000 人。 #YEJI
原文 #黄礼志
被迫改变计划?日语里有个高级说法
在东京写报告或读新闻的时候,你可能想过怎么表达"不得不做某事"。初学阶段学了 しなければならない,但在正式写作和学术论文里,出现频率高得多的是另一个表达:〜を余儀なくされる。
先看例句。実験の失敗により、研究計画の変更を余儀なくされた。翻译就是"因为实验失败,被迫更改了研究计划"。注意结构——変更を余儀なくされる,名词 + を余儀なくされる,"被迫做某事"。余儀(よぎ)两个字拆开看:余是"其他",儀是"方式方法",合起来就是"没有别的办法"。される是被动态,整体传达的是一种不含主观意愿的被迫感——不想改,但情况逼着你改。
这里有个容易混淆的双胞胎: 两个都能用,但学术论文和新闻更爱用被动态的 余儀なくされる,因为日文正式写作天然倾向站在受影响者的立场叙述。
还有一个长得像的形容词:
下次读论文或新闻时留意一下,这个结构出现得比你想象的多。
Windows 域里的幽灵钥匙:Pass-the-Hash 攻击
你可能以为密码泄露后改掉密码就万事大吉,但在 Windows 域环境中,事情没那么简单。NTLM 认证协议的核心流程是:客户端把密码算一遍 NTLM Hash,再结合服务器发来的随机 Challenge 做运算,最后发回 Response 供服务器验证。问题出在这里——整个认证链路上,明文密码从来没出现过。服务器存的是 Hash,客户端用来证明身份的也只是 Hash 派生出来的值。换句话说,如果你拿到了一台机器上的 NTLM Hash(比如从 LSASS 内存里 dump 出来,或者从 SAM 数据库提取),你根本不需要还原明文密码,直接拿着这个 Hash 就能伪装成对应用户,去认证域内其他机器。这就是 Pass-the-Hash,一种在域渗透中被广泛使用的横向移动手法,Mimikatz 一行命令就能做到。
这种攻击之所以有效,根源在于 NTLM 协议把 Hash 当作了"等同于密码"的凭证。Kerberos 在一定程度上缓解了这个问题——TGT 的颁发需要密码的密钥派生值,窃取 Hash 后还需要额外步骤才能拿到 TGT(这就衍生出了 Overpass-the-Hash / Pass-the-Key 等变体)。但只要域内还有服务接受 NTLM 认证,Hash 就是通行证。防御思路很直接:启用 Credential Guard 把密钥隔离到 VBS 安全容器、限制本地管理员权限减少 Hash 暴露面、用 Restricted Admin Mode 阻止 RDP 场景下的 Hash 传递。不过最根本的策略始终是尽可能关掉 NTLM,全面转向 Kerberos。
无锁编程里的幽灵:ABA 问题
假设你在写一个无锁栈,核心逻辑简单到让人心安:读栈顶指针 A,新建节点指向 A,用 CAS 把栈顶从 A 换成新节点。看起来天衣无缝——CAS 会帮你检查"栈顶还是不是 A",不是就重试,完美。但线程 1 刚读完 A 被挂起的那一小段窗口里,线程 2 可以弹出 A、弹出 A 的下一个,又把 A 重新压回去。栈顶值没变,还是 A,CAS 成功——可栈里面的数据关系已经全变了。你拿着一个"看起来没改"的指针,接上了一段早就被拆散的链表。这就是 ABA,无锁编程里最阴险的问题:CAS 只比较值,不比较"这个值是不是同一次出现"。
解决办法的核心思路都是让 CAS 能区分"同一个地址的两次不同出现"。最经典的是加版本号——Hazptr 论文里是用一个带 epoch 计数的指针包装,每次修改都递增版本,这样哪怕地址回到 A,版本号也变了,CAS 自然失败。Linux 内核里用的atomic64_t做 64 位 CAS 也就是这个思路:低 32 位放指针,高位放计数器,一次操作同时比较两者。另一个思路是 Hazard Pointer——线程在访问节点前先"挂号"声明自己正在用这个节点,回收器看到有人挂号就推迟释放,从根源上杜绝了"正好被重新分配回来"的可能。
ABA 的教训不只是并发技巧,它揭示了一个更本质的东西:相等 ≠ 同一。CAS 比较的是比特模式,不是对象身份,而并发场景下这两者经常不是一回事。 这就是为什么 64 位原子操作在内核里不是奢侈品而是刚需。
📸 @thejypnews #YEJI ×4
.@ITZYofficial drops "Motto" M/V photos for YEJI.
Error 500 (Server Error)!!1500.That’s an error.There was an error. Please try again later.That’s all we know. #ITZY #있지 #YEJI #예지
原文 #黄礼志