ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用Python做一个自律神器(从未有过的神奇思路)(一)

2021-11-21 16:30:33  阅读:140  来源: 互联网

标签:计算机 Python 神器 密码 时间 设置 从未有过 思路 我们


目录

前言

自律是什么?自己控制自己。这是一件很难的事情,很多时候,你并不受你自己的意识管控,明明要写作业,非要拿起了手机,明明发誓不玩电脑,却还是打开了Steam…那么我们不妨换个思路,让计算机来帮助你自律。

思路

简介

这个思路其实非常简单,但是非常有效。把自律交给计算机/手机的实例已经有很多,比如手机上的锁机软件,甚至某宝卖的自律神器,能把手机装进密封盒里,到时间后才能打开。但是今天我们要介绍的思路更加普遍适用。

一般的自律神器都有它的局限性,比如手机锁机软件总有这样或者那样的方法破解,密封盒也只能放进手机,对于其他东西也没有作用。既然如此,我们就从底层出发来减少这个局限性。

密码——挡住他人,也可以约束自己

密码是自己设置的,怎么约束自己?

密码是一个非常底层的东西,手机有密码,电脑有密码,文件可以加密。但是这个密码在日常生活中是我们管控的,目的是不让他人侵犯我们的隐私,现在我们不妨用它来约束我们自己。

这就要解决一个问题:密码是自己设置的,怎么约束自己?

问得好,既然密码由自己控制,那就不能控制自己,除非你有失忆术,设完密码的一瞬间忘记它,这也有个问题——那不是永远也打不开它了?所以,我们不能让自己控制密码,而是计算机。

密码如何给计算机控制?

计算机上的任何软件都没有自动生成密码并控制它的功能——毕竟这不是密码诞生的目的。而自动设置密码这个过程不禁让人联想到AI控制人类等一系列离谱的东西,从这里我们可以理解到:密码并不能由计算机设置,只能由我们自己设置。

这就是这个思路最核心的地方所在了:设置并不等于控制,平时我们设置密码,最重要的一点是什么?没错,记住它。这是传统使用密码的前提,设置并记住才等于控制。如果我们不让自己控制密码,那就要让密码由计算机记住,而我们不能记住它。

什么样的东西计算机能记住,而我们短时间内记不住它呢?

看看这些东西吧:LlwYZ39LYZ cy1FkVRBS8 ml6AgIqt9 ZeBDpjXrIM Jmls2I7pDT

只要你没有意识去记忆它,基本是不可能短时间记下来的。如果你说:我这最强大脑没办法啊,我看一眼就记住了啊,我都没想记住它。

那你能看一眼记住这个吗(doge)LJea5ezwTm8v7fs0lKj1bEnYdMstRKLA1KGpBAW4pSR1HA9yv2RP3Cl9Og9tKux9GJVJ8t8px0HfmGMOE1nvztaSJicqNyd7t5ONxKUlPGWJgBqOWU5bRi63ex7JMwix

而生成一串随机字符串可能是对于计算机来说最简单的事情之一了。只要我们让计算机生成一串复杂字符串,由我们复制粘贴去设置它(我们记不住它),然后计算机封存它,加以各种限制:比如最常见的时间限制。在你设置的截止时间之前,计算机不会告诉你这个密码,当时间一到,计算机就会自动把它呈现给你,这时你就可以访问这个加密的东西了。

我们还可以遐想一下(当然这我现在做不到,可能有人能做到),计算机可以给出其他限制,比如让你刷题,刷完相应的题目后计算机才会把这个密码呈现给你,作为一种奖励机制。这都是基于这个思路的延伸应用,大有可为了属于是。

实现

我们可以用各种方式实现它,毕竟这是个思路。你甚至可以让别人而不是计算机控制这个密码,这是最简单的——你不用学任何编程,只需要一个理解你的好朋友或者好家长。当然,计算机的实现是更灵活自主的。

这篇文章不是实现的主题,如果后续时间允许,我会把它开源供大家使用。现在我只是先说一下python做这个的大致思路,其实非常简单,初学者也可以解决。

基本功能实现

有这么几个功能是必须要实现的:

  1. 随机字符串生成
  2. 封存密码
  3. 校验时间到了没有
  • 字符串生成网上一抓一大把,用ramdon函数就可以实现
  • 由于python是解释语言,代码是开源的,要封存不太方便,但总是有办法——用exe打包py文件,做一个exe文件出来,这样就看不到正在封存的密码了,这个也好说,用pyinstaller就可以实现。
  • 时间这个东西其实要注意:本地时间是可以随意篡改的,所以我们要获取网络时间,防止更改时间以越过时间校验,网上找一个简单的在线时间api接口也很方便。

当然,看似做完了,我们依旧有很多方法破解它,我们要一一击破这些方法。

进阶功能实现

防止抓包篡改网络时间

网络时间从网上爬下来,只要用fidder抓一个包,篡改一下返回数据就能破解。这个也很好解决。我的思路是:时间差校验。

本地获取一次本地时间,网络获取一次网络时间,sleep两秒再分别获取一次,就算出了本地的时间差和网络的时间差。如果没有经过抓包,这两个值应该相等或者只差个一秒左右,如果经过了抓包篡改,这两个值就会差得很多。

防止时区篡改

很多网络时间api是识别本地时区的,本地更改时区会导致网络获取的时间变化。所以只需要用time模块获取一下本地时区,看看是不是正常的时区就可以了。

未完待续

这篇文章只是介绍实现方法,如果后续时间允许且有人需要的话,我会做好成品并开源供大家使用。

标签:计算机,Python,神器,密码,时间,设置,从未有过,思路,我们
来源: https://blog.csdn.net/qq_41620542/article/details/121454650

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有