加密/版权我的 powershell PS1 文件

Posted

技术标签:

【中文标题】加密/版权我的 powershell PS1 文件【英文标题】:Encryption/copyright my powershell PS1 file 【发布时间】:2018-12-04 23:00:17 【问题描述】:

我已经完成了我的 powershell 工具,想知道是否有办法阻止人们在未来对其进行更改。

我知道我可以将它编译成一个 exe 文件,但我真正想要的是停止修改代码,这样它就会永远有我的名字反对它,我为我的工具感到非常自豪,所以我会讨厌如果我离开的想法该组织,他们仍然使用它有人来并更改了几行代码,并声称它是他们自己的。

即使它在代码中使用密码加密也可能。

关于这将如何工作或是否可能的任何想法?

欢呼

【问题讨论】:

您确实意识到您所问的基本上会阻止人们在可能的情况下修复您的代码中的错误(事实并非如此)?此外,即使您是编写代码的人,合法所有者也很可能是您的雇主。 没有人“拥有”代码。一旦它被编写和使用,它就成为集体的一部分。编写好的代码并提高您的声誉。将它添加到 github 和破坏者会使他们变得迟钝。闪耀吧。 您可能想查看代码签名:darkoperator.com/blog/2013/3/5/… @NoRefundsNoReturns 很抱歉打破了你的泡沫,但是未经雇主许可将你在工作中编写的代码发布到 Github(或其他类似的地方)可能会给你带来严重的法律麻烦。 @AnsgarWiechers 并且一旦编写了该代码,您将无法“取消看到”该代码,并将在未来的项目中使用它。仔细读。我不主张将公司代码放在 github 上。 Adam 担心his 的声誉。我的建议对于维护您认为自己“拥有”的代码的个人声誉是合理的。这当然会引发一个问题,即如果你想控制它,为什么要让人们看到它。但是that 是一个不同的问题。下次我不需要法律建议时,我会提醒您。 【参考方案1】:

加密/版权我的 powershell PS1 文件

您可以在概要中添加您的版权声明。 您甚至可以将编码的图片与您想要的任何信息一起应用。

您无法加密您的代码,但您可以对其进行编码/混淆(但这很容易被任何愿意尝试的人逆转 - 就像 DLL 可以被逆向工程一样 - 这是破解者/黑客和开发人员在需要时所做的事情)

PowerShell Obfuscator

Invoke-Obfuscation: A PowerShell Command & Script Obfuscator!

所有这些混淆和加密的东西都会让你的安全人员/监视器感到震惊,而且应该是黑客用来逃避人们和破坏系统的东西。

您可以使用代码签名证书对代码进行签名

Hey, Scripting Guy! How Can I Sign Windows PowerShell Scripts with an Enterprise Windows PKI? (Part 2 of 2)

然后您可以使用 ps2exe 将其转换为 .exe,这又可以反过来。

在系统上运行的任何 PowerShell 代码都必须由主机解码才能运行,这意味着任何人都可以通过查看 Windows PowerShell 日志来获取您的代码。这是白帽在面临使用代码混淆的攻击时对代码进行去混淆的一种方式。

这几乎是你所能得到的,但正如 Ansgar Wiechers 所说,即使你从未离开雇主,你仍然必须以纯文本形式留下源代码,以便能够传递给谁来取代你如果你升职了,搬到一个新团队或离开公司,或者天堂禁止离开你的凡人线圈,人们需要解决你的代码。

做你所说的,是 Y2K 成为一件事的原因。开发人员的原始代码无处可寻来纠正他们的垃圾代码。这就是为什么许多公司仍在使用 WinXP 或更早版本的原因,因为开发人员将代码编译为旧的东西,因此无法更改。

既然 MS 已将所有 PowerShell 作为开源发布,那么您为什么要这样做呢?由于 MS PowerShell Gallery 上的每一段代码都是开源的,所以同样适用。

最后,我很确定您的代码并非都是原创的。您的意思是说,您没有查看任何其他资源/示例/示例来获得最终的脚本产品? 您是否在代码中注明了这些示例/示例的作者?

如果您只是想防止普通用户弄乱您的代码,那么 PS2EXE 应该是您最谨慎的途径。然而,仍然将它存储在源代码控制系统中以纯文本形式关注您的人,例如 VSS、GitHub 等......

【讨论】:

我不是付费开发人员,但我确实花了很多时间从头开始构建这个工具,大部分是自制的,因为我在这个网站上问了一些问题,所以我实际上并没有不得不参考许多来源。我想也许你们可能在一个非常有效和高效的工作场所工作:D 我的任务是创建这个工具,因为我们最后一次使用的工具创建得非常糟糕,人们在不经询问的情况下添加东西删除东西。这是我想将其锁定的唯一原因,我不希望它成为没有人接触它的情况,我只是想将风险降到最低 @Adam 也许使用版本控制系统是减少这种特殊风险的正确方法。

以上是关于加密/版权我的 powershell PS1 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何给PowerShell脚本加密

无法加载文件C:UsersxxxDocumentsWindowsPowerShellprofile.ps1,因为在此系统上禁止运行脚本

如何从 C# 文件调试“调用”Powershell (ps1)

powershell 一个ps1 运行

powershell脚本:你的文件已经被黑客篡改.ps1

SSIS 运行 PS1 (powershell) 作业,但 SSMS 代理不运行