如何创建只使用5次的python脚本

2024-06-17 15:09:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个python脚本,以便在删除python脚本后只能使用5次,以免被误用。。。你知道吗


Tags: 脚本
3条回答

给你:

counter=0
import os
import fileinput

filename = os.path.abspath(__file__)
if(counter >= 5):
    os.remove(filename)
else:
    f = open(filename)
    lines = f.read().splitlines()
    f.close()
    line = lines[0].split("=")
    line[1]=str(counter+1)
    lines[0]='='.join(line)
    open(filename, 'w').write('\n'.join(lines))
    # Do whatever the script should do here

但正如上面的评论所提到的,没有一种方法是任何人用文本编辑器或其他非常简单的方法都无法轻易绕过的。你知道吗

需要联机服务来验证和解密要运行的代码。你知道吗

这几乎是最琐碎的python/操作系统知识无法绕过的唯一方法。这也是在windows上工作的唯一方法,windows对打开的文件有一个锁,这会阻止脚本删除它自己。你知道吗

以下是如何实现这一目标的粗略指南:

  • 编写程序。不要分发。
  • 编写Web服务器。
    • 这个web服务器将接收一个带有序列号的POST(例如)。你知道吗
    • 然后它会在数据库的某个部分中查找该序列号,并记录该序列号的使用时间。你知道吗
    • 如果序列号没有被使用太多次-返回一个解密密钥。你知道吗
  • 编写你分发的程序。
    • 这将包含一个填充程序,用一个特定的序列号来命中Web服务器。你知道吗
    • 然后它将使用从web服务器返回的键来decrypt your code,然后是run it。你知道吗

虽然这种方法可行,但仍有缺点

  • 它要求您为每个想要运行它的人创建一个新的发行版。你知道吗
  • 它对工作的网络连接和活动的服务器有很强的依赖性。你知道吗
  • 如果您没有使用安全连接,则可能会嗅出密钥。你知道吗
  • 每次解密都会被记录,而不是每次成功执行。根据程序的性质,这可能是一个缺点,因为运行程序的失败尝试仍将计入其使用限制。你知道吗
  • 最大的问题是:如果用户在序列号过期之前编辑了你的shim,只需打印序列号,他们就可以跳过你的shim,直接提供密钥。你知道吗

基本上-你不能在python中成功地做到这一点。然而,做了以上这些,你就增加了人们意识到他们已经被你的程序拒之门外,直到为时已晚的机会。一旦网络服务器停止分发密钥-就这样。你知道吗

添加到脚本:

import os
with open("file.txt","a") as file:
    file.write(1)
with open("file.txt","r") as file:
    if len(file.read())>5:
        os.system("rm <path to this file>")

鉴于@Shadow的假设

相关问题 更多 >