关于新版本gowitness/snap强制占用磁盘解决方案

admin 2024年11月12日20:07:09评论28 views字数 2986阅读9分57秒阅读模式

关于新版本gowitness/snap强制占用磁盘解决方案

--->目录<---

0x01——排查磁盘占满问题
0x02——gowitness干爆磁盘解决方案
0x01、排查磁盘占满问题
--->前言
最近升级gowitness到了最新版本3.0.5,一直挂在后台,直到打开vim编辑文件的时候发现磁盘全用完了,无法编辑。经过一番排查,发现是snap惹的祸。
--->Snap简介
Snap 是一种包管理系统,旨在简化软件的安装、更新和维护。Snap 包(简称 Snap)是一种独立的、自包含的应用程序包格式,它包含了应用程序运行所需的所有依赖项。这意味着你不需要单独安装依赖库或担心库版本冲突。
--->排查
当执行gowitness时间过长时,磁盘占用chuachua上张,直到干爆磁盘。
首先它会在这个目录生成很多个.pma文件:BrowserMetrics-****-****.pma
.pma 文件通常是一个 压缩数据文件,或者是一个特定应用程序用来存储某些类型数据的文件格式。这个文件格式的具体作用和使用方式取决于创建它的应用程序。不同的应用程序和环境可能使用 .pma 文件来存储不同类型的信息。
/root/snap/chromium/common/chromium/DeferredBrowserMetrics

关于新版本gowitness/snap强制占用磁盘解决方案

在执行完程序后它不会自己清理,且你把它删了,gowitness也就嘎掉了。
snap 是一个封装的软件包管理工具,它使用封装环境来提供应用的隔离。chromium 作为一个 snap 应用,通常会将运行所需的资源(如配置、缓存等)保存在 ~/snap/chromium/common/ 路径下。因此,删除某些关键文件(如 .pma 文件)可能会导致 Chromium 启动时缺少必要的文件。
一个文件4M左右,几千个越来越多。

关于新版本gowitness/snap强制占用磁盘解决方案

但是,我发现,即便你删了/root/snap/chromium/common/chromium/DeferredBrowserMetrics目录下的.pma,当你重启系统或重启snap时,它会在/tmp目录生成新的.pma文件
0x02、s解决问题
--->解决办法
完全卸载snap安装的Chromium 应用,使用谷歌官方网站下载的浏览器。
snap remove --purge chromiumwget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.debsudo dpkg -i google-chrome-stable_current_amd64.deb   #安装

现在执行gowitness只会在/tmp目录生成.pma文件了。/tmp里的.pma删了不影响程序执行。

如果gowitness一直执行,那么磁盘还是会被干爆。那么为了不影响服务器上的其他程序。我们可以将url文件分割成无数个,20个url放在一个url-*.txt文件中,执行完1个文件就删一次.pma文件。

关于新版本gowitness/snap强制占用磁盘解决方案

separate.py #将域名文件分割成多个小文件

import os# 创建存储 URL 文件的目录output_dir = 'url'if not os.path.exists(output_dir):    os.makedirs(output_dir)# 读取 url.txt 文件with open('url.txt', 'r') as file:    urls = file.readlines()# 删除空行,并去除多余的空白字符(例如换行符)urls = [url.strip() for url in urls if url.strip()]# 对 URL 进行排序urls.sort()# 每 20 个 URL 存成一个文件chunk_size = 20file_counter = 1for i in range(0, len(urls), chunk_size):    chunk = urls[i:i + chunk_size]    # 写入分割后的文件    output_file = os.path.join(output_dir, f'url-{file_counter}.txt')    with open(output_file, 'w') as f:        f.write("n".join(chunk) + "n")  # 用换行符连接 URL    print(f'Created: {output_file}')    file_counter += 1print("URL文件已成功分割并排序!")

关于新版本gowitness/snap强制占用磁盘解决方案

run.py #执行一个文件删除一次缓存

import osimport timeimport reimport subprocessimport globSCAN_DIR = "/*****/*****/"  # 你的扫描目录路径output_dir = 'url'  # 存储分割文件的目录chunk_size = 20  # 每个文件包含的 URL 数量def run_gowitness(url_file):    """执行 gowitness 扫描"""    subprocess.run([        f'{SCAN_DIR}gowitness', 'scan', 'file', '-f', url_file,        '--threads', '8', '--write-db', 'gowitness.sqlite3', '--delay', '5'    ], check=True)def get_sorted_files(directory):    """获取目录下按数字排序的 url 文件"""    # 获取所有以 'url-' 开头并以 '.txt' 结尾的文件    files = [f for f in os.listdir(directory) if f.startswith('url-') and f.endswith('.txt')]    # 使用正则表达式提取文件名中的数字部分并排序    files_sorted = sorted(files, key=lambda f: int(re.search(r'(d+)', f).group(1)))    return files_sorteddef process_urls():    """处理分割后的 URL 文件,每次执行后等待 30 秒"""    # 获取按数字排序的文件列表    url_files = get_sorted_files(output_dir)    # 依次处理每个分割后的文件    for url_file in url_files:        file_path = os.path.join(output_dir, url_file)        print(f"Processing {file_path}...")        # 执行 gowitness 命令        run_gowitness(file_path)        # 在等待前清理临时文件        print("Cleaning up temporary files...")        temp_files = glob.glob('/tmp/gowitness-v3-chromedp-*')        if temp_files:            subprocess.run(['rm', '-r'] + temp_files, check=True)        else:            print("No temporary files found to clean.")        # 等待 30 秒        print(f"Waiting for 30 seconds before processing next file...")        time.sleep(30)# 执行处理process_urls()

end

原文始发于微信公众号(偏远酒馆):关于新版本gowitness/snap强制占用磁盘解决方案

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月12日20:07:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于新版本gowitness/snap强制占用磁盘解决方案https://cn-sec.com/archives/3389140.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息