duangsuse::Echo
412 subscribers
3.85K photos
105 videos
574 files
5.15K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
Download Telegram
Forwarded from iVanilla 自然科学 & 神秘学实验研究部 (iVanilla)
【紧急安全通报】

有 Twitter 用户发推称,超过 7 千万的 Telegram 用户的账号休息被泄露,包括电话号码等,目前在暗网出售,总售价 8 BTC:

可能的原推文:https://twitter.com/MisterCh0c/status/983708183695937537 (已被删除)

相关推文:https://twitter.com/TheAltAnalyst/status/983717218696515584
https://twitter.com/Cyber_War_News/status/982832153149882368

Reddit 帖子:https://www.reddit.com/r/pwned/comments/8aojqs/data_breach_of_more_than_70_million_information/
https://www.reddit.com/r/pwned/comments/8asozg/complete_telegram_users_data_leakage/

虽然相关文件下载链接已经被移除,但从上面其中一个 tweet 还能找到下载链接,截止到现在下载链接仍然有效。

#安全事件 #后知后觉
duangsuse::Echo
可惜没有绘制成图表 plot 好看一些 🤔 r.size #=> 187 一共统计了 187 条消息。 r.sort_by { |it| it['published'] }.first['published'] => 2019-03-24 11:22:00 +0800 第一条消息是 2019-03-24 11:22 发送的 r.sort_by { |it| it['published'] }.last['published'] => 2019-04-05 20:06:00 +0800 最后一条消息是…
😃 那么,简而言之,我觉得有价值的信息:

def get_link(h); "https://t.me/dsuse/#{h['debug']['no'] + 9511 + 20}"; end

+ 一共统计了 187 条消息。

2019-03-24 11:22 - 2019-04-05 20:06,一共两个星期的时间里,本频道 @dsuse

+ 有 #Telegram Hashtag 的消息,一共有 42 条,约有 20% 的消息被打上了标签
+ 含链接的消息,一共有 37 条,约有 19% 的消息被打上了标签
+ 链接和 Tag 都有的消息有 17 条,占总消息的 9%

map { |h| [h['body'].size, h] }.sort_by { |it| it.first }.reverse
map { |h| [h['body'].size, h] }.sort_by { |it| it.first }.reverse.first[1]['links'].size

+ 187 条消息里,最长的消息是这条,它有 4475 个字 — 连链接都有 25 条! 🤪
+ 187 条消息里,折行最多的消息是这条,它有 4232 个字和 7 条链接。

sum { |it| it['body'].size } / size
+ duangsuse 的平均字数:359 字 / 消息

sum { |it| it['body'].lines.size } / size
+ duangsuse 的平均行数:11 行 / 消息

find_all { |it| it['header_type'] == 'REPLY' }.size
+ 过去的 187 条消息里,有 70 条都是回复,占总量 37%

find_all { |it| it['header_type'] == 'FORWARDED' }.size
+ 过去的 187 条消息里,有 45 是转发自其他频道或个人的,占总量 24%
当然,这 70 条都是回复本频道消息的。

