2023年6月

通过这个方法找回了两个8位的qq号,其中一个还记录着青春期的恋爱记录。。。
大家可以试试,可惜以前的手机号不用了,不然还能找回好多。
由于这次教程,实现了选择手机号登录,可以实现免密登录 QQ,
大家要小心被盗号现象
面是方法:

选择手机号登录,到了 QQ 列表页面,点击相应的 QQ
1、极少数情况,直接免密登录
2、大部分情况,进到输入密的页面,第一次把密码输错,返回到 QQ 列表页面,点那个 QQ,就可以免密直接登录。

最近买了一个 CM311-1a 盒子,按部就班装上 Plex 的 app ,播放时发现,如果片源音频是 AC3 或 EAC3 格式,没有声音;如果是 aac 、dts 等声音正常。经过多方查询,尝试多种办法后,发现最简单的解决方法如下:

  1. plex 安装之后,首次启动会让选择 tv 模式或手机模式,此时务必选择手机模式。在手机模式的设置菜单里面,找到音频选择,可以发现,AC3 和 EAC3 都打上了勾,DTS 等没有打勾,这说明 Plex 默认在终端解码 AC3 和 EAC3 音频流,而 DTS 等音频格式是在服务端解码。CM311-1a 盒子,若缺少 AC3/EAC3 解码功能,对片源音频流是 AC3/EAC3 就无法解码,也就没有声音。所以,需要取消 AC3 和 EAC3 右边的勾选,这样 AC3 和 EAC3 就会在服务端进行解码后传送到盒子,就能出声了。
  2. 在手机模式界面设置好音频解码之后,将界面模式切换到 TV 模式,正常使用 Plex 。

PS:如果之前没有在手机界面设置 AC3/EAC3 解码选项,已经切换到 TV 模式,这时 TV 模式的设置里面是没有显示 AC3/EAC3 解码设置选项的。理论上需要将 plex 的界面从 TV 模式切换回手机模式,设好后再切换回 TV 模式。但实在没有找到从 TV 模式切换回手机模式的地方,这时只有删掉 Plex ,重新安装一下 apk ,在初始界面选择手机模式,设好之后再切换到 TV 模式。

作为消费电子行业的执牛耳者,苹果公司的一举一动都吸引着全球目光。近日,其发布了头部显示产品 ——Vision Pro ,这是一款混合现实设备,能“无缝”地融合现实和数字世界。其演示视频瞬间在网上引发广泛讨论,有人赞之为“又一次改变了世界”,有人则怀疑其是否真能得到消费者青睐。

自乔布斯发布 iPhone 拉开移动互联网时代大幕以来,消费电子产业在飞速发展的同时,也一直在积极寻找下一个改变世界的风口。然而,从平板电脑到智能手表;从电纸书到折叠屏,这些新产品尽管带来了新鲜感,却始终难给人以“革命性”的体验,并没有开启一个像移动互联网般潜力无限的市场。而诸如虚拟现实( VR )、增强现实( AR )、混合现实( MR )等观感较为“科幻”的概念和产品,则长期受制于技术与成本,导致消费者体验不佳,仿佛一直停滞在“元年”“前夜”。可以说,无论是消费电子的大环境,还是各种“扩展现实”头显行业的小气候,都需要一剂“强心针”。此时,具备强大技术储备、资金实力与产业链控制力的苹果公司发布的“Vision Pro”,自然被寄予了厚望,产生了极高热度。

但热闹之后也需要一些“冷思考”。就苹果这款产品而言,首先其没有上市销售,目前所有实机操作都处于不完全公开状态,再叠加 3499 美元的高昂售价,可谓“技术可观,市场未卜”;其次,从 Lisa 电脑差点令公司破产,到彩色塑料壳 iPhone 昙花一现;从 HomePod 音箱尽显颓势,到 Mac OS 系统层出不穷的兼容性问题,苹果产品不乏失败与瑕疵,一味将其“神话”并不客观。

以更大视角看,即便苹果设想的“空间计算”真的将虚拟与现实顺滑地连接在一起,这种“沉浸感”本身并不见得就是一件好事。以假乱真,让人沉浸其中,是这类头显的主要设计思路。但“沉浸感”的背面就是“成瘾性”,用户尤其是未成年人能否分清真与假的边界,让人存疑。同时,一旦头盔成为日常佩戴的电子设备,真正的注意力经济就到来了,眼球移动等数据隐私能否被妥善保护,也令人存疑。显然,苹果头显所面临的道德拷问,是一个不容忽视的问题。

近几年,虚拟现实设备、虚拟币、元宇宙先后炙手可热。创造一个虚拟世界,让用户沉浸于其中,成为了许多创业者和资本为之努力的方向。理论上,创造出一个现实世界的“镜像”,并让人生活于其中,相当于将现有的全球市场规模扩大了一倍,自然是一门前途无量的绝好生意。然而,我们所生活的现实世界仍然有太多需要完善的地方,通过提高科技水平实现生产效率的提升,是解决人类生活水平、贫富差距、环境恶化等问题的途径之一。如果人类将大量创新资源,投入到打造唾手可得、虚拟却舒适的安乐窝,无疑将削弱所有人对于现实的关怀,现实世界必然愈发走向衰落。正如《流浪地球 2 》中“移山计划”与“数字生命计划”的对立一般,人类在虚拟世界里内卷,对于文明毫无意义。因此,我们不能盲目信奉技术乐观主义,不假思索、争先恐后地充当虚拟世界“造物主”。

苹果头显再一次改变世界了吗?目前答案并不明朗。但手握芯片与操作系统两大核心技术,占据软硬结合的生态优势,给了苹果震动业界的机会。这再一次启示我们,“硬科技”是一切概念落地的基础,唯有牢牢掌握核心技术,中国才有可能跟上竞争步伐。

昨天发布了ChatGPT-Midjourney的初始版本,不过当时只支持imagin/upscale/variation这三个操作,然后便火速将最好玩的describe/blend和图生图也支持了。现在也可以直接一键 docker 部署,方便至极。

开源地址: https://github.com/Licoy/ChatGPT-Midjourney

接下来的计划:

  • 支持界面配置 midjourney-proxy 服务
  • 支持类似于 discord 中的输入体验

? 有需要的小伙伴可以试试,部署一个只需要 3 分钟不到~
? ChatGPT-Midjourney 再更新,支持 imagin/upscale/variation/describe/blend 和图生图,可 Docker 部署
? ChatGPT-Midjourney 再更新,支持 imagin/upscale/variation/describe/blend 和图生图,可 Docker 部署1

Apple Vision Pro 一推出后评价两极分化,这个和在苹果公司内部的反应是一致的。大家对这个设备的讨论一般都是聚焦在它的缺点和不足上面。

在这个帖子里,想让大家假扮下“果粉”,大开脑洞,来展望下未来——假设未来 Apple Vision Pro 真的牛逼了,成为了新的 iPhone 一样的设备,人手一台。街上人都带着 Apple Vision Pro ,不带的人就像现在不带智能机的人一样寸步难行。那么那时候我们的生活会变成什么样子呢?会出现什么“杀手级”的应用呢?要注意所有的假设不是不切实际的空想,而是需要建立在已经推出的 Apple Vision Pro 这个设备上,能够真的实现的应用(可能现阶段体验未必好,但是已经可以开发出来了)

