首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何愚弄Kerio过滤规则?

如何愚弄Kerio过滤规则?
EN

Stack Overflow用户
提问于 2015-09-08 09:00:34
回答 1查看 199关注 0票数 0

我们办公室有一个过滤规则,禁止客户下载音频和视频文件。此规则是使用Kerio服务器设置的。

例如,当我输入到.mp4文件的直接链接时,我将从这个Kerio防火墙面对这个页面:

为了绕过这个过滤规则,我编写了一个python程序,它使用web服务器上的烧瓶接收该文件的地址,作为地址栏中的参数,下载到该服务器上,将其扩展名更改为非音频/非视频扩展名(例如.fk.pdf等),然后发送给我!

以下是节目:

__init__.py:

代码语言:javascript
复制
# encoding=utf8
from flask import Flask
from flask import send_file
import Downup

app = Flask(__name__)
app.debug = True

downupper = Downup.Downup()

@app.route('/<path:path>')
def test_1(path):
    url = "http://"+ path[6:]
    file_addr = downupper.downup(url)
    return send_file(file_addr, mimetype=None, as_attachment=False, attachment_filename=None, add_etags=True, cache_timeout=None, conditional=False)
    #return file_addr

@app.route('/test_2')
def test_2():
    return '<html><body><h1>Hi!</h1></body></html>'


if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)

Downup.py

代码语言:javascript
复制
import os
import urllib
import random

class Downup():
    def __init__(self):
        self.download_path = "/var/lib/openshift/55ed2d400c1e6677a50001d1/app-root/data/"

    def downup(self, url):
        file_downloader = urllib.URLopener()
        file_name = str(random.randint(1,99999999999)) + "-" + "change .fk to " + str(url)[-4:] +".fk"
        try:
            file_downloader.retrieve(url, self.download_path + file_name)
            return self.download_path + file_name
        except:
            return "Failed!"

问题是,我仍然面临前面的过滤页面:

正如您所看到的,我将文件地址作为参数传递给我的应用程序(此处为:fcuk-kerio.rhcloud.com),它被下载到具有不同扩展名的服务器上,并将none作为其Mime发送,但仍然失败。

请注意,我检查了主机,并看到我的文件被下载到了那里:

这是日志:

请注意,我可以使用VPN和代理服务器绕过Kerio服务器,但我希望使用上述方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 16:56:39

我不可能肯定地说,因为我没有这个产品可以测试。有两个明显的问题。

首先,url仍然包含扩展。尝试将您想要从表单下载的url发布,而不是作为url参数。

其次,mimetype只是对浏览器的提示,更改它实际上并不会改变文件。文件有“神奇的数字”,唯一的标题,可以可靠地识别大多数文件类型,而不需要扩展名和mimetype提示。您可以尝试对该文件进行base64编码,而不是将其作为下载发送,然后在您的端对其进行解码。

Base64编码是您真正应该做的事情的一个简单版本:使用安全HTTP (https、ssl、tls等)。VPN和代理为您工作的原因是它们加密了机器和外部的所有通信量,因此防火墙无法检查它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32453492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档