a.uniq.map { |u| [u, a.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" }
+ 转发者和条数表如下:

IT 那点事 (YuutaW 鱼塔): 10
羽毛的小白板: 10
duangsuse Throws: 6
Rachel 碎碎念 (IFTTT): 5
Rachel 的消息发布站点 (Rachel Miracle.) via @like: 3
YSC 的频道: 2
duangsuse ¯\_(ツ)_/¯ |学渣 | 我爱学习 | ∈ [E²PROM, 范畴论]: 2
Doge: 2
YuutaW 鱼塔: 2
Rachel 碎碎念 (湘江一桥): 2
DogeSpeed广播: 1

😄 @haneko_daily 被转发的次数最多,继续努力!

sort_by { |it| it['hashtags'].size }.reverse
+ 具有最多标签的消息是这条,它有足足 8 条标签!

sort_by { |it| it['links'].size }.reverse.first
+ 具有最多链接的消息是这条,它有 25 条链接!同时也是字数最多的消息!

find_all { |it| it['header_type'] == 'A_PHOTO' }.size
过去 187 条消息里,一共有 29 条广播是单纯的一个照片 🖼
find_all { |it| it['header_type'] == 'A_ALBUM' }.size
过去 187 条消息里,一共有 5 条广播是照片集 📸
find_all { |it| it['header_type'] == 'IS_STICKER' }.size
可爱 🐱 的 duangsuse 在过去 187 条消息里使用了 28 个 sticker 抒发自己的感情,使用的表情这么多:
find_all { |it| it['header_type'] == 'IS_STICKER' }.collect { |it| it['ext'] }.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }

😔: 7
😳: 4
😲: 3
😡: 2
😑: 2
🙄: 2
😋: 2
😀: 2
😥: 2
🍹: 1
😐: 1

find_all { |it| it['header_type'] == 'HAS_FILE' }.size
duangsuse 在过去 187 条消息里发了 8 个文件,它们是:
find_all { |it| it['header_type'] == 'HAS_FILE' }.collect { |it| it['ext'] }
["axml.rb", "AndroidManifest.xml", "AndroidManifest.xml", "TextSort.kt", "RandomPicture.kt", "Vibrator.svg", "Vibrator.png", "Vibrator.svg"]

最火的
hashtags 组合:

collect { |it| it['hashtags'] }.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }

结果太长,在这里查看

所有 Hashtags:
hs = s.flatten.find_all { |it| it.is_a? Array }.flatten.map { |s| s.tr(" ", "") }
"#" + hs.uniq.join(' #')

#Android #zhihu #KDE #Low #Haha #life #tech #tencent #WeChat #weibo #share #tools #dev #Markups #Telegram #Hack #aop #Huawei #通知 #Freedom #sysadmin #GitHub #travis #CI #Sysadmin #Linux #Coolapk #Web #frontend #HTML #China #school #Microsoft #Life #VisualStudio #-} #OOP #web #geekapk #doge #CS #fix #CSharp #School #blog #recommended #bin #backend #Kotlin #Java #Share #svg #blogPOst #PL #JVM #Moha #code #ALgotithm #DuangsuseSB #GeekApk #SQL #Learn #wiki #Mozilla #ES6 #JavaScript #MoHa #Paper #haha #dotnet #bad #OOP_Delegates #Parallelism #dotNet #Csharp #Windows #performance #Channel #weekly #linux #Ruby #Project

以及他们的消息覆盖个数:
hs.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }

太长,这里看

== 非线性查询(当然和算法上那个没有关系啦,就是复杂一点的查询)

// 收集所有单 / 双数索引

ar = []; ar2 = []

i = 0 // 0 2 4 6
while i < self.size; ar << self[i]; i += 2; end
i = 1 // 1 3 5 7
while i < self.size; ar << self[i]; i += 2; end


aa = ar.zip(ar2)

我们将比较相邻两消息之间的关系。

aa.zip(aa.map { |ms| ms.last['published'] - ms.first['published'] }).sort_by { |p| p.last }.reverse

间隔最长的两条消息是这条这条,间隔 44880 秒(12 小时)

b.map { |h| [h.last, h.first.first['body'].size ] }.map { |a| a.last / a.first }.select { |it| not it.nan? and not it.infinite? }.sort.reverse

平均打字速度:7 字 / 秒 🤔

受到解析度(只到分钟)和浮点运算准确度的影响,有很多消息都是在间隔一分钟内发完的,统计结果可能不正确。