我觉得很多之前 AR 的点子现在终于可以实现了:

  1. 利用 AR 显示结合 GPS 和各种图像定位算法,我们以后用 Google Map ,高德导航,可以直接带着眼镜然后把路标显示在我们的视野中了。其实现在好多车已经有了这个功能,只是还没有对应的给行人使用的。
  2. 利用 FaceTime 这个能够制作虚拟自己的技术,后面应该能够开发出来真正的虚拟课堂——你可以在虚拟世界中看到你的同班同学们,看到他们每一时刻的表情和手部动作。 3.结合 GPT 这些人工智能,我们应该能够开发出来一个虚拟教师,可以在你戴着设备学习的时候站在旁边给你指导。
  3. 一个简单一些的 app——结合人脸识别,我们可以直接显示你看到的人的名字。老师可以用这个来点名,签到。警察可以戴着这个来识别逃犯和危险分子(这个应该已经有类似的设备和应用了)。
  4. 参观博物馆,动物园,水族馆,植物园的时候我们戴着这个可以直接得到讲解。并且显示出来对应的文字和影音资料。动物园和水族馆和植物园可以直接用手指着里面的动物植物,让它告诉我那个生物的名字,再也不用看着牌子去一一对应了。
  5. 年老了快动不了了可以用这个来穿梭时光,看到自己之前年轻的时候的每个美好的瞬间,感觉跟濒死体验中的回溯时光有点像。
  6. 比较简单的 app——可以弄虚拟留言板,大家写评论可以直接在店里吃饭的时候就在虚拟留言板上写评论了——不过审核员还是进入后台把你的过激评论删掉的。
  7. 另一个比较简单的 app——广告商以后可以根据地理位置投放虚拟广告了,每个店铺除了真实世界,还有虚拟世界的广告。
  8. 比较可怕的一点——以后可能会有公司要求你共享你所有看到的,传感器收集到的你身边的数据。这样大公司或者政府可以通过这些数据对你的生活的环境进行建模。好处是很快就会有和真实世界一样的 3D 地图呈现(细致到每个房间每个家具)。坏处是 AI 终于可以跳脱文字,图片和视频的限制,可以利用所有用户提供的 3D 的世界的信息来训练自己了,AI 肯定会比你更了解你的物品放在哪里了。
  9. 凑数的,终于可以做一个真实的抢红包?app 了,当然各种基于地理位置信息的 AR 游戏( Pokemon Go2 )有可能会掀起一波新的浪潮。以后小朋友们都得带着设备出去抓口袋妖怪了。

先介绍一下它的前身,最早一批开源的 GPT-3.5 客户端项目——?chatgpt-demo。由于这个项目的定位为极简风格,从架构上难以扩展例如多 Tab 、参数设置等功能,因此 3 月中上旬,我们开始了下一代版本的设计和迭代。在近三个月的打磨中,我们陆续完成了多窗口、多 AI 平台(目前为 OpenAI 、Replicate )的支持,并且支持了三种聊天形态。这个项目取名为 Anse ,不久前刚刚获得了 1k star ,个人也感觉达到了一个较为稳定的版本。
Anse: 优雅开源可自部署的 AI WebUI,支持 ChatGPT / DALL·E / Stable Diffusion 等模型

特点

  • 插件化的多 AI 平台支持。参考插件化的概念,每个平台被封装为一个 Provider 插件,可以快速地扩展支持一个全新的平台。目前支持 OpenAI (Chat, DALL·E),Replicate (Stable Diffusion, Waifu Diffusion),未来计划继续支持 Anthropic (Claude),stability-ai ,HuggingFace 等平台。
  • 极致优化的体验。从输入框体验到实际的展示效果、代码高亮、历史消息操作都进行了优化,在功能增加时尽量保持 UI 简洁。同时适配手机端与黑暗模式。
  • 两种连接方式。可以选择本地直连接口,或是通过后端中转访问,以适配不同的网络环境。
  • 三种聊天形态。根据实际对话场景,可选择连续对话(历史记录不清空)、单次对话(一问一答)、图片生成三种聊天形态。
  • 开源与自部署。与前作 chatgpt-demo 一样,依然采用 Astro+SolidJS 技术栈,项目开源并可部署到 Vercel 、Netlify 、Railway 、Docker 等平台(目前自部署暂不支持内置 Key )。

    路线图

    未来我们还计划提供的特性包括:全局搜索、提示词商店、包括网络读取在内的插件系统、Open API 等。

更多可见 Roadmap。

链接

![ ? [首发送码] 庆 WWDC 躲猫猫发布啦!从没见过的高颜值保护手机隐私 App](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/2023/06/07/1686104030.png!mark)
我叫 Leo ,之前做过产品 /设计师,今年开始是一个新手的独立开发者。
四个月前我和朋友组队做的“躲猫猫”应用,是一款帮助用户保护手机隐私的应用,开发了三个月,终于要跟大家见面了。

?[主要功能]

◎ 完美隐藏不想被别人看到的 App ,掌控感带来安全感
◎ 禁止删除 App ,防止误删意外数据丢失
◎ 带娃模式和出借模式,不同场合一键轻松切换
◎ 禁止下载 App ,避免小朋友玩手机无故扣费
◎ 设置玩游戏、刷短视频时间上限,避免小朋友玩的太嗨了

?同类工具产品的差异点在于:

  • 情感化设计,新手上手友好
  • 围绕带娃和临时出借手机场景,提供一键切换
  • 轻量简洁,体积 10M

区别于提供强大而复杂选项的同类产品,我们的出发点是希望可以降低上手难度,让更多人(譬如家长)也能用上,而不是互联网工作者、极客群体的专属利器。在前段时间和 Apple 设计专家交流中,他也表达了情感化设计在工具方向的赞许和期待。

正如第一个版本的介绍所写:

  • 尽管不完善,还是希望能够尽快让大家用上
  • 愿躲猫猫可以在隐私焦虑上,给你带来一些安全感
  • 愿你家里小朋友听话,放下手机和 iPad ,多往户外走走看看

App Store 可以搜索"躲猫猫隐私"
下载链接: https://apps.apple.com/cn/app/id1661287418

? 最后,为了庆祝 WWDC2023 发布会的召开,我们将通过抽奖方式送出 10 个永久会员兑换码。
抽奖方式将按回帖的序号随机抽取,两天后( 6 月 8 日)北京时间下午 6 点截止并公布抽奖结果,祝大家手气不错!

如果大家喜欢这个 App ,可以帮忙在 App Store 给我们写个好评,对于刚发布没有一点流量的产品来说,好评是对我们最大的支持。
_

? btw:《躲猫猫》 App 是我们试水踩坑的项目,目前在开发一款睡眠类应用,欢迎在使用 Apple Watch 关注睡眠的朋友联系我们(微信 leo_huang ),6 月底(在做了在做了)将开始不完善的小范围内测,我们愿意和用户一起打磨好这款睡眠类产品,先放几张设计图。

![ ? [首发送码] 庆 WWDC 躲猫猫发布啦!从没见过的高颜值保护手机隐私 App1](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/2023/06/07/1686104023.png!mark)

黑客是网络世界的一股强大势力,他们可以破解密码、攻击服务器以及操纵网络。虽然黑客常被认为是危险分子,但是也有一些“黑客纯情”佛系黑客通过网络技术为社会贡献力量。与此同时,黑客博客也成为了黑客们分享经验、交流技术的重要场所。

黑客博客涵盖了从入门教程到高级技巧的各种内容,只需按照博客作者的指引,就可以学习到黑客的相关知识。其中,有些博客属于黑客纯情,意味着他们并不会利用其所掌握的技术来犯罪。相反,他们希望通过博客的方式与大家分享他们的经验,让更多人了解网络安全以及黑客所具备的能力。

除了黑客博客,还有一些黑客网站论坛也是黑客们交流技术的重要场所。这些网站论坛汇聚了大量的黑客从业者和爱好者,每个人都可以在这里分享自己的经验、技巧和工具。通过和其他黑客们的交流,他们可以相互学习,更好地掌握网络安全方面的知识。

