🗒️py05 初尝试argparse制作工具,ip反查域名,子域名收集
2023-11-1
| 2023-11-3
字数 1707阅读时长 5 分钟
type
status
date
slug
summary
tags
category
icon
password

初尝试argparse制作工具

文件扫描是扫描pikachu靶场的,url需要通过参数提供。
使用:python tools.py -u "http://pikachu.com:8601/" --scan
暴力破解是函数写死的pikachu某登录页面
使用:python tools.py --brute
代码很简单,主要是为了学习argparse。代码下方提供一些argparse的注解
args = parser.parse_args()
这句是核心,将命令行参数存储入一个命令行空间。
如果parser.add_argument('-u', help='传递url值'),-u 666就会将args.u的值定义为666。
如果parser.add_argument("--scan", action='store', dest='function_name', const='file_scan', nargs='?', help='调用文件扫描函数'),以下三个选项为调用的原理
  • action='store': 它指定了当用户提供了该选项时,表示将选项的值存储在 args 对象中。这意味着选项的值将在后续的代码中通过 args.function_name 访问。当不存在dest='function_name',时,这个选项的值将被赋予args.scan。因为可选参数为--scan
  • dest='function_name': 指定选项 --scan 的值将存储在 args.function_name 中。当用户提供 -scan 选项时,args.function_name 的值将设置为 'file_scan'(使用 const 参数的值)。
  • const='file_scan': 指定选项固定值的参数。当用户提供 --scan 选项时,args.function_name 的值将被设置为 'file_scan'
最后这个nargs我就没实验具体的应用场景了,直接上图帮助理解了。
  • nargs='?': 这指定了选项接受的参数数量。'?' 表示该选项可以接受零个或一个参数。如果用户在命令行中提供了参数值,它将成为 args.function_name 的值。如果用户没有提供参数值,args.function_name 的值将是 'file_scan'(使用 const 参数的值)。
notion image
补充一下关于参数和选项数量的定义:
python a.py --scan --a --b --c 这是提供了四个选项
python my_script.py --files file1.txt file2.txt file3.txt这是提供了三个参数,这是nargs所限制的参数数量。

ip反查域名

本章节新学习OptionParser库,通过命令行处理参数和输出结果的一个示例
正则的匹配规则只用了.*?这一个东西,很简单,不需要解释
具体调用如图所示:
notion image
notion image

子域名收集

此处主要是针对文章 python02学习子域名收集 的一个优化,当时写的时候找不到分页参数,现在发现使用bing搜索的时候,只有带上cookie才有分页参数(cookie是真的长)。同时也优化一下,试试命令行调用执行
 
首先是分页参数的寻找:
我们随意搜索一个东西,点击第二页,发现first=9,页面显示9-17共10个结果。
点击第三页,发现first=18,页面显示18-27共10个结果。
初始第一页测试后发现只需要first=0即可。
所以url的写法应该是(其中q参数是我们搜索的内容,first是分页相关的东西):
notion image
q参数不同第一页得到的结果数就不同,同时first第二页的起始值就不同,这也太麻烦了。
经过尝试第一页永远都是first=0,每一页显示十条结果,干脆第二页都用first=10算啦,结果发现页面不报错啊,那就这么写了。以下的代码只是为了演示,没有做最后的子域名列表去重。
notion image
 
以下是去重的代码(没测试,不知道啥被封了,一直302,什么回显都没有):
 
  • 脚本编程
  • py04-re+爬虫学习py06 主机存活探测,bash,shell,不同格式ip的处理
    Loading...