欢迎来到皮皮网官网

【口袋微店源码】【jsp网站源码论坛】【怎么查看mybatis源码】sha256源码 github

时间:2024-11-13 14:43:45 来源:86 dnf 源码

1.Microsoft visual c++弹窗?
2.SHA256算法描述
3.嵌入 luci-app 服务的 openwrt(lede) 编译过程
4.(02)Python密码库Cryptography探究学习---深入理解Fernet
5.网络安全之SHA加密算法介绍

sha256源码 github

Microsoft visual c++弹窗?

       适用于 Linux 的 Windows 子系统中的 Visual Studio Code 服务器使用本地 WebSocket WebSocket 连接与远程 WSL 扩展进行通信。网站中的 JavaScript 可以连接到该服务器并在目标系统上执行任意命令。目前该漏洞被命名为CVE--。

       这些漏洞可以被用于:

       本地 WebSocket 服务器正在监控所有接口。如果允许通过 Windows 防火墙,外部应用程序可能会连接到此服务器。口袋微店源码

       本地 WebSocket 服务器不检查 WebSocket 握手中的 Origin 标头或具有任何身份验证模式。浏览器中的 JavaScript 可以连接到该服务器。即使服务器正在监控本地主机,也是如此。

       我们可以在特定端口上生成一个Node Inspector示例,它还监控所有接口。外部应用程序可以连接到它。

       如果外部应用程序或本地网站可以连接到这些服务器中的任何一个,它们就可以在目标计算机上运行任意代码。

       Visual Studio Code 库是不断更新的。我将使用一个特定的提交 (bbcaf3db8bb8adf0ccfa)。

       $ git clone /microsoft/vscode $ git reset --hard bbcaf3db8bb8adf0ccfa

       我们可以使用 Code (lol) 来导航源代码。事实上,我已经在 WSL 中为这个漏洞创建了具有相同扩展名的概念验证。

       Visual Studio Code在 WSL 内以服务器模式运行,并与 Windows 上的代码示例对话(我称之为代码客户端)。这使我们可以在 WSL 中编辑文件和运行应用程序,而不需要运行其中的所有内容。

       远程开发架构

       可以通过 SSH 和容器在远程计算机上进行远程开发。GitHub Codespaces 使用相同的技术(很可能通过容器)。

       在 Windows 上使用它的方法:

       1.打开一个WSL终端示例,在Windows上的代码中应该可以看到远程WSL扩展;

       2.在 WSL 中运行code /path/to/something;

       3.如果未安装代码服务器或已过时,则会下载它;

       4.VS Code 在 Windows 上运行;

       5.你可能会收到一个 Windows 防火墙弹出窗口,jsp网站源码论坛用于执行如下所示的可执行文件:

       服务器的防火墙对话框

       这个防火墙对话框是我执行失败的原因。出现该对话框是因为 VS Code 服务器想要监控所有接口。

       从我信任的Process Monitor开始:

       1.运行进程监控器;

       2.在WSL中运行code .;

       3.Tools > Process Tree;

       4.我运行代码(例如,Windows Terminal.exe)的终端示例中运行Add process and children to Include filte。

       Procmon 的进程树

       经过一番挖掘,我发现了 VSCODE_WSL_DEBUG_INFO 环境变量。我只是在 WSL 中将 export VSCODE_WSL_DEBUG_INFO=true 添加到 ~/.profile 。运行服务器后我们会得到额外的信息。

       VSCODE_WSL_DEBUG_INFO=true

       输出被清理。

       检查命令行参数。

       可以看到出现了WebSocket词汇。

       运行 Wir.shark 并捕获loopback接口上的流量。然后我再次在 WSL 中运行代码。这次可以看到两个 WebSocket 握手。

       在 Wireshark 中捕获的 WebSocket 连接

       该运行中的服务器端口是,我们也可以从日志中看到。在 Windows 上的代码客户端中打开命令面板 (ctrl+shift+p) 并运行 > Remote-WSL: Show Log。

       远程 WSL:显示日志

       最后一行有端口:在 mon/ipc.net.ts 中看到协议的源代码。

       来自服务器的第一条消息是 KeepAlive 消息。

       在协议定义中,我们可以看到不同的消息类型。

       在 /src/vs/platform/remote/common/remoteAgentConnection.ts 中,它在代码的其他部分被称为 OKMessage 和heartbeat。

       客户端在/src/vs/platform/remote/common/remoteAgentConnection.ts的connectToRemoteExtensionHostAgent中处理此问题。客户端(Windows上的代码)发送这个包,它是一个KeepAlive和一个单独的认证消息。

       最初,我认为长度字段是怎么查看mybatis源码 个字节而不是 4 个字节,因为其余的字节总是空的。然后我意识到只有常规消息使用消息 ID 和 ACK 字段,而且我只看到了不规则的握手消息。

       在修复之前,没有勾选此选项。

       注意:在 -- 更新之前(commit bbcaf3db8bb8adf0ccfa)客户端没有发送数据。但是,使用此提交,我们仍然可以在没有此密钥的情况下发送消息并且它会起作用。这是我们给服务器签名的内容,以检查连接到正确的服务器。

       服务器响应一个签名请求。

       另一个 JSON 对象:

       服务器已经签名了我们在前一条消息中发送的数据,并用它自己的数据请求进行了响应。

       客户端验证签名的数据,以检查它是否是受支持的服务器。当创建我们的客户端时,可以简单地跳过。

       使用options.signService.validate 方法,然后就会得到/src/vs/platform/sign/node/signService.ts。

       vsda 是一个用 C++ 编写的 Node 原生插件,将 Node 原生插件视为共享库或 DLL。该插件位于 /microsoft/vsda 的私有存储库中,根据mit}/node_modules/vsda/build/Release/vsda.node。

       我找到了/kieferrm/vsda-example,并通过一些实验找到了如何使用它创建和签名消息。

       1.用msg1 = validator.createNewMessage("")创建一个新消息,输入至少4个字符。虚拟币导航源码

       2.使用signed1 = signer.sign(msg1)进行签名。

       3.使用 validator.validate(signed1) 对其进行验证,响应为“ok”。

       需要注意的是,如果你创建了新消息,则无法再验证旧消息。在源代码中,每条消息都有自己的验证器。

       Linux 版本有符号,大小约为 KB。把它放到 IDA/Ghidra 中,应该就可以开始了。

       我花了一些时间,想出了这个伪代码。可能不太正确,但可以让你大致了解此签名的工作原理。

       1.用当前时间 + 2*(msg[0]) 初始化 srand,它只会创建 0 到 9(含)之间的随机数;

       2.从许可证数组中附加两个随机字符;

       3.从 salt 数组中附加一个随机字符;

       4.SHA;

       5.Base;

       6.?;

       7.Profit。

       仅从许可证数组中选择前 个位置的字符,它总是 rand() % ,但salt 数组翻了一番。

       许可证数组的字符串如下所示:

       salt 数组的前 个字节(查找 Handshake::CHandshakeImpl::s_saltArray)是:

       我从来没有真正检查过我的分析是否正确,不过这无关紧要,知道如何使用插件签名消息,这就足够了。

       接下来,客户端需要签名来自服务器的数据并将其发送回来,以显示它是yy协议源码分析一个“合法”的代码客户端。

       服务器响应如下:

       客户端发送了如下消息:

       提交应该匹配服务器的提交哈希。这不是秘密。这可能是最后一个稳定版本提交(或最后几个之一)。这只是检查客户端和服务器是否在同一版本上。它也可以在 /parsiya/code-wsl-rce /parsiya/Parsia-Code/tree/master/code-wsl-rce

       模拟代码客户端

       创建客户端并使用协议连接到服务器的代码位于 VS Code GitHub 存储库中,这需要大量的复制/粘贴和解析,我只花了几个小时。

       如果要创建一个快速的概念验证,应该满足一些假设:

       1.找到本地的 WebSocket 端口;

       2.从外部连接到Node Inspector示例;

       查找本地 WebSocket 端口并不难,从浏览器扫描本地服务器并不是什么新鲜事。服务器也可以从外部使用,因此我们不受那里的浏览器约束。

       Chrome 限制不起作用,因为 WebSocket 服务器需要一个网络服务器来处理握手。我也很好奇 WebSocket 节流是 Chrome 特定的保护还是 Chromium 的一部分。

       有趣的是,Chrome 浏览器有一个保护机制,可以防止恶意行为者暴力破解 WebSocket 端口,它在第 次尝试后开始节流。不幸的是,这种保护很容易被绕过,因为扩展的 HTTP 和 WebSocket 服务器都在同一个端口上启动。这可用于通过向 img 标签添加 onload 处理程序来检查特定本地主机端口上的是否存在来强制所有可能的本地端口。

       也就是说,这是一个开发环境,用户可能整天都在 WSL 中开发并且从不关闭他们的浏览器选项卡,因此如果他们打开我们的网站,我们就有可能找到它。

       连接到Node Inspector示例是另一回事,我们无法从浏览器执行此操作,因此我们需要我们的服务器可以访问受害者的计算机。

       第二种利用方法(模拟代码客户端)没有这些限制,因为浏览器可以与本地服务器通信并执行所有操作。它只需要我们对协议进行逆向工程并找出要发送的正确消息。

       当你收到 WebSocket 升级请求时,请根据许可名单检查 Origin 标头。代码客户端在该标头中发送 vscode-file://vscode-app,以便我们可以使用它来操作。

       参考及来源:/B-Con/crypto...

       4 References