需要注意的是,虽然黑客博客、黑客网站论坛等场所是学习网络安全知识的好地方,但也可能会吸引一些不良分子前来获取相关的知识。因此,在学习的同时,也需要保持警惕。切勿将所学知识用于非法用途,以免带来不良后果。

总之,黑客博客大全是一个集学习与交流于一身的平台,在这里,你不仅可以学到最新的黑客技术,还可以结交到志同道合的朋友。让我们一起走进黑客的世界,掌握网络安全方面的知识!

rarbg 关站了,设置 sonarr 的时候这个这个 pt 站在开放注册,注册邀请码就在首页公告。没有中文界面,找不到邀请码的话也没必要注册了。

綜合 0Day 站有 16 萬用戶,資源覆蓋面比較廣,什麼東西都有

中文互联网好像没几篇介绍的文章,而且都是老文章复制来粘贴去的。这几天看了一下这站的 wiki ,规则跟常见的 NexusPHP 站点不太一样,简单翻译一下规则。

没有中文界面。
没有新人考核。
不活跃用户不会被注销
不管怎样可以注册个账号囤着。

新账号直接拥有 15GB 的上传量。
每个种子都有做种时间和分享率要求
除了最低全局分享率要求 0.4 以外对每个种子都有额外的做种要求。

每个完整下载的种子在停止做种前要满足 1.0 的分享率或者10 天(等级上升之后要求的时间会减少)的做种时间;每个部分下载的种子要达到 1.0 的分享率。

没满足就停止做种的话会收到 HnR ( hit and run )警告,恢复做种会清除对应警告。

HnR 累积多了会 ban 号。不过这个也可以用积分和其他种子的上传量清...

单个种子的分享率按照实际下载量计算,也就是说免费种子也要上传种子大小的数据量,否则就只能积累做种时间了。

盒装,合集和大于 14GB 的种子(无论种类)全都是免费的
免费种子只需要凑够每个种子做种时间就行,不会影响全局分享率。

“盒装”原文是 boxsets ,应该没翻译错吧?

积分规则:是按照种子尺寸排序之后计算前 100 个种子的积分,超出数量的不计,小于 10MB 的不计。每个种子保底 0.04p 。按照种子大小、做种人数和用户等级有加成,但是不多。
可以用积分换上传。价格介于 1G/90p 到 250G/12000p 。
折算下来每天保底 2G 上传。

(看了一下 reddit ,这站之前的规则还挺奇葩的,没有免费种子没有积分,新用户在种子发布的前 48 消失不能下载.......)

1、寻找漏洞

寻找漏洞的2种办法:

1)谷歌语法

注意:用谷歌语法找站的时候,要加点中文,不然搜出来的站 可能都是英文的。

寻找SQL注入

  1. 公司inurl:php?id=
  2. 公司inurl:asp?id=
  3. 公司inurl:aspx?id=

就像这样:
谷歌搜索sql注入点
参数不一定要是id,也可以是tid、keyword之类的其它参数:

  1. ?tid=
  2. ?keyword=
  3. 弱密码和越权,找后台
  4. 后台inurl:php
  5. 后台inurl:asp
  6. 后台inurl:aspx
  7. 后台site:edu.cn

后台site:edu.cn
asp和aspx的后台貌似还有越权漏洞。
禁用JS,然后直接访问后台URL,有大概率直接进去。

你问我怎么禁用JS?每个浏览器都不一样,看看自己用的是什么浏览器,然后自己百度一下吧。

更多的谷歌语法,可以自行寻找。

2)fofa

语句和谷歌语法一样,换了个写的方式

  1. "php?id=" && country="CN"
  2. "asp?id=" && country="CN"
  3. "aspx?id=" && country="CN"

符号 && 就和and一样,多一个寻找条件
country=”CN”(这条语句的意思是 中国的网站)
我们挖漏洞肯定要挖国内的,所以要加上。
fofa挖国内漏洞
还可以继续加条件,比如 server==”Apache”,那fofa就只会搜索中间件为Apache的网站,搜索功能比较强大。
fofa搜索apache网站漏洞
fofa还有很多语法,可以自行查看。

2、挖掘漏洞

先用以上方法找一个站点,我一般喜欢用谷歌。
找到一个站 id=106
sql注入
减法,页面空白,难道有防护?
sql注入1
看看id=107,也是空白
sql注入2
id=107-1,显示了106的内容,说明107和105是没东西的,差点被误导
sql注入3
and 1=1 和 and 1=2,此处存在SQL注入
谷歌语法新增一枚:list.php?id=
sql注入4
sql注入5
这时候可能会有人 直接上sqlmap,作为过来人:能手注就手注,不要用sqlmap。
因为sqlmap发包频率太快,容易被ban,而且这些站 都是小站,容易跑崩掉。
我之前挖过很多站,直接上了sqlmap,结果网站访问不了。
心里非常慌呀:网站是不是被我跑崩了?我会不会进去呀?
所以,除了盲注以外,其它都尽量手注。

判断字段数为17
挖掘sql注入点漏洞
挖掘sql注入点漏洞1
联合查询,回显点为3
记得要让前面的查询 查不出数据,把106变成小数106.1
挖掘sql注入点漏洞2
这里给大家一个python脚本,输入你要的字段数,可以自动生成,不用自己手敲。(在附件里面)
挖掘sql注入点漏洞3
查询库名,页面空白。
咋回事?
挖掘sql注入点漏洞4
试了其它数据库的语句也不行,只能上sqlmap了
加上一个 delay=1 放慢发包速度(延迟1秒,可以再加)
挖掘sql注入点漏洞5
嗯…淦
挖掘sql注入点漏洞6
所以能手注尽量手注(哭)

3、提交报告

例如 www.baidu.com发现了SQL注入

第一步:“标题”和“厂商信息”和“所属域名”

站长工具https://icp.chinaz.com/baidu.com

查询域名备案信息,看到这个公司名了吗
查询域名备案信息
这样写
漏洞类别啥的,如果不是0day的话,像图中一样就行了
提交漏洞
所属域名 要写该公司的“网站首页”或者“官网”
看到这个了吗
查询域名信息
先访问一遍,没问题再复制上去
漏洞提交
漏洞提交1

第二步:其它内容

漏洞类型:一般都是Web漏洞,然后漏洞是什么写什么,这里是一个SQL注入。
漏洞等级:SQL注入一般都是高危,但如果厂商比较小的话,会降级,降成中危。
漏洞简述:描述一下SQL注入是什么、有什么危害之类的。
漏洞url:出现漏洞的URL。
影响参数:哪个参数可以注入 就写哪个
漏洞POC请求包:Burp抓个包 复制粘贴。
漏洞poc
修复方案,也可以随便写写。
漏洞修复方案
所属地区和行业↓↓↓
网站所属类别
记得刚刚的站长工具吗,不要关,往下拉就有了。
网站信息查询
不过有一些比较小的站点,往下拉没有东西,咋办呢?
域名信息
用爱企查,查询公司名,啥都有(也可以用天眼查,不过个人感觉爱企查比较好用)
如果站长工具里面 查出来的官网打不开,就爱企查,这里也有一个官网。
如果这个官网还打不开,就把漏洞页面的域名写上去。
查询企业信息
爱企查查询企业信息

第三步:复现步骤

除了复现步骤,其它的内容都填完了,复现步骤也是重点。

0、IP域名归属证明
当初刚挖SRC,不会交报告,一股脑交了一大堆,全被打回来了,漏洞白挖 报告白写。报告改了3次才好。
ip域名归属证明

记得前面那个站长工具吗,没错还是他,像这样子写:
漏洞poc复现步骤
1、漏洞页
要让审核员看的清晰,能够完美复现出漏洞,第一步:来到漏洞页

