前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【一起玩蛇】python武器库的打开方式

【一起玩蛇】python武器库的打开方式

作者头像
aerfa
发布2018-06-12 10:37:05
8777
发布2018-06-12 10:37:05
举报

网上有很多python相关的学习资料,但适用于具体场景的解读方式却较少。于是乎,突然想起开启“一起玩蛇”这一系列,想以最基础最简单的方式打开python,在渗透测试或安全领域进行浅浅的应用,自定义实现期望的操作,高效学习,高效工作,高效生活。

1 、实现功能

作为网络安全从业者,想必都看到过“安全行业从业人员自研开源扫描器合集”(https://github.com/We5ter/Scanners-Box)

其中不乏有很多优秀的项目,无论是从功能,还是工具框架与实现思路都值得借鉴。如果一个个去翻阅然后下载,会变得十分麻烦;如果可以全都下载到本地用编辑器去打开,那将非常便利。因此,便有了写个小脚本去实现批量下载的想法。

2、基础知识

2.1 基础环境

系统环境:win10

语言环境:python 2.7.13

所需模块:re, urllib2

2.2 文件下载

使用python实现文件下载,通常可以使用以下三种方式:

(1)urllib

(2)urllib2

(3)requests

2.3 流程分析

在进行脚本编写前,需要了解github上这些工具的页面结构以及下载流程。

(1)页面分析

访问https://github.com/We5ter/Scanners-Box并查其源码,以第一类工具SubdomainScanners or Enumeration Tools中的第一个工具subDomainsBrute为例,在源码中确定其具体位置:

(2)下载流程

当页面上点击subDomainsBrute时,实际上是通过https://github.com/lijiejie/subDomainsBrute跳转至工具的主页面:

当点击Download ZIP时,可以看到下载链接为:https://codeload.github.com/lijiejie/subDomainsBrute/zip/master

重新下载一个工具,比如:wydomain,下载链接为:https://codeload.github.com/ring04h/wydomain/zip/wydomain2

(3)地址提取

通过手工从Scanners-Box下载几款工具,梳理对应的链接以及下载链接:

不难看出工具实际的下载链接可由两部分组成:

不得不说,关于作者更新过版本的工具存在特殊情况,比如wydomain,实际下载链接为https://codeload.github.com/ring04h/wydomain/zip/wydomain2,但通过https://codeload.github.com/ring04h/wydomain/zip/master也能下载,不过应该是旧版本:

类似的情况并不多,所以该脚本中均构造/zip/master结尾的网址来实现工具的下载。

(4)本地保存

在上一部分中已经介绍常见的文件下载方式,此处采用urllib2来实现该功能。

3、脚本编写

按照上面的流程,可以把整个功能的实现分为三个小块,编写边调试。

3.1 获取所有工具地址功能

通过正则匹配出工具在Scanners-Box中显示的链接,此时获得的是数组[(工具1-a, 工具1-b, 工具1-c,), (工具2-a, 工具2-b, 工具2-c,), (), …]

3.2 提取所有工具名称功能

将获取的工具数组,按照不用工具(一个工具一个元组)提取出第一个URL,再将其按照左斜杠分割,提取出倒数第一个或第二个作为下载至本地的名称。

3.3 构造下载链接并保存本地

先构造完整的下载链接,再替换域名,获得真正的下载地址。

通过urllib2去请求资源并根据工具名保存到本地。需要注意的是根据工具名保存下载的压缩包文件,并设置异常与下载完成的提示信息。

4、结果展示

完整的脚本如下:

# -*- coding:utf-8 -*-# Author : aerfa# Functions :批量下载“安全行业从业人员自研开源扫描器合集 https://github.com/We5ter/Scanners-Box” import urllib2import re def downloadGithub(target): req = urllib2.urlopen(target)result = req.read()pContent = re.compile(r'''<li><a href="(.+?)">(.+?)</a> (.+?)</li>''')mContent = pContent.findall(result)for row in mContent: content = row[0] line = content.rstrip('\n') tool = line.split('/') if tool[-1] : toolName = tool[-1] else: toolName = tool[-2] print toolName url = content + '/zip/master' url = url.replace('https://github.com', 'https://codeload.github.com') print url try: f = urllib2.urlopen(url) print f.code data = f.read() with open('%s.zip' % toolName, 'wb') as code: code.write(data) print 'downloading %s over!' % toolName except urllib2.URLError as e: if hasattr(e, 'code'): print 'Error code:', e.code elif hasattr(e, 'reason'): print 'Reason:', e.reason print 'downloading github-resources success!' def main(): sourceUrl = "https://github.com/We5ter/Scanners-Box" downloadGithub(sourceUrl) if __name__ == '__main__': main()

download_github_tools.py运行效果:

在桌面上已经有下载完成的文件,具体路径可以在open()中进行设置。

5、注意事项

整个实现过程相对简单,不过对于新手可能会遇到:

在对URL进行拼接时,变成两行而不是完整的一行URL。这是由于在每行换行时使用了回车,可以通过line.rstrip('\n')移除换行符。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我的安全视界观 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2、基础知识
  • 2.1 基础环境
    • 2.2 文件下载
      • 2.3 流程分析
      • 3、脚本编写
        • 3.1 获取所有工具地址功能
          • 3.2 提取所有工具名称功能
            • 3.3 构造下载链接并保存本地
            • 4、结果展示
            • 5、注意事项
            相关产品与服务
            网站渗透测试
            网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档