嵌入 luci-app 服务的 openwrt(lede) 编译过程

       Lean优化后的LEDE版本的OpenWRT在原版基础上整合了实用功能。LUCI-APP中包含多种应用,提供手动配置与IP路由划分,或自动负载均衡与节点选择管理多个网络进程。本文旨在分享OpenWRT编译经验,不应用于商业或非法用途。

       为了编译过程顺利进行,需要满足以下前提条件:

       1. 需在root账号下新建一个编译账号,并确保给予适当权限,避免未知错误。

       2. 在WSL中配置IP与端口,以提升海外源的下载速度,避免网络延迟问题。

       3. 从GitHub下载LEDE和LUCI-APP源代码,获取项目架构。

       4. 根据LUCI-APP文档,将LUCI-APP源代码放置于LEDE的package路径,以便Makefile文件正确识别。

       在完成基本配置后,进入编译阶段:

       1. 安装所需的编译工具包。

       2. 在LUCI-APP界面中勾选所需的包名,保存配置。

       3. 通过设置下载相关DL包,建议WSL环境下使用单线程下载,避免并发问题。

       4. 处理下载失败,检查错误日志,确认包名,从镜像源下载,并验证sha哈希值一致性,确保文件完整。

       5. 下载完毕后,启动编译过程,同样推荐单线程编译,避免潜在错误。

       6. 编译完成后,检查bin目录下是否生成了.img文件,确认编译成功。

       烧录过程如下:

       1. 制作WinPE系统(如老毛桃),将所需文件放入同一文件夹。

       2. 运行PE系统,打开CMD控制台,执行烧录命令。

       3. 登录默认IP地址..1.1,输入默认密码“password”,系统左侧导航栏出现LUCI-APP对应文件名,表明编译成功。

       总结,此过程实现了LUCI-APP服务集成的OpenWRT编译与烧录,为后续使用奠定基础。