2、该干啥
告诉审核员,来到漏洞页面之后,该干啥
漏洞复现步骤1
3、注入的结果
把注入的结果写在这里就可以了
sql注入结果
至此,一份报告就写好了,可以提交了

如果你闲每次打字麻烦,可以新建一个记事本,把框架写好,提交的时候 替换一些内容就可以了。
把标题、漏洞简述、复现步骤、修复方案
替换的时候替换公司名、域名、截图之类的
可以省不少时间

4、上榜吉时

时间:

一般提交漏洞之后,1-3天会审核漏洞,1-8天之后确认漏洞,确认漏洞之后才能拿积分。
周末审核不上班,顺延。
也就是说,一个漏洞,要8-12天才能获得积分。漏洞是几月确认的,积分就算几月份的。要算好一个月什么时候上分最好。

我一般把 “本月24日-次月20日” 当做上分时间。
比如你想冲8月的排行榜,你要7月24日开始提交漏洞,到8月20日停止。

由于时间不确定,有时候一个漏洞时间短,有时候时间长,所以:
7月23日-月底,中幅度提交漏洞。
8月1日-8月18日,大幅度提交漏洞。
8月19日-8月24日,小幅度提交漏洞。

7月底提交的漏洞,等到确认漏洞,积分会算到8月份,所以中幅度。
8月初和8月中旬,随便交,不怕。
8月底,担心漏洞时间太长,积分会算到9月份,所以小幅度。

5、快速上分

会不会觉得,谷歌语法或者fofa 一个个找站太慢了?
想快速上分,冲榜,拿奖励?
那就要找CMS通杀漏洞,快速、精准。
漏洞别人已经帮你测好了,你只需要验证,如果存在漏洞,直接写报告提交,不用费时间去慢慢测漏洞。如果没有漏洞,走人,换一个站。

哪里找CMS通杀漏洞呢?
百度或者漏洞库,百度效率比较低,一般使用漏洞库,目前接触到的漏洞库有peiqi文库、白阁文库等。甚至可以上cnvd上找。

在文库里面找 有fofa语句的漏洞,比如狮子鱼CMS的SQL注入,现在挺多人挖的。
有一个fofa语句,拿到fofa搜索。
狮子鱼CMS SQL注入漏洞
搜出来的站,就都是狮子鱼CMS了。
fofa狮子鱼CMS的SQL注入
下面还有现成的POC,拿来用就可以了
狮子鱼CMS的SQL注入漏洞测试
fofa批量找站 => POC直接贴 => 如果成功注入了 => 提交报告
如果注入失败,换一个站,反正fofa搜出来很多,不缺这一个。

当然,那么多人挖,估计文库里的漏洞都要成为历史了,所以要找找新的。

我这里试试 拿cnvd来找漏洞,cnvd上的漏洞不公开,没有步骤,fofa语句也没有,怎么利用呢?
先搜索CMS,然后随便选一个。
https://www.cnvd.org.cn/
cnvd漏洞共享平台
就这个吧,然后去百度。
极致cms存在命令执行漏洞
不是我们想要的,不过搜到了其它漏洞,也可以看看。
极致cms存在命令执行漏洞1
他说网站首页有SQL注入,我们想fofa批量找站,就要自己构造fofa语句。
fofa批量找站
看了一下,貌似是/Home/c/HomeController.php 这个文件出问题。
那么我们fofa就搜索:
/Home/c/HomeController.php
随便找个站,POC贴上去。
当然,我只是给个思路,不一定能成功。
网站出错
也可以下载该CMS的源码,看看网站有什么比较特殊的地方,比如title body啥的,都可以用来构造fofa语句。

6、小技巧:冲榜拿分制胜点

漏洞积分是怎么算的?

漏洞盒子有这样一张图:
公益SRC漏洞
公益src漏洞
可以看到,C类厂商是最低的,而我们挖的都是野生漏洞,所以高不到哪去。
百度和腾讯居然是最低?!
漏洞提交src等级
那我们挖的洞,肯定也是按最低的算:
低危漏洞2分
中危漏洞3分
高危漏洞4分

由于厂商太小,影响用户也小,有时候高危的漏洞 会评为中危。
这里建议大家尽量别挖反射型XSS,因为反射型XSS是低危,降一级直接就没了,是浪费时间。

我一般挖SQL注入,大多数都在中危,少部分高危,都是3分3分的拿。

你问小技巧在哪?别急,这就来。
看,差的报告,积分减半。只要审核员能复现出来,报告一般都是良好,正常拿分。
优秀的报告 积分翻倍
制胜点就在这里了,比如你交了一个中危的漏洞是3分,但是你报告写的好,是优秀,积分翻倍变6分,相当于交了两个中危漏洞。
一个顶两
高危网站漏洞
网站漏洞评分
别人交3个中危9分,你交3个中危18分。
这差距直接拉开了好吧。

我这里教大家怎么写优秀的报告

我看很多人,漏洞正文只有文字 没有图片,很简陋,我们最好加上图片,审核员看的舒服一点,心情好点,对我们有好处。

漏洞描述和修复建议 也是一笔带过,什么 “过滤”“问开发”之类的。

优秀的报告,有5个标准。
我在上面的“提交报告”中,教大家提交的报告,漏洞标题、基本信息、漏洞正文,这3个都算好,不用管。
剩下的就是 漏洞描述修复建议
漏洞修复建议

拿狮子鱼CMS的SQL注入来说:

漏洞描述
漏洞危害去百度,改一改就是自己的了,危害最好不少于3点。
漏洞信息描述
修复建议:
附件有个导图,里面有很多漏洞的修复建议,觉得不够好的话,可以自己上网再找找。
漏洞修复建议

我大概忍受这个毛病接近一年了,为此还上了Win11的最冒险的更新频道,期望通过系统更新进行解决

这个问题太难了,我来这个论坛求助过,去淘宝闲鱼,准备付费解决,都是没有解决

并发症有很多,QQ检测中心不弹窗,360的核型模式打不开,360废掉了

360软件管家无法下载可更新的软件包

WPS保存文档卡很久

腾讯管家的软件商店每次打开或者WPS打开,都会RegSvr32弹窗;

WPS进行更新,安装一次安装包,会一直叠加安装进程,无限的安装进程一个又一个新发起
开机都会弹窗

开机后,蓝牙传输的界面就会出现

........

毛病数不胜数

可我就是不想重装系统,大家知道我这一年,是怎么过来的吗 泪目

最后我在 B站上找了一个UP主,他听完我的描述

就判断为病毒,木马;让我安装火绒杀毒

我一弄,果然查出病毒,杀完,我电脑上的各种毛病就清除了。

虽然人家只是动动手指,打几个字,但是真的解决了 我的问题,于是我给他发了一杯奶茶的红包,表示感谢

现在记录一下,希望需要帮助的人搜到,,能够解决同样问题。

一、概述

去年9月份自己参加考试后,遇到的真题,对于我这个小白来说还难的,后来我通过某途径拿到了资料,自己搭建了靶场,无论对于准备考试的还是初学者,都会有帮助,大佬请绕行。目前题目仅给了一个内网IP,除了IP没有任何信息,因此我们需要从信息收集开始。(此题要拿到3个FLAG)

二、技术实战

(1)信息收集-端口扫描

当仅给我们一个IP的时候我们第一步要做的就是端口扫描,看看是否有可疑的端口,这些可疑端口包括不限于网站端口80、8088数据端口3306、1433 高风险端口445、137等。在我经过扫描后,发现了几个可疑的端口1433(SQL SERVER)27689(不知道是啥)
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】

(2)信息收集-查看页面源代码

尝试打开网页看看吧,是一个后台登录站点
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】1