好啦,还有什么别的信息,请大家自己来发掘呗( 😝 比如说,我熬夜发过多少消息。
tg侧边栏的落雪特效: 每.5s/100 移动 P=随机点 随机(雪花,白球) .5s P+随机xy
前几天做的粒子动画实验,隔2状态随机1次 就很合适,可惜点赞不够 我懒得做 [xy,+-雪/白球 透明];而且雪花咋画呢.. 但tg客户端代码质量真不行,我估计它为这写了一个文件,但其实客户端交互动画挺多的。

#windows #api #hack https://t.me/yscschan/6968
Win32 窗口置顶zIndex问题.任务栏开始菜单 都是窗口
Win8+的Band层z序最大如果想在任务栏上显示UIAccess或注入CreateWInBand /SetWBand (shell32常规是注入?..
ysc发现有key EnableAMAccess (w32kfull.sys活动管理) 后可以使用后者自由提升窗口,key限取一次,SetShellWindow 登录时 pcshell.dll 管理,只能重启explorer.exe hook NtUserAcquirel 获取key ;好奇怪的私有API

窗口置底问题.Win8+ 桌面图标可独立窗口,只要 SendMessage 0x52C 给某窗口,它变成最底;再将 shelldll_DefView 图标下方 WorkerW 隐藏,ffplay --noborder xy=00wh=屏幕宽高 这样的播放器就是动态桌面
ShowWin(,SW_) SetParent(w,w0)
EnumWindows(f(w,argv)) FindWindow(k,fl=0) -Ex(in_w?,next?,k,fl)
SendMessageTimeout(w,k, 3x, dt, fl)

#py 计划
100粉的头图黏合Py PIL生成。为啥不是canvas或OCV或Java? Pillow Image.open/new/resize 和 getpix, Draw(im) 的API想必是熟悉了,这次我们要用100张图片 拼出小宽高的灰度图,流程是:mask.png w h *.png
若mask不存在,求得(x,y,cp) 网格排布 绘制。输出 mask 再编辑
否则,对 a=mask (x,y,resize(1,1)lum亮度) 和 b=cycle(im list) 共同 sort, imOut.paste(bim,axy) 后高亮图肯定在高亮mask点
duangsuse::Echo
#linux #bing USB共享网络的SOCKS代理? #bash #tool cat>/etc/udev/rules.d/99-usb.rules <<OK ACTION=="add", SUBSYSTEM=="usb", RUN+="/bin/su duangsuse bash -c 'export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus; (sleep 2;eval `base64 -d <<<ZGNvbmYgd3JpdGUg…
更优解:为手机添加固定主机名,就没有DConf(uid=1000)连接问题 😓
dconf write /system/proxy/socks/host '"ipr"'
cat>/etc/udev/rules.d/99-usb.rules <<OK
ACTION=="add", SUBSYSTEM=="usb", RUN+="/bin/sh -c '(sleep 2;eval \$(base64 -d<<<c2VkIC1FaSAicy8uKiggaXByKS9gaXAgcnxoZWFkIC1uMXxwY3JlZ3JlcCAtbzEgJ2RlZmF1bHQgdmlhIChcUyopJ2BcMS8iIC9ldGMvaG9zdHMK))& '"
OK

ipr: sed -Ei "s/.*( ipr)/ip r输出\1" /etc/hosts

爆赞必应的解读和API搜索,但貌似逼他写出这的难度,还不如自己写两小时.. 😭.conf 内嵌脚本坑太多。
#bing 在USB插入后2s,更新etc/hosts 的ipr项为默认网关的脚本
也能写个差不多,但它拿cmd autorun 去执行bash 还扯到lsusb! 总之,运维就没 #docker 那样1键化的🤪
#tool dwhelper/全局代理.sh:
cat>~/proxychains.conf <<OK
strict_chain
proxy_dns
[ProxyList]
socks5 $(getent hosts ipr|awk '{print $1}') 10808
OK
proxychains -f ~/proxychains.conf -q bash #xfce4-appfinder

btw. 原理是LD + hook dlsym。 F,C浏览器都可能有不兼容的问题

#net #hack m3u8 和 HLS 格式下载器
9xbuddy源解析 - 可爬取iframe ,不过 Lj Downloader 才支持有域名混淆的Hydrax播放器(那种弹窗真是烂
hlsloader.com
cococut.net 支持 资源探测

#bug fix https://github.com/ytdl-org/youtube-dl/pull/31003/files
#site-packages/yt_dlp/extractor
from . import dood
T=dood.DoodStreamIE
k=T.__name__;exec(f'_ALL_CLASSES.insert(-1,T); extractors.{k}=T; T.ie_key=k[:-2].strip')
链接 sed -E 's/(d|doo)ood.\w+/dood.la/g'
下载列表
tmux-each() { a=("${@}");
tmux new-session -d -s Vi
tmux new-window x -t Vi

# 循环创建新窗口,并在每个窗口中执行指定命令
for (( i=0; i<$#; i++ )); do
tmux send-keys "$cmd ${a[$i]}" C-m
tmux splitw;tmux select-layout tiled
done

tmux attach-session
}


我真觉得 #linux 圈是一群脚本小子,ytdl还用substr 写JS解释器 parser #plt ,各种conf 遍地跑 无非是监听器和条件模式匹配,结构和显示都分不清 ,支持pwsh 这样的新势力整顿职场。。
#android #hack
Xposed复用宿主app.R.drawable
利用类加载jar遍历包名
删除宿主的final标记
(btw. Dalvik 的类和资源、字节码 与jvm有差别,未必在安卓有效
有的宿主会混淆R资源,一般只是宿主加载动态模块

https://t.me/RachelBlahblah/7915
duangsuse::Echo
#tool 想要用 #android scrcpy+OCR 在电脑上问AI答题 #bing >用py 写截图复制文字的软件 textshot chi_sim+eng 推荐此脚本或者调百度云AI >编程: 当 PrtSc 按下且剪贴板变化,PIL获取剪贴板并用 paddle OCR 复制内容 (没有 "且") >我是要剪贴板变化时OCR ,写短点 (太长, API信息错了) >不注释。用(for).join ,把检测变化外提为 await for change(pyperclip.paste) #py…
#school #math 后来发现 OCR 不咋好 也没做 clipboard 共享(曾拿 sl4a socket 弄过) 就用web版考试了

#py 大数据(黑框 Excel)的考试, 这也太难

#hack 政治考试我赵 ChatGLM 生成600字逻辑错乱的借口🥰,又在国内找了手写模拟 #js vue , 有水印 +混淆
不如在mycanvas 下断点,找到 fillText 的配置obj, 便在new它的位置下log点(_0x4c294d['ERXmK']='') , 甚至不用靠 AOP 分析🙄 当然,蓝扣出遮罩 也可以消水印

感慨到找几个字体,贴个图 在国内都能注册冲钱; #Bing 和 GPT 又卖了多少钱呢?

#linux
手机拍屏幕,还是被老师发现😡 🤦
学习通不让上传照片,js脚本小子也没人能魔改 navi.mediaDevice API,干脆装驱动
pacaur -Sy linux{,-headers} obs-studio v4l2loopback-dkms
内核更新要重启
#tool OBS一键启动虚拟摄像头。单靠 ffmpeg 推流 谷歌貌似检测不到, 只能 chmod 000 /dev/video0

😊总而言之,这考试教育就煞笔 没有经济价值
抄书你🦄呢,数据害得一格一格填, 精神分裂政治文要手抄;相对西式考试·具有较强的优越感
不然怎么入脑入芯入魂 🤯
duangsuse::Echo
#android #dev 面试题。上条则是简化版的答案 🧐 仅供参考,可能我解释的太抽象了,涉及一些淘汰的远古技术, 不符合标准答案。 - Handler 基础,Looper 怎么和 Thread 绑定,怎样提高 MessageQueue 优先级 - 进程间通讯的方法,对 AIDL 的了解,对 ContentProvider 的了解 - (根据项目) 自定义 View 的方法和注意事项、事件分发、View 复用 - 写过 demo 吗,什么时候会写 demo - 对 MVVM 的了解,对 Jetpack…
#android #hack #aop 继续,加上奇怪.. 的知识

Magisk 是 Android 版的 Docker (overlayfs),能管理root、去广告加皮肤、安装字体、模拟位置、利用权限骗过 SafetyNet DRM
它让 /boot/initrd 挂载(--bind) /sbin/.magisk tmpfs 来遮住 /mirror/system vendor 树,因此需要TWRP刷zip(和root时一样) 或fastboot刷入kitchen过的原机boot.img

新设备可能不区分boot分区(A/B 切换来OTA),修改内核强制使用 initrd(boot.img) 里的 init(PID0) 程序

简单说,#Linux 启动的传统是kernel解压启动 initrd 内存盘(recovery,Magisk)去寻找真'/',然后 chroot /sysroot /init (systemd,各类run-command,.)

Zygisk 和 Xposed 都是AOP框架,分别拦截和修改 Java android.*/JNI 函数的调用,从而实现对系统和应用程序的功能修改。Zygisk 是基于 Riru 的一个模块,使用 Zygote 注入技术来加载自定义代码。Xposed 是通过替换 /system/bin/app_process 程序来控制 Zygote 进程,使其在系统启动时加载 XposedBridge.jar 文件,从而完成对 Zygote 进程和 Dalvik 虚拟机的劫持。

Zygisk 是 Riru(#cpp .so 函数替换,靠魔改某项linker_PRELOAD) 的免安装续作,开启后不能规避检测,但支持文件/JNI重定向、实现了模块黑名单。 LSP和Ed-Xposed分别支持二者(不能共存)

.internal.os.Zygoteapp_process 的起点,它负责注册JNI、创建 SystemServer(PM,WM,AMS处理的Intent),之后便执行Xp模块
LSP 用 env->RegisterNatives(动态注册版Java_), jni_method_map[T][id][sig].fnPtr 来JNI替换,Zygisk 提供了 {pre(包名),post}AppSpecialize(args)
PRELOAD=libxposed.so 利用 env->FromReflectedMethod(由java查找).{access_flags|=ACC_NATIVE, (Dalvik|ART inlined jmp)nativeFunc=callHooked} 做函数替换

RegisterNatives 本身就能让JNI函数基于jobject clazz 派发,所以比ART hook 简单
FakeXposed 作者的博文

#kt #code
import de.robv.android.xposed.*
import de.robv.android.xposed.XposedHelpers.*

val reg={
val NoPrint={
setStaticObjectField("java.lang.System", "out", PrintStream(OutputStream()) )
}
findAndHookMethod("java.lang.System", cl, "<clinit>", object: XC_MethodHook() {
override fun MethodHookParam.afterHookedMethod() {NoPrint()}
})
}
//assets/xposed_init 写下类名
class My: IXposedHookLoadPackage {
fun LoadPackageParam.handleLoadPackage() {
if(packageName.equals("com.example.app"))reg()
cl=classLoader
}
}
duangsuse::Echo
#HR #java 回答安卓面试题 [AI标准答案] - 做过哪些项目,用过哪些 Android 开发相关的东西 没有,H5赛高 - 「大学生活质量指北」是什么(?(然后我真的讲了七八分钟这个项目的来龙去脉和作用 不过VS Alt-S 同行数多光标可以列粘贴 - Java 里 LinkedList 和 ArrayList 的区别 链表适合单遍历,不需要resize (1 (2 null)) - 栈和队列的区别,如何用栈实现队列,Android 里哪些地方用到队列 Queue.add-pollFirst 队列…
#linux #hack VSCode Alt-S 同行数多光标可以列粘贴,但在 #telegram desktop 里编辑、导入导出长的富文本,就完蛋了 😅 Bot还被限制了2个链接截断

web.telegram.org 是用 $('[tabindex]:read-write').innerHTML 表示消息的,bot markdown 所支持的格式勉强能F12粘贴
不知为何Qt与Chrome,Wx的剪贴板不兼容

xclip -selection c -o -t TARGETS
xclip -selection clipboard -o -t text/html 剪贴板接口也不是旧版 application/rtf text/uri-list,很明显与Qt没有关系😅
或许它独立于DOM自己定义了Paste,DnD这类手势?(其实是数据类型

搜了下API,找到 setMimeData Linksparser application/x-td-forward 这些符号,但其实还是一个按区间的格式 x-field-{text,tags} 😅
tdesktop.FieldHandler 渲染了 FieldTagMime 的消息, td消息格式的源码都搜不到 🤮 但确定不是 MTP (#Go protobuf 定义)

hexdump -e'1/4 "%X" "\n"' 可以看到是基于int区间的