我目前正在开发一种产品(用C#开发),可以免费下载和安装,但版本非常有限.要访问所有功能,用户必须支付许可费并获得密钥.然后将该密钥输入应用程序以"解锁"完整版本.
因为使用像这样的许可证密钥,我想知道:
我想我也应该以某种方式将密钥绑定到应用程序的版本,这样就可以在功能版本中为新密钥收费.
在这种情况下我还应该考虑其他什么吗?
我今天正在查看我的代码库并发现了这个:
def optionsToArgs(options, separator='='):
kvs = [
(
"%(option)s%(separator)s%(value)s" %
{'option' : str(k), 'separator' : separator, 'value' : str(v)}
) for k, v in options.items()
]
return list(
reversed(
list(
(lambda l, t:
(lambda f:
(f((yield x)) for x in l)
)(lambda _: t)
)(kvs, '-o')
)
)
)
Run Code Online (Sandbox Code Playgroud)
它似乎采用参数的dict并将它们转换为shell命令的参数列表.它看起来像是在生成器理解中使用yield,我认为这是不可能的......?
>>> optionsToArgs({"x":1,"y":2,"z":3})
['-o', 'z=3', '-o', 'x=1', '-o', 'y=2']
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?
我正在寻找如何隐藏我的Python源代码.
print "Hello World!"
Run Code Online (Sandbox Code Playgroud)
我如何编码这个例子,以便它不是人类可读的?我被告知使用base64,但我不知道如何.
我们都知道当你无法开源并自由分发软件的情况时 - 我处于其中一种情况.
我有一个应用程序,包含许多二进制文件(从C源代码编译)和python代码,它将所有二进制文件包装到一个系统中.此应用程序曾用作云解决方案,因此用户可以通过网络访问应用程序功能,但无法触摸存储二进制文件和代码的实际服务器.
现在我们想要提供我们系统的"本地"版本.该应用程序将在我们的用户将拥有的PC上运行.我们知道一切都可能被打破,但至少要保护应用程序尽可能保护可能的复制和逆向工程.
我知道docker是一个很棒的部署工具,所以我想知道:有可能创建加密的docker容器,没有人能看到容器文件系统中存储的任何数据吗?这个问题有一个已知的解决方案吗?
另外,也许有一些众所周知的解决方案不是基于docker的?
我已经开始在桌面上运行个人python应用程序.我使用wxPython作为GUI工具包.如果需要这种类型的应用程序,我可能希望将其商业化.
我不知道部署"真实"的Python应用程序,尽管我py2exe过去曾使用过不同的成功.我如何模糊代码?我可以以某种方式只部署字节码吗?
一个理想的解决方案不会危害我的知识产权(源代码),不需要直接安装Python(虽然我确定它需要一些嵌入式解释器),并且是跨平台的(Windows,Mac和Linux的).有谁知道这个领域的任何工具或资源?
谢谢.
是否可以在子类中将公共方法设为私有?我不希望扩展此类的其他类能够调用某些方法.这是一个例子:
class A:
def __init__(self):
#do something here
def method(self):
#some code here
class B(A):
def __init__(self):
A.__init__(self)
#additional initialization goes here
def method(self):
#this overrides the method ( and possibly make it private here )
Run Code Online (Sandbox Code Playgroud)
从这一点开始,我不希望任何从B扩展的类能够调用method.这可能吗 ?
编辑:这是一个"逻辑"的原因是我不希望用户以错误的顺序调用方法.
好吧,我有一个Python包.我需要将它编译为dll,然后以易于导入的方式分发它.怎么样?你可能会建议*.pyc.但我在某处读到任何*.pyc可以轻易反编译的内容!
更新:
遵循以下:
1)我写了一个python包
2)想要分发它
3)不要分发源
4)*.pyc可以解压缩>>源码可以提取!
5)dll是标准的
阅读后如何保护Python代码?,我决定在Windows上尝试一个非常简单的扩展模块.我之前在Linux上编译了自己的扩展模块,但这是我第一次在Windows上编译它.我期待得到一个.dll文件,但相反,我得到了一个.pyd文件.Docs说他们有点相同,但它必须有一个init[insert-module-name]()功能.
假设它是安全的,像dll文件一样难以对它们进行反向工程.如果没有,那么从.pyc文件到.dll文件的规模进行逆向工程的硬度是多少?
python ×8
c# ×1
compilation ×1
deployment ×1
dll ×1
docker ×1
encryption ×1
generator ×1
inheritance ×1
lambda ×1
license-key ×1
module ×1
obfuscation ×1
oop ×1
pyc ×1
pyd ×1
security ×1
ssh ×1