受害者网络服务

victims-web的Python项目详细描述


受害者网络应用程序。

报告问题

如果您发现http://victi.ms处的服务或代码有问题, 或者

贡献

如果您有希望添加的修补程序或功能 对于项目,请随时向我们发送请求。
确保在提交之前运行PEP8。
pep8 --repeat .

使用pypi包

您可以通过安装PyPI Package和 使用提供的入口点。确保所需的数据库服务 可用和/或已配置。

pip install --user victims-web
victims-web-server

开发

这是关于如何使用提供的 docker-compose配置和开发Dockerfile 不使用基目录中提供的Dockerfile。 用于生产和开发。

Docker构建

构建图像

图像可以被构建来提供一个工作环境 已安装依赖项。

docker build -t local/victims-web .

使用Docker图像

如上所示构建的Docker映像将不包含应用程序 源代码,但它希望工作目录安装在 /opt/source

docker run --rm -it -v `pwd`:/opt/source local/victims-web

Docker撰写

docker-compose.yml文件定义运行 本地计算机上服务器的工作副本。启动服务器 通过docker-composewill;

  1. 启动受支持版本的MongoDB实例
  2. 为数据库添加测试数据
  3. 使用python -m victims.web
  4. 启动Web服务器
  5. 绑定到本地主机上的端口5000

启动服务器

这将启动如上所述的服务器实例。注意 这是从启用DEBUGTESTING开始的。这个遗嘱 同时确保代码在更改时自动重新加载。

docker-compose up server

对工作副本执行测试

为了对代码的工作副本执行测试,可以使用 docker-compose.yml文件中描述的test服务。 这将启动依赖服务,加载种子数据,然后执行 应用程序测试和pep8

docker-compose up test

用法

安全的api访问

/service/submit/archive/java这样的提交终结点是安全的 一个类似于aws使用的实现。身份验证 通过 VICTIMS_API_HEADER配置(默认值:X-Victims-Api)。如果 这不存在,或者如果验证/身份验证失败,则会失败 返回到basic auth

使用curl的示例如下:

$ curl -v -X PUT -H "X-Victims-Api: $APIKEY:$SIGNATURE" -H "Date: Thu, 22 Aug 2013 15:20:37 GMT" -F archive=@$ARCHIVE https://$VICTIMS_SERVER/service/submit/archive/java?version=VID\&groupId=GID\&artifactId=AID\&cves=CVE-2013-0000,CVE-2013-0001

这也可以使用basic-auth完成,如下所示:

curl -v -u $USERNAME:$PASSWORD -X PUT -F archive=@$ARCHIVE_FILE https://$VICTIMS_SERVER/service/submit/archive/java?version=VID\&groupId=GID\&artifactId=AID\&cves=CVE-2013-0000,CVE-2013-0001

API密钥和客户端密钥

Victi.ms上的每个帐户都由 违约。这可以通过访问https://victi.ms/account来检索。 可以使用 https://victi.ms/account_edit

签名

签名是使用HTTP MethodPathDatemd5 hexdigest

注释:

  • Path包含查询字符串参数,例如: /service/submit/archive/java?cves=CVE-0000-0000
  • MD5校验和包括所有文件的数据(如果可用) 正在提交。校验和按升序排序 在添加到字符串之前。
  • 日期应为GMT。如: Thu, 22 Aug 2013 15:20:37 GMT

以下是python中的参考实现:

fromhmacimportHMACdefgenerate_signature(secret,method,path,date,md5sums):md5sums.sort()ordered=[method,path,date]+md5sumsstring=''forcontentinordered:ifcontentisNone:raiseValueError('Required header not found')string+=str(content)returnHMAC(key=bytes(secret),msg=string.lower(),digestmod=sha512).hexdigest().upper()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java程序运行时错误   JavaAndroidStudio:与往常一样,四舍五入到next.5或.0   apache使用Java以表单数据形式上载文件   带矢量的java Freeflight相机如何正确旋转?   java如何以编程方式检索有关当前项目的语言、操作系统、体系结构等信息   java Twitter4J tweet实体?   java PdfBox编码异常   java在拖动未装饰的舞台时,如何强制光标停留在窗口上   JavaSpring注释扫描优化   java无法通过IntelliJ Idea在tomcat上运行服务   java在生命周期中如何拦截请求?   java中的数组返回错误