看到一个后台登录站点后,我们的思路应该是先查看(页面源代码)是否有敏感信息,有的时候源代码会泄露敏感信息。经查看也没有看到什么敏感信息,仅知道了他是一个aspx站,这个后边对我们有帮主
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】2

(3)信息收集-目录扫描

我们知道他是aspx站点了,这个时候我们先进行目录扫描,看看是否有备份文件及敏感信息。
把这几个勾选上即可

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】3

(4)万能密码+弱密码

先让他扫描的,我们也不能闲着,试一试后台能不能绕过,先试一试万能密码
admin’ or 1=1— -尝试 结果心凉了,看他那个提示就知道没有必要尝试弱密码了。我们看看目录扫描结果吧

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】4

(5)敏感信息泄露获取

敏感信息主要关注类似与,bak,robot这样的目录
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】5

robot 目前没啥用
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】6

我去数据库账号和密码,喵喵的,当时考试的时候我很开心的。

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】7

看到了网站的登录用户名和密码(登录后拿到第一个flag)

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】8

(6)文件上传绕过GET-SHELL

发现文件上传点
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】9

文件上传的思路:
文件检测点通常是对文件后缀、文件名、文件类型、文件内容检测。因此我们长传的时候为了方便,快速测出漏洞点,用木马的时候建议先用Jpg格式长传
发现是白名单,不允许上传,这不是没戏了,我们看看他是检测了什么
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】10

上传jpg可以,(评论:废话这还用你说)

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】11

我翻了好久,在数据里看到一个提示,应该是数据超过32位会被截断

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】12

于是我有了一个大胆的想法,我们来试一试
尝试了多次,发现还差两位,在增加两位应该就可以了

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】13

当时想终于可以了,心想这不so easy ,当你高兴的太早,世界总有人给你一个大B兜
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】14

正常是复制图片或者点击图片应该就可以跳转到图片的位置或者返回包中能看到路径。可是当我点击的时候,给我下载了,这可咋办没思路了,咋能知道路径呢

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】15

当时在想,要不试一试怎么能让他报错吧,好像是说报错有可能报出路径,报这试一试的态度,复制图片连接,然后在中间加上【】(报错的原理是输入【数组】传参一般会报错),这次报出路径了

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】16

解析成功了,然后我们用菜刀连接下
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】17

菜刀连接成功(在某个目录下拿到第二个flag)

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】18

(6)XP_CMDSHELL提权(考试是内网环境不能上外网,没有选择)

EXEC是sql-server的提权方式需要sa账号才可以。
我们在网站目录下发现了新的备份文件,sa的账号

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】19

(6.1)连接数据库进行提权(考试时要背下来哦,平时网上一查一大堆)
USE master
RECONFIGURE
exec sp_configure ‘show advanced options’,1;
RECONFIGURE
exec sp_configure ‘xp_cmdshell’,1;

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】20

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】21

(6.2)关闭防火墙
exec xp_cmdshell ‘netsh firewall set opmode disable’;

(6.3)开启3389(这个一般靶机环境里带的,实战环境百度下也很简单)
把3389.bat复制进去
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】22

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】23

(6.4)更改administrator的密码
exec xp_cmdshell ‘net user administrator’

敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】24

远程桌面登录(拿到key)
敏感信息泄露+文件上传(新思路)+xp_cmdshell提权【某考试综合题-真题】25

三、总结

拿到一个IP后—->端口扫描(是否风险端口)—->目录扫描(是否有敏感信息)—->登录页面(弱密码+万能密码)——>文件上传(过长截断+报错找到上传路径)——>xp_cmd提权——>开启3389、关闭防火墙、获取管理员密码或更改密码。

4C-2G 来战 [ Golang Websocket 百万连接测试 ]
代码代码: https://github.com/lesismal/go-websocket-benchmark

使用框架: https://github.com/lesismal/nbio

总结:4cpu 核心,2G 内存,100 万连接,1k 数据载荷,500 万次 Echo 测试,TPS 10+万,详情请继续往下看。
前置声明:

  1. 绝大多数人不需要百万级连接场景的优化,但确实有公司有项目有人需要,搞这些东西就是为了满足这些需要;
  2. 标题 4C-2G 只是作为一个参考指标,用不是特别高的配置更能体现框架的承载力。采用这个配置并不是鼓励实际场景就要用这么低的配置去处理百万连接,实际场景应从实际出发;
  3. 否定别人只需要动动嘴,但技术是实在的,如果也有兄弟姐妹想说 nbio 之类的 poller 没用,请确认自己真正了解相关知识,然后带上实际的论据观点再来讨论,如果实在想这么讲,也请先看下旧帖。
    以前很多次遇到很多人先入为主地以为异步框架就是要写回调、golang 框架也如此。 为了避免误解,这里也再对 nbio 的同步异步做下简要说明: nbio 底层非阻塞、异步 io ,但使用逻辑协程池处理 http 请求、websocket 消息,由于 golang 协程不像进程线程成本那么高,所以逻辑协程池 size 比 c/cpp 或者其他语言的逻辑线程数量大得多,所以用户仍然可以写同步逻辑,实际上也是这样处理的。

为了避免既当裁判又当运动员、甚至误导用户,每当有人问我性能时,我通常是建议用户以自己实测得到的性能数据为准,而不是直接相信测试库作者提供的数据。所以建议有兴趣的兄弟姐妹在自己环境进行测试。

如果测试库代码有误,欢迎 Issue/PR 来指正更正。

在这里也邀请并欢迎大家来跑下多个 go websocket 框架的测试,并留言到这里供参考: https://github.com/lesismal/go-websocket-benchmark/issues/11

另外:除了 nbio 以外的其他 go websocket 框架多数主要是基于 golang 标准库、每个连接一个协程,这种普通配置的硬件上无法跑到海量连接,所以百万连接测试的脚本默认只针对 nbio 自己,如果想测试更多参数,请自行修改脚本。 gev 支持百万但不支持 TLS ,gobwas+netpoll 有 for loop 阻塞问题,所以目前没有添加它们,以后可能会添加。

下面是我的 ubuntu vm 上跑的数据,仅供参考

环境:

--------------------------------------------------------------
os:

Ubuntu 20.04.6 LTS \n \l

--------------------------------------------------------------
cpu model:

model name    : AMD Ryzen 7 5800H with Radeon Graphics
--------------------------------------------------------------
              total        used        free      shared  buff/cache   available
Mem:       16362568      396988    15151676        1636      813904    15656380
Swap:             0           0           0
--------------------------------------------------------------
# taskset 0-3, nbio server 只占 4 cpu 核心
run nbio_nonblocking server on cpu 0-3
--------------------------------------------------------------

压测结果:

