AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 690180
Accepted
JSEvans
JSEvans
Asked: 2022-02-11 23:34:15 +0800 CST2022-02-11 23:34:15 +0800 CST 2022-02-11 23:34:15 +0800 CST

从文件中删除所有 base64 块

  • 772

我正在尝试将价值约 20 年的 Usenet 档案上传到 archive.org,但我的第一批档案被拒绝了,因为一些档案包含以 base64 编码的木马。由于我有大约 400GB 的文件要处理,因此手动修复是不可能的。所有文件均为 mbox 格式,即纯文本。我的第一个想法是查找并替换 mbox 文件中包含“Content-Type: application/x-msdownload”的所有消息。那可能相当困难。我现在认为更简单的蛮力方法是删除所有 base64 块。

从这个问题中,我看到可以使用 grep 找到 base64 块,但我不知道如何使用 sed 设置相同的东西,这就是我要问的原因。谢谢!

编辑:到目前为止我尝试过的

根据这个页面,^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$应该是查找base64文本所需的正则表达式,但是当我尝试将它与sed一起使用时,它实际上并没有工作,或者至少它没有达到我的预期。

例子:

cat clari.local.california.sfbay.biz.mbox | sed -e '#^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$#d' > clari.local.california.sfbay.biz.mbox.test

clari.local.california.sfbay.biz.mbox.test 仍然包含 base64 文本。

sed email
  • 3 3 个回答
  • 356 Views

3 个回答

  • Voted
  1. Best Answer
    they
    2022-02-13T03:27:45+08:002022-02-13T03:27:45+08:00

    邮件用户代理 (MUA) 可以按 MIME 类型从mutt邮箱中删除邮件。你甚至可以编写脚本。

    带有编码附件的邮件可以mutt与搜索表达式匹配~M application。这匹配任何包含 MIME 类型的消息,该类型包含 string application,通常表示附件已编码(可能在 base64 中)。application/x-msdownload如果您愿意,您显然可以使用更具体的。

    如果邮箱被调用,您可以从命令行messages.mbox中删除其中包含包含字符串的任何附件的所有邮件,如下所示:application

    mutt -e 'push <delete-pattern>"~M application"<enter><quit>"y"' -f messages.mbox
    

    请注意,这在从邮箱中删除消息之前不会要求任何确认(最后是对退出前是否删除消息"y"的问题的答复)。mutt您可能希望将邮件移动到单独的邮箱中:

    mutt -e 'push <tag-pattern>"~M application"<enter><tag-prefix><save-message>bad.mbox<enter>"y"<quit>"y"' -f messages.mbox
    

    这会标记与给定搜索表达式匹配的所有邮件,将它们保存到邮箱bad.mbox,并在从原始邮箱中删除它们后退出。

    • 1
  2. dirkt
    2022-02-13T03:44:32+08:002022-02-13T03:44:32+08:00

    看看procmail、formail和mimencode。您可以使用这些轻松设置复杂的自动邮箱处理,例如

    查找并替换 mbox 文件中包含“Content-Type: application/x-msdownload”的所有消息。

    • 0
  3. ilkkachu
    2022-02-13T04:14:20+08:002022-02-13T04:14:20+08:00

    (?:...)是 Perl 正则表达式的一部分,而不是任何一个标准的 POSIX 正则表达式。ERE 等效项(forgrep -E或sed -E)应为:

    ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
    

    请参阅为什么我的正则表达式在 X 中有效但在 Y 中无效?

    正则表达式还将匹配任何具有长度为四个字符的倍数的字母数字字符串(仅此而已)的任何行,因此类似question,congrats或任何四个字母的脏话或仅在一行上的四个字母的问候语都会匹配。此外,它不允许任何一端有任何空格,如果您只是删除个别行,您最终可能会收到消息,之后剩下的内容就毫无意义了。

    无论如何,您可以将其设置为需要至少五组,每组四个字符。那应该不太可能匹配随机单词。

    ^([A-Za-z0-9+/]{4}){5,}([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
    
    • 0

相关问题

  • 如何在第三个逗号后用条件grep行

  • 根据第一个逗号之前的匹配删除重复行数

  • 如何改进这个字符转换脚本?

  • 如何删除两行之间的单行

  • 接收有关全新 Debian 的电子邮件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve