隐私保护者

隐私保护者

本模组会拦截不安全的Python调用,如e_xec()、e_val()、s_ocket()等,以保护游戏免受恶意软件侵害和/或防止隐私信息泄露。某些模组含有追踪器,这些将被拦截。本模组不会添加任何交互功能到

实用工具

隐私保护者

此版本包含一些经过审查的 S4CL 代码,以避免您必须安装 S4CL(该版本未使用追踪代码)。

介绍

来自 EA 服务条款

当您访问或使用 EA 服务时,即表示您同意不会:

  • 使用任何软件或程序破坏、干扰或中断 EA 服务或他人计算机及财产,例如拒绝服务攻击、垃圾邮件发送、黑客行为、上传计算机病毒、蠕虫、木马、取消机器人、间谍软件、损坏文件及定时炸弹。
  • 干扰或中断其他玩家使用 EA 服务。
  • 包括通过以下方式扰乱 EA 服务中正常的游戏流程、聊天或对话:例如使用粗俗或骚扰性语言、辱骂行为、过度喊叫(全大写字母)、刷屏、灌水或反复按回车键。
  • 试图获取或通过钓鱼手段骗取 EA 服务上其他用户的密码、账户信息或其他私人信息。

这个模组不会干扰任何其他正常模组。 这将干扰侵犯您隐私的模组。 这将影响通常违反 EA 服务条款的多人游戏模组。 它还会干扰将关键功能用于其他目的的模组。 即使仅开放套接字本身并不侵犯隐私,但建立 TCP 连接的模组也会受到影响。 这可能会破坏您已安装的部分模组,但这种情况非常罕见。

你应该已经了解这些模组了。 如果出现问题,您可以随时卸载此模组。 在我的测试中,我识别出了一些追踪模组,但没有误报。

注入器

注入器会注入到各种已知被追踪器和恶意软件使用的 Python 中,以向网站发送数据和/或下载并执行代码。 普通脚本模组从不调用这些方法。 它将引发一个 PrivacyException 以防止继续执行模组的这一部分。模组很可能会捕获此异常且不会通知用户。 它会将数据记录到 The Sims 4/mod_logs/PrivacyProtector.txt 以供查看。 如果检测到使用了非常可疑的方法,游戏内将弹出一个提示框。

Eval() 与 Exec()

由于 Python 的限制,本模组不会注入到 eval()exec() 中。扫描器将检测这些方法。

扫描仪

该模组还配备了一个扫描器来扫描模组。虽然并非百分之百准确,但效果相当不错。 游戏启动一分钟后开始扫描所有模组。

排除扫描

要排除某些模组,请定位到 The Sims 4/mod_data/privacy_protector/skip_mods/ 目录,并将模组(.ts4script 文件)复制到该目录中。 只需创建一个与模组名称完全相同的空文件,但对大多数用户来说复制可能更方便。 文件内容无关紧要。我包含了一些安全的模组空文件。你可以删除它们以获取相关日志。

扫描器会在游戏运行时报告是否有所发现。详情请查看日志文件。 它在后台运行并占用一个核心。 对于 4 核及以上 CPU,启动 TS4 几乎不会有任何延迟。 强烈建议检查日志文件并将安全模组添加到 skip_mods 目录中。

手动扫描

要扫描新模组,请在游戏运行时将它们添加到 Mods 文件夹中。

  • privacy.scan 扫描模组中的已知问题。这是您可能想使用的命令。
  • privacy.search foo 允许在模组中扫描 foo
  • 若仅扫描 exec,您可以使用命令 privacy.search exec。 它比完整扫描稍快一些。

输出内容会显示在控制台并同时记录日志,由于数据量可能较大,请耐心等待。

Eval() 与 Exec()

手动和自动扫描仪可检测这两种方法。 可能存在许多类似 literal_evalevaluateexecute 的匹配项,这些通常被认为是无害的。它们将被记录为:

看起来没问题。在 \sims4communitylib.ts4script(sims4communitylib/utils/cas/common_outfit_utils.pyc) 中发现了 eval: ['\\x00\\x00\\x00\\xda\\x1devaluate_appearance_modi']

如果你收到这样的声明,可能存在问题:

!! 在 \_evil_\xxx.ts4script(xxx.pyc) 中检测到 eval 函数: ['\\x00\\x00\\x00\\xda\\x04eval\\xda\\x03hex\\xda\\x03l']

