0

有一个我知道它包含 NSIS 的文件,以及使用 NSIS 中的 ExecWait 等 NSIS 函数下载文件然后执行的逻辑,

问题是 :

我正在尝试替换 NSIS 从 web 下载的文件,以便我可以做一些测试,首先我更改了主机并使用 web.py 制作了一个 http 服务器,所以原始 url 被劫持到我自己的服务器上,我放置了一个重定向下载文件链接,在服务器上我看到 200,但在客户端我使用一些工具找出它返回 400。(我直接在浏览器中打印 url,下载劫持文件效果很好)我不知道出了什么问题。

web.py 代码

def GET(self, name):
    raise web.redirect('/static/test.exe')

记录 4 文件下载

GET     302     240       Redirect url1,url2
GET     302     300       Redirec  url2,url3
GET     200     1.27 M    application/octet-stream url3

所以我想知道

  1. 什么可能导致 400 代码的问题,即使在我的 python webpy 服务器中它显示 200?(对不起,我不熟悉http)

  2. 任何熟悉 NSIS 的人,还有其他解决方案我可以劫持吗?我试过用 R3 钩子,但似乎失败了,因为我不知道用 API 来钩子。

  3. 过去我听说 Fiddler 可以帮助我完成任务,但是 Fiddler 中没有显示流量,也许 NSi 下载 Fiddler 无法捕获?使用 HttpAnalyze 我可以看到流量(登录),但我不能做我想做的事,所以有没有其他工具可以满足我的需求(也许用什么时候 xxurl 制定一个规则,然后用 myurl 替换它)?

4

2 回答 2

1

NSIS 有不同的下载插件,一些是自定义 HTTP 客户端,一些使用WinINet

最流行的两个插件是 NSISdl 和INetC。NSISdl 是一个自定义 HTTP 客户端,但它应该支持 301 和 302 重定向,并且 INetC 使用 WinINet,并且如果 Internet Explorer 工作,它应该可以工作。

我建议您只需将域名重定向到主机文件中的 127.0.0.1并在本地运行一个简单的 HTTP 文件服务器,无需任何重定向,只需重新创建所需的文件夹结构并使用安装程序请求的文件名。如果可行,那么您可能必须使用WireShark来找出重定向失败的原因......

于 2016-05-17T19:52:23.270 回答
0

@Anders 给了我一些很好的建议。但是由于 url 不是静态的(\xx.exe xx 是随机的),所以我无法创建与 Url 文件夹结构相同的本地路径:(

最后我发现它可能是由于过去 web.py 响应中的 Http 标头造成的。我直接重定向到 webpy 服务器上的静态文件是错误的 web.redirect('/static/test.exe'),即使过去我可以在浏览器中下载它。但它的标题可能无法满足原始 exe 的需求。

这是我的解决方案

在 hosts 文件中将域名重定向到 127.0.0.1 并在本地运行一个简单的 HTTP 文件服务器。然后仍然使用 web.py 但将重定向更改为

web.HTTPError('301', {'Location': 'http://myfileurl'})

它奏效了:)

于 2016-05-18T12:48:39.373 回答