()Python密码库Cryptography探究学习---深入理解Fernet

       本节深入剖析Python密码库Cryptography中的Fernet组件,帮助读者理解其在实际应用中的加密和认证机制。

       Fernet并非单一的对称加密算法,而是密码学原理的综合运用,具备以下核心特性:首先,它采用密码学安全的随机密钥,确保算法的安全性;其次,利用AES加密算法(位密钥)配合PKCS7填充,以CBC模式加密数据,提供加密功能;最后,利用SHA哈希函数生成消息认证码(HMAC),实现数据的认证。

       要深入了解,可以参考github.com/pyca/cryptography的源代码。其关键点包括:

       使用符合密码学要求的随机密钥,通常通过操作系统提供的随机数生成器如Unix的/dev/urandom或Windows的CryptGenRandom获取,而非简单的编程函数如Python的rand()。

       密钥的生成有两种方式:Fernet自动生成或用户设定密码并使用PBKDF2HMAC生成,后者更具灵活性。

       Fernet支持加密和认证,包括数据填充以确保完整,采用AES-CBC模式加密,以及利用HMAC确保数据在传输过程中不被篡改。

       总的来说,Fernet的使用涉及随机数的生成、加密算法的选择与应用,以及认证码的生成,这些都是实现cryptographic recipes(密码学配方)不可或缺的步骤。对于不熟悉的概念,可结合实际应用逐步熟悉,我将在后续更深入地探讨。

网络安全之SHA加密算法介绍

       在互联网技术的飞速发展中,汽车领域的网络安全问题日益凸显,尤其是在车联网时代,汽车电子控制单元(ECU)成为黑客攻击的新目标。为了守护数据安全,本文将深入探讨SHA安全散列算法,特别是其中的SHA,它如何在保护汽车ECU数据免受威胁中扮演重要角色。

       SHA是一种强大的哈希算法,其核心在于将任意长度的消息压缩为固定长度的位散列值。这个过程分为两个关键步骤:

信息预处理:首先,消息需要进行填充,以确保其长度满足算法要求。这包括填充比特位和附加长度信息,确保数据的完整性。

计算摘要:接着,消息被分块并进行扩展,通过迭代计算,执行复杂的运算单元操作和逻辑函数,如static const WORD k[] =...所示,每个步骤都确保了结果的安全性和唯一性。

       值得一提的是,sha_init(),sha_transform()等函数分别初始化和处理数据,它们在算法执行过程中起到至关重要的作用。

       SHA的HMAC变种更是结合了密钥和明文哈希,为数据加密提供了额外的防护层。如果你对这部分细节感兴趣,可以参考SHA--.pdf文档,或浏览GitHub上的源代码,以深入了解算法的实现。

       对于更深入的学习和讨论,别忘了关注我们的公众号进击的程序喵(swdesigner),那里有更多的技术分享和网络安全知识等着你。

       这段文字着重阐述了SHA算法在车联网时代的应用,以及其在保护汽车ECU数据安全中的关键步骤和原理,同时为读者提供了进一步学习的资源链接。通过详细的解释,我们深入了解了这个算法在网络安全中的价值。

copyright © 2016 powered by 皮皮网   sitemap