扫描过程结束时,会打印摘要,便于查看是否存在实际问题。所有看似无害的近似匹配将不计入统计。

发现'eval' 1次。

检测到的问题会用 !! 标记,便于定位 坏行以 !! 开头,而 '好' 行以 Seems OK. 开头,不计入检测到的问题数量。 此方法可用于扫描脚本模组中的多种内容。

输出样本

当然,仅通过一些简单的代码检查,永远无法百分百确定。 因此,需要查看该语句周围的一些代码来获得大致了解。

追踪器

如果你发现类似的东西,可以确定你的模组含有追踪器。

  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'FTP': ['6remove)\\x01\\xda\\x03FTP\\xfa\\x01|r@\\x00\\x00\\', ...] 不清楚执行了哪个 ftplib.FTP() 命令,但可以确定它是一个追踪器或恶意软件下载器。

  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'open': ['1\\x10\\x01\\xda\\x16mc_open_url_in_browser)\\x01', '\\nwebbrowser\\xda\\x04open)\\x03rq\\x00\\x00\\x00r'] 打开一个网站至少会将您的 IP 地址发送到服务器,通常还会提交操作系统信息。请求本身可能包含其他个人信息作为 URL 参数。

  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'urlopen': ['eREQUEST_HEADERZ\\x07urlopen\\xda\\x16_parse_versi'] urllib.request.urlopen() 是另一种向服务器发送私有数据的方式。

  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'Request': ['\\xda\\x07requestZ\\x07Request\\xda\\x0eREQUEST_HEAD'] urllib.request.Request() 也被一些带有追踪器的模组使用。

可疑的

这里应该审查代码,有些代码可能是出于好意编写的,但它经常被用来追踪你。

  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'open': ['\\nwebbrowser\\xda\\x04open)\\x01Z\\x06dialog)\\x0'] 我不认为 open) 有什么问题,但无论如何,在找到的字符串中出现 webbrowser 看起来确实有些奇怪。

  • !! 在 '\folder\mods.ts4script(file.pyc)' 中发现 'eval': ['5\\xda\\x03ord\\xda\\x04eval\\xda\\x03hexr\\x13\\x00'] !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'eval': ['\\x00\\x00\\x00\\xda\\x04eval\\xda\\x03hex\\xda\\x03l'] 这里确实需要检查代码,绝不应该使用 eval()。我检查过了,可以说它是安全的,而且完全没必要使用 eval()