--------------------------------------------------------------
BenchType  : Connections
Framework  : nbio_nonblocking
TPS        : 26545    # 每秒建立连接数
Min        : 20ns     # 建立单个连接最小耗时
Avg        : 74.80ms  # 建立单个连接平均耗时
Max        : 37.67s   # 建立单个连接最大耗时(实际压测并发度大,有一些容易失败,目前测试逻辑会重试、多次重试时间导致最大值时间较长)
TP50       : 30ns     # 前 50%次建立连接最大耗时
TP75       : 30ns     # 前 75%次建立连接最大耗时
TP90       : 30ns     # 前 90%次建立连接最大耗时
TP95       : 30ns     # 前 95%次建立连接最大耗时
TP99       : 31ns     # 前 99%次建立连接最大耗时
Used       : 37.67s   # 总耗时
Total      : 1000000  # 建立连接数
Success    : 1000000  # 成功建立连接数
Failed     : 0        # 建立连接成功数(实际压测并发度大,有一些容易失败,目前测试逻辑会重试、多次重试都失败才算失败)
Concurrency: 2000     # 并发度( 2000 个协程,每个协程循环建立连接)
--------------------------------------------------------------
BenchType  : BenchEcho
Framework  : nbio_nonblocking
TPS        : 113789     # 每秒 Echo 次数
Min        : 182.56us   # 单次 Echo 最小耗时
Avg        : 435.80ms   # 单次 Echo 平均耗时
Max        : 1.69s      # 单次 Echo 最大耗时
TP50       : 407.61ms   # 前 50%次 Echo 最大耗时
TP75       : 554.56ms   # 前 75%次 Echo 最大耗时
TP90       : 698.06ms   # 前 90%次 Echo 最大耗时
TP95       : 800.52ms   # 前 95%次 Echo 最大耗时
TP99       : 1.07s      # 前 99%次 Echo 最大耗时
Used       : 43.94s     # 总耗时
Total      : 5000000    # 测试 Echo 次数
Success    : 5000000    # 测试 Echo 的成功次数
Failed     : 0          # 测试 Echo 的失败次数
Conns      : 1000000    # 测试的连接数
Concurrency: 50000      # 并发度( 5w 个协程,每个协程循环取当前可用的连接进行 Echo )
Payload    : 1024       # websocket body size
CPU Min    : 95.96%     # CPU 最小值(采集开始时较小)
CPU Avg    : 347.80%    # CPU 平均值
CPU Max    : 380.94%    # CPU 最大值
MEM Min    : 1.82G      # MEM 最小值( Benchmark 开始前有进行 Warmup ,所以起始内存最低值已经较大)
MEM Avg    : 1.92G      # MEM 平均值
MEM Max    : 1.94G      # MEM 最大值
---------------------------------------------------------------------------------------------------

动机

在软件开发中,后台应用的开发是一个非常重要的环节。然而,很多开发者对于后台应用的开发都深恶痛绝。这是因为很多后台应用都是重复的增删改查加上一些小小的特殊逻辑。这些重复性模板上的工作非常不值得花费时间。

与此同时,我们可以看到,大部分 UI 系统都有大量相同的重复工作(如按钮、表单、排版、展示等)。同样地,大部分后台管理平台也有大量相同重复工作。如果我们能够把 UI 需求抽象成一个个 xx-design ,为什么我们后台需求不能抽象成一个开箱即用库呢?

Tushan 的特殊之处在哪里

现在市面上有很多现成的、完整的 xx-admin 应用,直接就做好了一个完整的 admin 项目然后提供给你。直接给你提供一整套的技术栈,你只需要直接运行命令就可以启动了,然后再根据你的需求进行修改与调整。

但是这些真的好用么?一下子面对一个完整的、庞大的系统,相信很多人都是手足无措的,不得不花费大量的时间去学习文档、阅读源码的。很多刚入门的新手或者初次接触到这类系统的同学会将原因归类在自身,是自己的能力问题。但是我多年的编程经验来看,这其实并不是开发者自身的问题。

做减法永远比做加法难
市面上大多数系统都是做好了一个完整的应用让你去做减法,而后期当你的需求超出预设的框架时,相当于天然的背负了大量技术负债 —— 技术负债往往是因为同一个系统前期和后期的设计目的是不一样导致的,而现成的系统当然不能完全匹配上想要进行二次开发的需求。因此这就是为什么很多开发者不愿意去做一个完整系统的二次开发。

随着投入的增加,往往会面临着重构的情况。最后不得不推倒重来,这也是这类现成系统的上限所在。

而tushan的设计就是想要打破传统xx-admin系统上手难、开发难、学习成本高、上限低的困境。

相比于一个现成系统,tushan更多的将自己定位成一个工具库,你可以通过提供的现成工具快速构建出一个开箱即用的后台管理平台的前端项目,而作为工具库的好处在于你可以将tushan无缝的嵌入现有的前端项目中,此外,tushan的学习成本是一个非常平滑的曲线而不是一个陡峭的曲线。渐进式的开发体验会让人很舒服。

相比于做减法的困难,tushan正是在引导开发者做加法,而在做加法的过程中,很多重复的工作都被Tushan完成了,作为业务开发者只需要专注于自己的业务即可。

Tushan 的优势

随着时间的投入完成度发生的变化
在tushan你可以放心的投入时间,获得一个线性的变化。而不是快速获得一个完整项目后面临难以下手的情况
为了减少重复的 CURD 工作,我写了一个库yushan
长久陪伴大于一锤子买卖
Tushan的自身定位就是一个库,而不是一个现成的系统。Tushan可以提供给开发者的是快速的启动页面,也可以长久陪伴用户进行开发。

如果能够理解组件库在开发生命周期流程中的定义,那么也就可以理解Tushan做的事情与定位了。

自由度
在用一些现成的库的时候往往对面对这样的一个问题。就是其他人做好的工作能不能很好的匹配上自己的需求?如果不匹配怎么办?

而Tushan的每一块实现都是可以自由定义的,如果你没有很高的界面要求,你可以用Tushan快速搭建出一套功能完备的页面,如果你有很高的自定义要求,则可以只使用一部分tushan的功能,而一部分则进行自定义。

谁在用

一个简单的Tushan 应用大概会长成以下样子:

import {
  createTextField,
  createEmailField,
  createUrlField,
  jsonServerProvider,
  ListTable,
  Resource,
  Tushan,
} from 'tushan';

const dataProvider = jsonServerProvider('https://jsonplaceholder.typicode.com');

function App() {
  return (
    <Tushan
      basename="/admin"
      dataProvider={dataProvider}
    >
      <Resource
        name="users"
        label="User"
        list={
          <ListTable
            fields={[
              createTextField('id', {
                label: 'ID',
              }),
              createTextField('name', {
                label: 'Name',
                list: {
                  sort: true,
                },
              }),
              createEmailField('email', {
                label: 'Email',
              }),
              createUrlField('website', {
                label: 'Website',
              }),
            ]}
            action={{ create: true, detail: true, edit: true, delete: true }}
          />
        }
      />
    </Tushan>
  );
}

export default App;

预览效果如下:
为了减少重复的 CURD 工作,我写了一个库1
为了减少重复的 CURD 工作,我写了一个库2
为了减少重复的 CURD 工作,我写了一个库3
为了减少重复的 CURD 工作,我写了一个库4

相关链接

MidJourney-Styles-and-Keywords-Reference-WWW
一个包含样式和关键词的参考资料,你可以在 MidJourney AI 中使用。还有一些页面显示了分辨率的比较,图像的权重,以及更多的内容!

A reference containing Styles and Keywords that you can use with MidJourney AI. There are also pages showing resolution comparison, image weights, and much more!

数据来源于: https://github.com/willwulfken/MidJourney-Styles-and-Keywords-Reference

但我做成了网站,加载更快!

url: https://mj.aitool360.com/

MidJourney 样式和关键词的参考资料
MidJourney 样式和关键词的参考资料1

前言

半天前,reddit 上一篇名为 “Oracle trying to troll us.”的帖子突然爆火,随后这张图片被传入中文互联网,同样引发了网友热烈的讨论。这篇帖子的文章内容只有这样一张图片:
Java 的 main 方法声明终于要变天了吗? —— 浅谈 JEP 4451
如果你是一位苦逼的 Java 程序员,那么当你看到这张图的时候也许震惊的会跳起来,但是如果你没有看懂,那就且听我细细往下说......

JEP 445 的前世今生

JEP 445: Unnamed Classes and Instance Main Methods (Preview) 的标题翻译过来是 “未命名类和实例 main 方法”,仅看标题你可能并不认为和上面那些东西有什么关系,但事实上,上述特性确实是由此 JEP 带来的。

