调试前端页面的时候,有时候会遇到点击弹窗后从另外一个标签页打开页面的情况,这个时候如果手工去打开调试工具,页面加载之前的网络接口调用就追踪不到了,这个问题查询了一下,从 Chrome 50 版本开始支持页面跳转调试器自动跟踪。只是默认情况下,此功能没有开启,需要手工开启此功能。
具体开启此功能的操作如下:
1. 打开浏览器控制台(F12)/开发者工具
2.使用三点菜单(F1,控制台右上角X号旁边的那个按钮打开 setting 栏)
杂记
调试前端页面的时候,有时候会遇到点击弹窗后从另外一个标签页打开页面的情况,这个时候如果手工去打开调试工具,页面加载之前的网络接口调用就追踪不到了,这个问题查询了一下,从 Chrome 50 版本开始支持页面跳转调试器自动跟踪。只是默认情况下,此功能没有开启,需要手工开启此功能。
具体开启此功能的操作如下:
1. 打开浏览器控制台(F12)/开发者工具
2.使用三点菜单(F1,控制台右上角X号旁边的那个按钮打开 setting 栏)
安泰信8502D,热风枪焊台一体的,最近出了个问题:
焊台工作大概20分钟后频烦出现自动停止加热,回到待机状态,接着再开机立马就停,有的时候甚至开不了机,按键无反应!
断电几个小时候后再开机,还能用20分钟或半个小时,然后继续重复以上的故障现象。
安泰信-二合一维修系统-AT8502D-使用说明书
七年前买车的时候买的电动充气洗车一体机,型号信息(Armorly A1-70W)。没有用几次,时间长了以后,水泵就就坏了,不出水。一直也没丢弃,这些天恰好翻出来,准备修理一下。
拆外壳是非常简单的,只需要拧下背部的八颗螺丝即可。拆水泵只需要拧下额外的四颗螺丝即可。
本文主要以 POP3 为例讲解, 其他邮件协议可以参考思路, 自行尝试解决。
最近发生了一件比较尴尬的事, 公司邮箱密码忘记了, 又不想麻烦 IT 部门更改, 就想尝试下自己破解下本地的密码。 (密码已经以加密形式保存在本地电脑)
看到网上分享的一些办法, 如下:
第一种耗时耗力, 版本差异引起方法不通, 还需要破壳工具啥的自己去实际抓抓。
第二种不能用, 公司邮箱服务不允许明文连接, 加密数据不好破解。
所以我用了另一种方式, 下面直接分享步骤和代码, 后面再分享思路
1 |
127.0.0.1 <pop3邮件服务地址> |
启动 Python 写的服务程序, 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import socket if __name__ == "__main__": s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("127.0.0.1", 110)) s.listen(1) print("ready") while True: conn, addr = s.accept() print("connected by "+str(addr)) conn.send("+OK, POP3 server is ready.\r\n".encode("UTF-8")) while True: data = conn.recv(1024).decode("UTF-8") if(0 == data.find("QUIT")): conn.close() break else: if(0 == data.find("USER") or 0 == data.find("PASS")): print(data.strip()) conn.send("+OK\r\n".encode("UTF-8")) |
Foxmail 中点击 “收件” , Python 服务打印用户名密码:
本地的加密用户名就获取到了。
下面说下思路。其实思路也很简单, 就是模拟 POP3 协议, 写个假的 POP3 服务, 然后让 Foxmail 连接这个POP3 服务, 并把用户名和密码发送给我们的 POP3 服务。也是参考抓包提取密码的方法。只是没见过其他人分享过, 自己就分享了下, 其他邮件协议也可以参考下, 不需要把邮件协议完全模拟出来, 只要能够骗过 Foxmail 把用户名密码传过来认证就可以了。
下面大体说下 POP3 协议:
基于这个步骤, 我们就可以写个模拟 POP3 协议的服务, “骗取” Foxmail 的本地密码。
当然这种只适合用户忘记本地密码。
安装必要的依赖:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 安装 podman $ sudo apt install podman # 创建一个低权限用户,尽量不要使用root用户,身份操作podman,降低安全风险 $ sudo adduser podman # 允许用户下的容器在系统启动的时候启动服务 $ sudo loginctl enable-linger podman # 退出当前用户,切换到刚刚创建的低权限用户, 注意,不要使用 su - user 的方式切换,后续会执行各种报错 # 如果使用 su user 切换会导致环境变量被带到新用户,导致执行报错 # ERRO[0000] XDG_RUNTIME_DIR directory "/run/user/1000" is not owned by the current user # Error running systemd as user - Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined $ exit # 通过 ssh 登录用户名 podman 密码是创建用户的时候设置的密码 # 准备本地目录映射 $ mkdir ~/.dockers/tomcat $ mkdir ~/.dockers/tomcat/webapps $ mkdir ~/.dockers/tomcat/logs |
官方镜像会在报错的时候暴露 Tomcat 10 版本号,错误堆栈,构成安全隐患,我们需要通过构建自定义镜像解决此问题:
1 |
$ touch Dockerfile |
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 详细启动日志在 /usr/local/tomcat/logs 目录下 From docker.io/library/tomcat:10 # xml 编辑工具,方便我们后续修改 tomcat 的xml配置文件 # RUN apt update && apt install -y xmlstarlet # 增加 <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" /> 阻止错误日志输出 RUN sed -i "s/<\/Host>/ <Valve className='org.apache.catalina.valves.ErrorReportValve' showReport='false' showServerInfo='false' \/>\n\t<\/Host>/" /usr/local/tomcat/conf/server.xml # 配置AJP协议 # 如果只希望通过 AJP访问,可以参考如下命令 移除原有的 AJP 协议配置 # RUN xmlstarlet ed -L -P -S -d '/Server/Service/Connector' /usr/local/tomcat/conf/server.xml # 增加新的协议配置 RUN sed -i "s/<\/Service>/ <Connector port='8009' protocol='AJP\/1.3' address='0.0.0.0' redirectPort='8443' secretRequired=''\/>\n <\/Service>/" /usr/local/tomcat/conf/server.xml # 移除 xml 编辑工具 # RUN apt -y autoremove --purge xmlstarlet |
构建镜像:
1 |
$ podman --cgroup-manager=cgroupfs build -t tomcat-10 . |
设置容器开机自启:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ podman stop tomcat-10 $ podman rm tomcat-10 # 启动一个 tomcat 容器 8080 HTTP 访问端口 8009 AJP访问端口 # podman run -d --name tomcat-10 -p 8080:8080 -p 8009:8009 -v /my/local/path:/usr/local/tomcat/webapps localhost/tomcat-10 $ podman run -d --name tomcat-10 -p 8080:8080 -p 8009:8009 -v ~/.dockers/tomcat/webapps:/usr/local/tomcat/webapps -v ~/.dockers/tomcat/logs:/usr/local/tomcat/logs localhost/tomcat-10 # 查看该容器 $ podman ps # 如果需要进入容器查看执行情况,参考如下命令 # podman exec -it tomcat-10 bash # 每次都启动新容器方式创建servcie //--new参数,每次启动都删除旧容器,启动一个新容器 $ podman generate systemd --restart-policy=always -n --new -f tomcat-10 |
查看启动文件:
1 |
$ cat container-tomcat-10.service |
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# container-tomcat-10.service # autogenerated by Podman 3.4.4 # Sun Mar 10 12:31:31 CST 2024 [Unit] Description=Podman container-tomcat-10.service Documentation=man:podman-generate-systemd(1) Wants=network-online.target After=network-online.target RequiresMountsFor=%t/containers [Service] Environment=PODMAN_SYSTEMD_UNIT=%n Restart=always TimeoutStopSec=70 ExecStartPre=/bin/rm -f %t/%n.ctr-id ExecStart=/usr/bin/podman run --cidfile=%t/%n.ctr-id --cgroups=no-conmon --rm --sdnotify=conmon --replace -d --name tomcat-10 -p 8080:8080 -p 8009:8009 -v /home/podman/.dockers/tomcat/webapps:/usr/local/tomcat/webapps -v /home/podman/.dockers/tomcat/logs:/usr/local/tomcat/logs localhost/tomcat-10 ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id Type=notify NotifyAccess=all [Install] WantedBy=default.target |
需要额外注意的一个地方是,给出的路径必须是完整路径 “/home/podman/.dockers/tomcat/webapps”,不能是 “~/.dockers/tomcat/webapps”,Systemd不能正确展开 “~” ,导致路径找不到,从而在启动的时候失败,报告错误代码 125 。
Systemd 配置,开机/系统重启自动启动服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 保存到 ~/.config/systemd/user/ $ mkdir .config $ mkdir .config/systemd $ mkdir .config/systemd/user # 保存到/etc/systemd/system/ $ mv container-tomcat-10.service ~/.config/systemd/user/ # 以当前用户身份刷新配置文件,让其生效 $ systemctl --user daemon-reload # 设置容器开机自启,并且现在启动 $ systemctl --user enable --now ~/.config/systemd/user/container-tomcat-10.service # 如果需要进入容器查看执行情况,参考如下命令 # podman exec -it tomcat-10 bash # 测试,重启系统,观察是否能开机自动启动 $ sudo reboot |
后续 WAR 包存储到 ~/.dockers/tomcat/webapps 目录下即可进行正常访问。
查阅了一些拆解教程,发现难度不小。虽然有拆解平板的经验,但实际拆解这部iPad 2遇到的困难超过心理预期。
难度主要集中在三个方面:
1、虽然iPad 2代表了当年最高的工艺、工业设计。但彼时的屏幕,触控屏和显示屏并不是一个总成。也就是「外屏」、「内屏」是分体的。且外屏的排线压在内屏下面。
2、彼时「易拉胶」还没有广泛应用到数码产品上,iPad 2内部都是双面胶。
3、无尘环境。
结合步骤,下文详述。
ThinkCenter M820z用户指南和硬件维护手册(拆机指南)
最近一年,频繁收到自称是亚马逊日本/日本其他银行的邮件,没完没了,很像是官方邮件,差一点就信了。网上搜寻了一下,发现还是蛮常见的。
自2020年8月以来,Proofpoint研究人员就追踪到了大量的Amazon Japan认证和信息钓鱼攻击活动,可疑活动可以追溯到2020年6月。这些邮件冒充Amazon Japan,暗示收件人需要检查自己的账户,以“确认所有权”或“更新支付信息”。点击邮件中的一个链接,收件人就会被重定向到以亚马逊为主题的凭证式钓鱼登陆页面,该页面收集凭证、个人识别信息(PII)和信用卡号码。攻击者会向总部设在日本的机构和在日本有活动的机构发送了这些信息,这些网页的地理定位是为了确保只有日本的收件人被重定向到认证钓鱼页面。
虽然像亚马逊这样的知名品牌经常在网络钓鱼活动中被滥用但大量的邮件使这些活动与其他亚马逊品牌的活动区分开。这些活动持续不断,每天发送数十万条信息。截至10月中旬,,有时一天中可以看到超过一百万条信息,与Emotet发送的信息量相当。Emotet是一种主要通过垃圾邮件进行传播的木马,传播至今,已进行过多次版本迭代。
最近经常收到亚马逊的邮件通知,说是自己的账号被从其他设备上频繁尝试登录,导致账号暂时被禁用。
明显是有人在尝试破解账号密码。
登录账号,本能选择手机短信认证,结果,尝试非常多次,收不到短信!!!
只能退而求其次,使用“认证器应用程序”来替代。如下图:
结果,国内手机的Android应用商店上都搜不到,不管是 Google 的还是亚马逊自己的,或者微软的!!
从第三方下载又不放心!!
一时不知道改怎么操作了,结果突然想起自己还有一部 iPhone 开发手机,于是从Apple应用商店搜索 "Google Authenticator", 果真可以直接使用,于是问题搞定。