声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!
工作中,我们可能需要用到文本比较。可能是代码审计,比较哪里修改了,方便我们快速定位。
也有一种是最常见的工作——写报告。有时候客户要求报告格式,如果不小心写错,还会返工。错了三四次后,我就开始琢磨有没有什么办法能提前发现错误。
有些工作是在内网环境,不出网。
diff-checker
https://github.com/trembacz/diff-checker
也需要互联网,寄。
IDEA或者pycharm
idea也可以比较,如果内网有开发工具IDEA的话。
idea新建一个项目,放在项目中,选择其中一个,按住 ctrl + d ,然后点击另一个文件。
打开一个文件
按住 ctrl + d
问题:没办法比较docx文件
WinMerge
下载地址:https://winmerge.org/
该工具可以比较word,Excel,图片,但不怎么支持pdf
word对比
导入2个word的docx格式的文件,点击比较
会出错,因为直接比较是解码不了的,需要引用插件来解决这个问题。
但是没办法比较格式
比较docx文件
01 word 比较
但这种比较看不出来某个字符格式的变化和区别。
02 wps 比较
03 自己动手Python比较
pip install python-docx
匹配格式
from docx import Document
import json
def get_all_format(doc_path):
word_json = {}
try:
# 加载文档
doc = Document(doc_path)
# 遍历文档中的每个段落
paragraphs_num = 0
for paragraph in doc.paragraphs:
paragraphs_list = []
# print(paragraph.text)
text_json = {}
for run in paragraph.runs:
# 文本
text_json["text"] = run.text
# 检查字体颜色
font_color = run.font.color.rgb
if font_color:
text_json["text_color"] = font_color
else:
text_json["text_color"] = None
# 检查字体名称
font_name = run.font.name
text_json["font_name"] = run.font.name
# 检查字体大小
font_size = run.font.size
text_json["font_size"] = run.font.size
# 检查是否加粗
text_json["bold"] = run.bold
# 是否倾斜
text_json["italic"] = run.italic
# 检查下划线
text_json["underline"] = run.underline
paragraphs_list.append(json.dumps(text_json, ensure_ascii=False))
paragraphs_num += 1
word_json[paragraphs_num] = paragraphs_list
except Exception as e:
print(f"无法打开文档: {e}")
return word_json
if __name__ == '__main__':
path1 = r"path1"
path2 = r"path2"
path1_filename = path1.split("\")[-1]
path2_filename = path2.split("\")[-1]
path1_format = get_all_format(path1)
path2_format = get_all_format(path2)
with open("./" + path1_filename + ".txt" , 'w', encoding="utf8") as file:
json.dump(path1_format, file, indent=4, ensure_ascii=False)
with open("./" + path2_filename + ".txt" , 'w', encoding='utf-8') as file:
json.dump(path2_format, file, indent=4, ensure_ascii=False)
筛选出来后,根据不一样的地方进行排查
筛选出来后,根据不一样的地方进行排查。如果一段中要求是格式统一,但在显示信息中一段存在好几种格式,能够方便找到是哪里格式不对。
在外网实验成功后,不出网python安装依赖
pip freeze > requirements.txt
下载
pip download -d ./packages -i https://mirrors.aliyun.com/pypi/simple -r requirements.txt
-d 选项指定下载安装包路径,下边命令中为当前路径下packages目录。
-i 选项指定pip 下载仓库地址。
将文件夹packages和requirements.txt放入内网,离线安装
--no-index 选项忽略包索引(只查看 --find-links URL)
--find-links 选项指定安装包查找位置
pip install --no-index --find-links=./packages -r requirements.txt
离线安装成功
参考链接
Diffchecker---文本比较工具 https://mp.weixin.qq.com/s/mBrlXnc1kaDGffySHo8pXQ
六六工具箱 https://www.66toolboxs.com//
5个免费的文档对比工具,轻松提高生产力 https://mp.weixin.qq.com/s/NZRohljqzbpp0w_vdMBhSg
往期推荐
价值$5,825赏金的tomcat信息泄露(CVE-2024-21733)
代码审计 | API批量分配导致的普通用户垂直越权到admin
原文始发于微信公众号(进击的HACK):安服工作中如何文本比较
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论