一键搞定:Markdown格式POC的图片本地化与链接替换

admin 2025年3月16日00:59:07评论1 views字数 2599阅读8分39秒阅读模式
一键搞定:Markdown格式POC的图片本地化与链接替换

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢

一键搞定:Markdown格式POC的图片本地化与链接替换

前几天介绍了Github上更新的poc集合

Github Poc漏洞库

用的好好的,直到昨天
我在客户现场,连接内网测试,遇到历史漏洞,打开我准备好的poc,发现其中的图片是在线格式,因为不联网,所以看不到。
为了看清流程,一会插网线一会拔网线,很麻烦。
于是,我上网找了一个脚本,修改了一下,一键搞定脚本。

一键搞定:Markdown格式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 urlproxy = Falseproxies = {    "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格式POC的图片本地化与链接替换
一键搞定:Markdown格式POC的图片本地化与链接替换

参考资料

  • 图片保存到本地并替换markdown中的url地址 https://www.cnblogs.com/xiacuncun/p/18136415

原文始发于微信公众号(进击的HACK):一键搞定:Markdown格式POC的图片本地化与链接替换

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月16日00:59:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一键搞定:Markdown格式POC的图片本地化与链接替换https://cn-sec.com/archives/3842713.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息