事实上,JEP 445 早在 2023 年 2 月就被创建了,单之所以刚刚才火,是因为 OpenJDK 14 个小时前才批准了这个 JEP 的代码实现:JDK-8306112 Implementation of JEP 445: Unnamed Classes and Instance Main Methods (Preview) by JimLaskey · Pull Request #13689 · openjdk/jdk (github.com)

值得一提的是,JEP 445 是一个即将在 Java 21 中引入的预览( preview )提案,这意味着你需要通过在编译和运行时传入 --release 21 和 --enable-preview 命令行参数才能体验到这个功能

这种简化写法并不是 Java 的特例,其实早在 .NET 6 ,C# 就引入了一套 "控制台模板" 语法,其允许你在 C# 的主类文件(这里是 Program.cs)这么写:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

其等价于:

using System;

namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

很神奇对不对,但实际上说简单点这只是套语法糖而已。那么,JEP 445 也是如此吗?答案是否定的,甚至,它连语法糖都没有引入。

真的是变天了吗?

如果你仔细查看 JEP 提案的原文,你会发现他们在 Summary 和 Goal 上提到最多的两个词是:students 和 beginners:
Java 的 main 方法声明终于要变天了吗? —— 浅谈 JEP 4452

而仔细读读这部分内容你会知道,这个 JEP 设立的初衷是为了为学生和 Java 新手隐去晦涩难懂的部分,仅保留一些简单的语法,方便他们快速入门和学习 Java ,但并不是引入了一套额外的 Java 方言。

从始至终,这套东西就不是给普通 Java 开发者使用的,而是面向学生和新手入门使用的。

那么,JEP 445 到底引入了一套什么样的机制呢?

未命名类和实例 main 方法

JEP 445 引入了如下两个机制:Unnamed Classes 和 Instance Main Methods,通过如下两个机制,简化了 main 方法的声明。让我们先从后者开始讲起。

实例 main 方法
首先,我们来看如下代码:

public class HelloWorld { 
    public static void main(String[] args) { 
        System.out.println("Hello, World!");
    }
}

一个非常经典的“Hello World”代码,一个 HelloWorld.java 文件中包含了一个 HelloWorld 类,其中包含一个公开的静态 main 方法,并包含 args 形参;方法体内调用 System.out.println 方法打印 Hello, World! 到标准输出中。

这无疑非常复杂,以至于我用自然语言描述这段代码都用了三行字。而最烦人的是,这是 main 方法唯一的写法,你没有任何办法简化这套代码,哪怕像 C 语言那样隐去 args 形参都不行。

为了解决这个问题,JEP 445 引入了一套“灵活的启动协议( flexible launch protocol )”。首先,这允许“实例 main 方法”存在,所谓“实例 main 方法”,就是指“非静态的 main 方法”,这意味着,main 方法将可以是 non-static 的;接着一个 main 方法的访问修饰符将不必是 public 的,只需要是 non-private(也即public, protected 和 package-protected)的即可;最后,main 方法中的 String[] args 将是可选传入的。这意味着,你现在可以将代码简化到如下程度:

class HelloWorld { 
    void main() { 
        System.out.println("Hello, World!");
    }
}

因此,上述代码从来就不是什么新的语法糖,而是我们所熟知的东西:一个 HelloWorld.java 文件中包含了一个 HelloWorld 类,其中包含一个包访问级别的非静态 main 方法,不包含形参;方法体内调用 System.out.println 方法打印 Hello, World! 到标准输出中。

非常有意思对不对,而如果存在多个 main 方法,将会以如下的优先级,选择优先级最高的一个 main 调用:

  1. 一个在启用类中声明,采用 non-private 访问级别的 static void main(String[] args) 方法;
  2. 一个在启动类中声明,采用 non-private 访问级别的 static void main() 方法;
  3. 一个在启动类中声明,或从其超类中继承的,采用 non-private 访问级别的 void main(String[] args) 方法;
  4. 一个在启动类中声明,或从其超类中继承的,采用 non-private 访问级别的 void main() 函数。
    这其实改变了 Java 原有的行为:如果一个启动类声明了一个非静态的 main 方法,同时其超类存在一个“传统的”public static void main(String[] args) 方法,那么现在 Java 将会调用前者,而不是后者(当然,如果你真的这么做了,JVM 会在运行时输出一个警告来提示你)。

最后,如果一个即将被调用的 main 方法是一个内部类的成员,那么程序将无法运行。

所以,JEP 445 事实上是通过一系列语法层面的让步引入了一套更加方便使用的 main 方法模板,而并不是引入了一套新的语法或是语法糖。

未命名类

也许你早已知道,当一个 Java 类文件位于源代码文件的顶级,也就是说其不属于任何包中时,那我们就说这个类属于一个“未命名包”。在 JEP 445 中,引入了“未命名类”的概念,当一个类源代码中不包含任何类声明,而仅有方法声明和成员变量声明时,该类便被称为“未命名类”。

未命名类永远是未命名包的成员,而且其永远是 final 的,也就是说其不能实现或拓展任何接口和类;未命名类无法使用静态方法的方法引用,但是仍然可以使用 this 关键字或非静态方法的方法引用。

未命名类不能被其他类按名称引用,也无法构造其实例;其内部写法与显式声明的类完全相同,除了其只能有一个默认的无参构造方法。

通过引入未命名类,上述代码最终可以被简化成这样:

void main() {
    System.out.println("Hello, World!");
}

一个未命名类,其中包含一个包访问级别的非静态 main 方法,不包含形参;方法体内调用 System.out.println 方法打印 Hello, World! 到标准输出中。

除此之外,一个未命名类依然可以拥有成员变量和成员方法,例如这样:

String greetingMsg = "Hello, World!";

String greeting() { return greetingMsg; }

void main() {
    System.out.println(greeting());
}

当 JVM 试图执行一个在一个未命名类中的非静态 main 方法时,实际上等同于创建了一个匿名类,然后再执行方法:

new Object() {
    // the unnamed class's body
}.main();

我们可以通过 java 指令来直接运行一个未命名类源代码,像是这样:

$ java HelloWorld.java
然后,Java 编译器会将其编译为 HelloWorld.class,找到 main 方法并执行。即使这里我们给未命名类分配了一个名字,但是这个名字实际上是不能用在 Java 源代码中的。

最后,在当前预览版本中,如果我们的 Java 代码中含有未命名类,那么 javadoc 实用工具将无法生成 API 文档,因为其本身就无法被其他类访问。

后记
看完整个 JEP ,我只想感叹 OpenJDK 开发者的脑洞确实是大,竟然通过引入两套新的机制,巧妙地解决了 Java main 方法冗长的问题,而并未引入新的语法或语法糖,以造成用户体验割裂。

这篇 Reddit 文章下的高赞评论给出了 JEP 445 的链接,随后提问到:“这将是 Java 模板代码梗的末日吗”,我想,至少在 JEP 445 中,这种痛苦还远未结束吧。(完)
Java 的 main 方法声明终于要变天了吗? —— 浅谈 JEP 4453

引用

准备工作1、root的手机一部 (没有root的稍后再发)
2、下载压缩包模块安装 链接是:https://wweu.lanzoub.com/il2KU0xsgmej
3、下载alook浏览器(获取ck时使用)

教程开始
第一步:利用面具刷入下载好的青龙模块,然后重启手机
手机搭建青龙面板,进行美团签到及羊毛任务

第二步:浏览器进入 http://127.0.0.1:5700 然后注册登录,登录进去就是成功后的面板
第三步:开始拉库
点击左上角 选择定时任务,然后进入后点击新建任务,
名称我写的是美团 ( 这个可以自己修改)
命令:ql raw https://raw.githubusercontent.com/leafTheFish/DeathNote/main/meituanV3.js
定时规则:33 7,19 * * * ( 这个可以自己修改)
点击确定

