小编use*_*123的帖子

Boord的权限系统

我正在使用discord.py和asyncio制作discord机器人。该机器人具有类似kick和的命令,而ban这些命令显然对普通用户不可用。

我想创建一个简单的系统,该系统将检测用户角色所使用的权限ctx.message.author以获取发送命令的用户。

我不希望该漫游器检测到特定的角色名称,因为这些名称在服务器之间会有所不同。我还希望该机器人没有多个文件,以使其简单。

我看过discord.py文档和其他各种资源,但没有一个包含如何实现他们所讨论的各种方法的示例。

例如,这是我的机器人发出的单个命令:

async def kick(ctx, userName: discord.User):
    if True: #ctx.message.author.Permissions.administrator
        await BSL.kick(userName)
    else:
        permission_error = str('Sorry ' + ctx.message.author + ' you do not have permissions to do that!')
        await BSL.send_message(ctx.message.channel, permission_error)
Run Code Online (Sandbox Code Playgroud)

if else声明是我自己尝试执行的操作。将#ctx.message.author.Permissions.administrator被注释掉,因为它不工作,取而代之的True用于测试目的。

感谢您的任何帮助和建议。

python python-3.x python-asyncio discord discord.py

6
推荐指数
2
解决办法
1万
查看次数

Golang从内存中的二进制数据执行子进程

我知道可以将可执行文件嵌入到 Golang 可执行文件中并运行它们,或者使用Yaegi等项目从字符串运行 Golang 代码,但是是否可以运行存储为变量的二进制文件而不将其写入文件,作为子项过程?二进制文件已经作为变量存在于内存中,因此是否可以以某种方式执行它?

如果我没有记错的话,可执行内存和数据内存之间存在差异,那么这会阻止执行此操作吗?

我的问题的原因是我正在编写一个 RAT/payload dropper 作为学习 Go(lang) 的项目,并希望使其尽可能模块化,包括无文件更新和二进制(也是无文件)有效负载。

编辑:欢迎任何解决方案,但跨平台解决方案是首选。

EDIT2:根据这个SO答案,这在C++中是不可能/非常困难的。看来,造成这种情况的主要原因是动态链接库。由于 Golang 是静态链接的,这会更容易吗?

memory executable exec go

5
推荐指数
1
解决办法
2720
查看次数

将 PIL/Pillow 图像转换为数据 URL

在Python3中,是否可以将PIL/PillowImage对象转换为data:image/pngURL,以便在粘贴到浏览器地址栏中时出现图像?

到目前为止我的尝试都失败了:

"data:image/png,{}".format(image_obj.tobytes())
Run Code Online (Sandbox Code Playgroud)

或者,是否有其他好方法将图像从 Python 脚本发送到远程用户?图像托管网站会很好,但通常很昂贵/没有 Python API/需要注册和登录。目前我打算使用像 Pastebin 这样的服务以文本形式存储图像,然后简单地将 URL 发送给用户。

image python-3.x

2
推荐指数
1
解决办法
2342
查看次数

multipart/x-mixed-replace PNG 流始终显示最后一帧之前的帧

在制作了一个通过multipart/x-mixed-replace Content-Type标头将 PNG 图像流式传输到浏览器的程序后,我注意到标签中只显示最后一帧<img>,而不是最近发送的帧。

这种行为非常烦人,因为我只在图像更改时发送更新以节省带宽,这意味着当我等待更新时,屏幕上将显示错误的帧。

具体来说,我使用的是 Brave 浏览器(基于 chromium),但由于我尝试了上下“屏蔽”,我认为这个问题至少也出现在其他基于 chromium 的浏览器中。

搜索问题只会产生一个相关结果(以及许多不相关的结果),即HowToForge线程,没有回复。同样,我也认为问题与缓冲有关,但我确保刷新缓冲区无济于事,这与线程中的用户非常相似。用户确实报告说它可以在他们的一台服务器上运行,但不能在另一台服务器上运行,这让我相信它可能与特定的 HTTP 标头或类似的东西有关。我的第一个猜测是Content-Length因为浏览器可以判断图像何时完整,但它似乎没有任何效果。

所以本质上,我的问题是:有没有办法告诉浏览器显示最新的multipart/x-mixed-replace而不是之前的?而且,如果这不是标准行为,原因可能是什么?

当然,这是相关的源代码,尽管我认为这更多的是一个一般的 HTTP 问题,而不是与代码有关的问题:

服务器

package routes

import (
    "crypto/md5"
    "fmt"
    "image/color"
    "net/http"
    "time"

    brain "path/to/image/generator/module"
)

func init() {
    RouteHandler{
        function: func(w http.ResponseWriter, r *http.Request) {
            w.Header().Set("Content-Type", "multipart/x-mixed-replace; boundary=frame")
            w.Header().Set("Cache-Control", "no-cache") // <- Just in case
            w.WriteHeader(200)

            // If the request contains a token and the token maps to a valid "brain", start consuming …
Run Code Online (Sandbox Code Playgroud)

javascript http go multipart-mixed-replace

1
推荐指数
1
解决办法
7390
查看次数