误报
  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'system': ['\\x01\\x00\\x00\\xda\\x06system\\xda\\x07releaser7\\x0', ...] 看起来没有 os.system.releaser() 函数,所以这似乎是安全的。

  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'system': ['\\x08platform\\xda\\x06system\\xda\\x07version\\xda\\'] 1、有一个 system.version() 方法,在我看来是安全的。

  • !! 在 '\folder\mod.ts4script(file.pyc)' 中发现 'system': ['关于 {M0.他的}{F0.她的} 系统,没有...'] o19 用一条大鳟鱼轻轻拍打本模组作者的脸。STBL 应放在 .package 文件中,而非硬编码进代码里。这样没人能翻译它或添加性别代词。

  • !! 在 '\folder\mods.ts4script(file.pyc)' 中发现 'open': ['\\x00\\x00\\x00z\\x14ww.open_contact_page)\\x01Z\\', ...] 使用 open_ 时完全没有问题,但过滤器并不完美。 :(

警报

如果收到“隐私违规。详情请查看日志。”的警报,您可能想知道是哪个模组导致的。您需要查看日志文件。 这里会写入一个堆栈跟踪,包含引发问题的方法。 由于 TS4 的堆栈可能非常长且嵌套,此 mod 不会尝试定位问题 mod。 通常是在第二或第三行,而不是一个普通的函数。 堆栈跟踪将包含尽可能多的信息,分享前请确保移除敏感内容。 它将保存在您的电脑上,只有能访问您电脑的人才能查看。

一个由测试函数调用的堆栈跟踪示例:

警告:从以下位置调用了 'os.system(('powershell',); {})'
 T:\InGame\Gameplay\Scripts\Core\sims4\commands.py#398 '' 在 'invoke_command()' 中
...\privacy_protector_light\commands.py#95 在'o19_debug_priv_shell()'中的'os.system(command)'
...\privacy_protector_light\privacy_protector_light.py#283 在 'o19_override_os_system()' 中的 'O19PrivacyProtector.log_data('os.system', *args, **kwargs)'
...\privacy_protector_light\privacy_protector_light.py#57 'thread_details = traceback.extract_stack(sys._current_frames()[thread.ident])' 位于 'log_data()' 中

测试

该模组本身不支持测试功能。 不过,在 mod_documentation 文件夹中,你可以找到一个 Mods 文件夹,可以将其复制到你的 The Sims 4 文件夹中。 之后应该看起来像这样:The Sims 4/Mods/_o19_/Scripts/commands.py 如果你这样做,你将能够连接到 EA,打开浏览器或命令行界面。隐私保护器应该能保障你的安全,但当然你也可以移除它来测试这些功能。

Shift+Ctrl+C 作弊控制台需要输入以下命令:

  • o19.priv - 打印以下帮助
  • o19.priv.browser - 在浏览器中打开。*1
  • o19.priv.shell o - 打开一个 powershell/bash。
  • o19.priv.shell s - 在后台打开一个 powershell/bash。
  • o19.priv.socket - 打开一个到 ea.com 的 socket 连接。*1
  • o19.priv.urllib - 打开一个到 ea.com 的 urllib 连接。*1
  • o19.priv.scan eval - 扫描 mods 中的 eval()
  • o19.priv.scan exec - 扫描 mods 中的 exec()
  • o19.priv.scan foobar - 扫描 mods 中的 foobar() 或其他任何函数。

*1 EA 应该已经知道你的 IP 地址,但你可以编辑 .py 文件并修改使用的域名。

实际上,只要隐私保护程序在运行,所有命令都应失败。 你可以删除模组,但保留此文件以确保功能正常。除非你的终端安全软件阻止它们。 commands.py 不会在 powershell/bash 中执行命令,也不会打开自动下载恶意软件的 URL,但所有这些都可以在 TS4 内部实现。

随着越来越多的恶意用户针对社区,我决定发布这个模组。

已知问题

此模组将引发一个异常,该异常会被记录到 lastException.txt 中,错误信息为:FileNotFoundError: [Errno 2] 没有这样的文件或目录: '50f50c67da416c0e5bc95ecb07a5a116d8b22106c27a1e60708b06e22eeed20b.zip'。 它告诉你这个模组启动正常,而我正在想办法避免这种情况。

附录

游戏兼容性

该模组已通过《模拟人生4》1.103.315版本(2023年12月)、S4CL 3.0(2023年12月)、TS4Lib 0.1.8(2023年9月)测试。 预计将与即将发布的多个TS4、S4CL和TS4Lib版本兼容。

依赖项

  • 模拟人生4 TS4-库(NexusMods)或 TS4-库(GitHub)
  • S4CL(NexusMods)或 S4CL(GitHub)

如果未安装,请下载并安装TS4及以下模组。 全部免费提供。

安装

  1. 定位包含 Mods 文件夹的本地化《模拟人生4》文件夹。
  2. 将 ZIP 文件解压到此《模拟人生4》文件夹中。

这将创建以下目录/文件:

  • Mods/_o19_/$mod_name.ts4script
  • Mods/_o19_/$mod_name.package
  • mod_data/$mod_name/*
  • 和/或
  • mod_documentation/$mod_name/*
  • mod_logs/$mod_name.txt 将在数据被记录时自动生成。

手动安装

如果你不想将 ZIP 文件解压到《模拟人生4》文件夹中,你可能需要阅读以下内容。

  • ZIP-File/mod_data 中的文件通常是必需的,应解压到 The Sims 4/mod_data 中。
  • ZIP-File/mod_documentation 中的文件供您阅读。使用此模组时不需要这些文件。

[i] [i]Mods/_o19_/*.ts4script 文件可以存放在 Mods 内的任意文件夹中,或直接放在 Mods 目录下。我强烈建议将其存放在 _o19_ 文件夹里,这样你就知道是谁创建的了。

使用情况跟踪 / 隐私

该模组不会向任何追踪服务器发送数据。 代码是开源的,未经混淆,可供查阅。 日志文件(mod_logs 文件夹)中的某些日志条目可能包含本地用户名,尤其是在文件未找到的情况下(WARN、ERROR)。