第四步:添加变量
点击左上角 选择环境变量,然后进入后点击新建变量,
名称 写:meituanCookie
值:抓取自己的token (教程在这步后面)
备注:随便写
然后点击确定
token抓取:1、在alook浏览器中网页登录自己的账户

          2、点击下面三条杠,右滑找到工具箱点进去
           3、点击开发者工具,选择cookies
           4、 从里面找到自己token复制出来

第五步:点击左上角 选择配置文件,然后进入后选择config.sh
划到最下面添加 export meituanCookie=你自己的token
第六步:回到定时任务找到美团任务划到最后面,在操作中点击运行按钮,就可以成功了

之前拿荣耀magicbook 2018来装了win11,后来又含泪降了win10,从此之后。。。。
指纹再也无法录入了,我一度怀疑指纹坏了。
今晚好奇又折腾了一下,终于找到解决办法了。
在这之前各种折腾,在官网下载了各种驱动都不行,网上搜来搜去都没找到好的办法。
今晚突然间想到又整一下,万一得行呢?
又是一番百度,知乎文也翻了几篇都无法解决,
不死心再翻了翻让我找到了售后的解决办法居然不是叫去线下。
华为售后的方法链接 ↓↓
参考华为售后https://consumer.huawei.com/cn/support/content/zh-cn00728224/
附上需要用到的Intel_ME:
驱动安装方法:链接:https://caiyun.139.com/m/i?005CcYsySg1Zm
提取码:CtRy
复制内容打开移动云盘PC客户端,操作更方便哦
下载文件夹的Intel ME驱动
下载好后直接解压第一次,解压出另外一个驱动压缩包,再次解压压缩包
第二步双击打开驱动软件,打开后点下一步安装
安装完成选择立即重启。
快速解决荣耀magicbook2018升级、重装系统后无法录入指纹的烦恼

在输入时可以用中文提问,到结尾得加用中文回复就得到中文了。不然会反馈回来是英语的回答。
由高级 GPT4 AI Asking 提供支持 - FreeChat with AI Open Smart Chat Assistant向 AI advanced GPT4 Open Chatbot App 提出任何问题并获得即时答复。
与最先进的人工智能聊天!借助先进的 GPT4,与 Chatbot AI 个人助理一起享受个性化的对话体验。 ChatGPT 直观且用户友好的界面使您可以轻松地与您的问题进行交互并获得信息丰富的答复。高速下载地址:里面有翻译好的对照图,看一下就会操作了。
目前是免费https://www.123pan.com/s/89jRVv-MOoXv.html提取码:52po

data:text/html;base64,PGh0bWwgY29udGVudGVkaXRhYmxlPmVkaXQgbWU8L2h0bWw+

复制到浏览器即可使用,可加书签,可分享,不需要网络,全平台可用

有时候需要有个地方临时复制粘贴一些东西,这时候可以用记事本,但是记事本或者其他文本编辑软件关闭时一般需要确认是否保存,且这些临时内容会和工作内容混合

还有个问题是记事本页面不够大,ui 也略复杂一点

这个网页版记事本就能支持这种场景,原则上不支持保存,随用随关,铺满全屏

而且我觉得最有意思的点是,这其实是一个彻底开源极端易于分享的软件形式,软件所有内容都塞到 url 数据里,所见即所得,无需安装,适配全平台,用户还能随时修改逻辑,无需网络,没有服务器成本

缺点是软件大小有限制 以及软件作者可能不太好赚钱

原理是用了 Data URL ,Data URL 由四个部分组成:前缀( data:)、指示数据类型的 MIME 类型、如果非文本则为可选的 base64 标记、数据本身

windows 下可以配合 chrome 的 frame ,以无 tab 的方式启动这样一个页面。
建立一个这样的快捷方式(其中"C:\Program Files\Google\Chrome\Application\chrome.exe"为 chrome 的路径,自行修改)
"C:\Program Files\Google\Chrome\Application\chrome.exe" --chrome-frame --app=data:text/html;base64,PGh0bWwgY29udGVudGVkaXRhYmxlPmVkaXQgbWU8L2h0bWw+

目前 Go 圈有很多款异步的网络框架:

这里面最早的实现是 evio 。evio 也存在一些问题,之前也写过evio文章介绍过。 其他比如 nbio 和 gnet 也写过一些源码分析。

为什么会出现这些框架?之前也提到过,由于标准库 netpoll 的一些特性:

  • 一个 conn 一个 goroutine 导致利用率低
  • 用户无法感知 conn 状态
  • .....
    这些框架在应用层上做了很多优化,比如:Worker Pool,Buffer,Ring Buffer,NoCopy......。

都分析了好几篇的代码了,那么咋么说也得自己动手搞一个来达成学习目的。

没错,这就是easyio的由来。

它是一个最小化的 IO 框架,只实现最核心的部分,加起来不超过 500 行代码。

也没有用户端上层应用的优化,且目前只实现了 linux 的 epoll ,以及只能运行 tcp 协议。

简单的 demo ,

服务端:

package main

import (
    "context"
    "fmt"
    "os"
    "os/signal"
    "syscall"

    "github.com/wuqinqiang/easyio"
)

var _ easyio.EventHandler = (*Handler)(nil)

type Handler struct{}

type EasyioKey struct{}

type Message struct{ Msg string }

var CtxKey EasyioKey

func (h Handler) OnOpen(c easyio.Conn) context.Context {
    return context.WithValue(context.Background(), CtxKey, Message{Msg: "helloword"})
}

func (h Handler) OnRead(ctx context.Context, c easyio.Conn) {
    _, ok := ctx.Value(CtxKey).(Message)
    if !ok {
        return
    }
    var b = make([]byte, 100)
    _, err := c.Read(b)
    if err != nil {
        fmt.Println("err:", err)
    }
    fmt.Println("[Handler] read data:", string(b))

    if _, err = c.Write(b); err != nil {
        panic(err)
    }
}

func (h Handler) OnClose(_ context.Context, c easyio.Conn) {
    fmt.Println("[Handler] closed", c.Fd())
}

func main() {
    e := easyio.New("tcp", ":8090",easyio.WithNumPoller(4), easyio.WithEventHandler(Handler{}))

    if err := e.Start(); err != nil {
        panic(err)
    }

    defer e.Stop()

    c := make(chan os.Signal, 1)
    signal.Notify(c, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGINT)
    <-c
}

上面的代码,初始化一个 easyio ,启动一个 tcp 服务,监听端口 8090 ,options 里面设置 epoll 的数量,以及设置事件处理器。

当一个新连接到来时会回调 OnOpen 函数,此时你可以设置自定义的 ctx ,那么当对应连接读事件到来 OnRead 回调,你可以拿到之前设置的 ctx ,调用 conn.Read 读取数据,且通过 Write 向对端写数据。

这里需要注意的是,一个连接如果数据没读完,当 OnRead 执行结束,下一轮会继续触发回调代码,因为底层 epoll 采用的是 LT 触发方式。

简单的客户端

package main

import (
    "fmt"
    "net"
    "os"
    "os/signal"
    "syscall"
)

func main() {
    conn, err := net.Dial("tcp", ":8090")
    if err != nil {
        panic(err)
    }
    n, err := conn.Write([]byte("hello world"))
    if err != nil {
        panic(err)
    }

    go func() {
        b := make([]byte, 100)
        if n, err = conn.Read(b); err != nil {
            panic(err)
        }
        fmt.Println("read data:", n, string(b))
    }()

    defer conn.Close()

    ch := make(chan os.Signal, 1)
    signal.Notify(ch, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)

    <-ch
}

源码地址:https://github.com/wuqinqiang/easyio