声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
前几天介绍了Github上更新的poc集合
用的好好的,直到昨天。
我在客户现场,连接内网测试,遇到历史漏洞,打开我准备好的poc,发现其中的图片是在线格式,因为不联网,所以看不到。
为了看清流程,一会插网线一会拔网线,很麻烦。
于是,我上网找了一个脚本,修改了一下,一键搞定脚本。
放在与poc的同目录下
python test.py
源代码:
import re
import os
import requests
def download_images(markdown_file_path):
# 读取markdown文件内容
with open(markdown_file_path, 'r', encoding='utf-8') as file:
markdown_content = file.read()
# 使用正则表达式匹配所有URL地址
urls = re.findall(r'![[^]]*](([^)]*.png))', markdown_content)
# 存储所有URL地址
url_list = []
for url in urls:
if url.startswith('http'):
url_list.append(url)
# 定义要创建的文件夹名称
folder_name = os.path.join(os.path.dirname(markdown_file_path),"picture_libs")
# 检查文件夹是否存在
if not os.path.exists(folder_name):
# 如果不存在,则创建文件夹
os.makedirs(folder_name)
print(f"文件夹 {folder_name} 创建成功。")
# else:
# print(f"文件夹 {folder_name} 已存在。")
# 下载图片到本地
for url in url_list:
global proxy
if proxy:
global proxies
response = requests.get(url, proxies=proxies)
else:
response = requests.get(url)
if response.status_code == 200:
image_name = os.path.basename(url)[:255] # 限制图片名字长度不超过255个字符
image_dir = os.path.join(os.path.dirname(markdown_file_path),"picture_libs")#markdown文件目录同级下名为picture_libs的文件夹
image_path = os.path.join(image_dir,image_name)#带绝对路径带文件名
image_relpath = os.path.relpath(image_path,os.path.dirname(markdown_file_path))#计算相对路径
with open(image_path, 'wb') as file:
file.write(response.content)
print(f"图片 {image_name} 下载成功")
# 替换markdown文件中的URL地址,这里的image_path需要改成相对路径
markdown_content = markdown_content.replace(url, image_relpath)
else:
print(f"图片 {url} 下载失败")
continue
# 将替换后的内容写回markdown文件
with open(markdown_file_path, 'w', encoding='utf-8') as file:
file.write(markdown_content)
def get_md_file_paths(directory):
url = []
# 遍历指定目录及其子目录
for root, dirs, files in os.walk(directory):
for file in files:
# 检查文件扩展名是否为 .md
if file.endswith('.md'):
# 构建文件的完整路径
file_path = os.path.join(root, file)
url.append(file_path)
return url
proxy = False
proxies = {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890",
}
if __name__ == '__main__':
# 指定目录,这里以当前目录为例,你可以修改为你想要的目录
directory = '.'
md_file_paths = get_md_file_paths(directory)
# for path in md_file_paths:
# print(path)
for file_path in md_file_paths:
download_images(file_path)
print("完成")
结果展示
参考资料
-
图片保存到本地并替换markdown中的url地址 https://www.cnblogs.com/xiacuncun/p/18136415
原文始发于微信公众号(进击的HACK):一键搞定:Markdown格式POC的图片本地化与链接替换
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论