1.Microsoft visual c++弹窗?
2.通达信公式进阶(1):如何导入和导出公式?
3.若用9位机器表示十进制-101,协议源码则源码表示形式为:
4.用JAVA写出源代码。协议源码运行结果如下?
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 防火墙弹出窗口,用于执行如下所示的可执行文件:
服务器的防火墙对话框
这个防火墙对话框是我执行失败的原因。出现该对话框是因为 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和一个单独的认证消息。
最初,我认为长度字段是 个字节而不是 4 个字节,因为其余的字节总是空的。然后我意识到只有常规消息使用消息 ID 和 ACK 字段,而且我只看到了不规则的握手消息。
在修复之前,没有勾选此选项。
注意:在 -- 更新之前(commit bbcaf3db8bb8adf0ccfa)客户端没有发送数据。但是,使用此提交,easyui权限系统源码下载我们仍然可以在没有此密钥的情况下发送消息并且它会起作用。这是我们给服务器签名的内容,以检查连接到正确的服务器。
服务器响应一个签名请求。
另一个 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) 对其进行验证,eclipse开发系统源码下载响应为“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)是:
我从来没有真正检查过我的分析是否正确,不过这无关紧要,知道如何使用插件签名消息,这就足够了。
接下来,客户端需要签名来自服务器的数据并将其发送回来,以显示它是一个“合法”的代码客户端。
服务器响应如下:
客户端发送了如下消息:
提交应该匹配服务器的提交哈希。这不是秘密。这可能是最后一个稳定版本提交(或最后几个之一)。这只是检查客户端和服务器是否在同一版本上。它也可以在 /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,以便我们可以使用它来操作。
参考及来源:/blog/---rce-in-visual-studio-codes-remote-wsl-for-fun-and-negative-profit/
通达信公式进阶(1):如何导入和导出公式?
通达信公式的进阶教学已启程,专为深化理解和掌握更深入技巧的交易者。如果你尚未体验入门教学,请点击链接进行浏览和学习。进阶教学聚焦于特殊应用技能,旨在让你对通达信公式有全面的洞察。期间,我会分享一系列通达信函数精讲和精选指标案例,以便于大家实践和理解。
针对粉丝提问较多的导入和导出公式问题,本次将详细讲解两种方式:复制粘贴源码以及通过公式文件的导入和导出。具体步骤如下:
源码复制注意事项
通达信公式的源码包含公式表达式的一系列文本。例如,MA公式源码为从'MA1'开始至';'结束的代码段。复制源码后,建立相应类别的新公式,如新建技术指标'BowanYuDan_',然后将源码粘贴进去。在聊天软件复制时,粘贴后可能产生排版错乱和无效换行,无需修改。但在测试公式时,若有错误显示,应检查是否缺少参数部分。确保参数完整,公式便能正常运行。
公式文件的导出与导入
导出公式以文件形式保存,包含了源码、参数、公式名、注释和绘图方式等。公式文件存储于通达信内置的公式管理器中,导出文件则需使用管理器的导出功能。选中公式、点击快速导出,系统自动生成命名为公式名的文件。保存此文件即可。需要注意,若选择完全加密导出,将无法编辑文件,仅能启用,下一期教学将介绍这一加密模式。
导入公式则更简便,打开公式编辑器后点击'导入公式',选择先前导出的文件,点击'打开'。出现导入界面,确保选择了正确的公式,不选默认无法导入。若遇同名文件,需选择覆盖现有公式或改名后再导入,避免导入失败。
量化解析
对于低佣金开户、量化交易需求或对策略和通达信公式的技术支持有疑问的交易者,欢迎关注我,期待能为你的交易之旅带来帮助。
若用9位机器表示十进制-,则源码表示形式为:
A 补码表示 B 第一位是位数 0为正 1为负
正数的反码补码和源来的一样
负数的反码是除第一位外其它反过来 0改成1 1改成0
补码为反码加1
例
的二进制是 第一位 0 是符号位 反码,补码是 和原来一样
- 的二进制是 第一位 1 是符号位 反码是 补码是反码加一
用JAVA写出源代码。运行结果如下?
您好:代码及运行结果如下,供参考:
代码示意图
运行结果示意图
因输出的内容中包含特殊字符,所以在输出的时候,需要做转义,以上代码供参考。