PassKeepコンソールアプリケーション

こんにちは、ホーカーズ!



パスワードはどのように保存しますか? それとも、あらゆる場合に1つのパスワードを持っていますか? 私はそのようにそれを持っていました! まあ、それはほとんどそうです。 そのうちの2つ-識別コードと、携帯電話で構成された賢明なアナグラムがありました。



あなたが私のような人なら、猫をお願いします。



私は長い間、このようなものを書くという考えを持っていました。 そして最後に、私は自由な一日を過ごし、私はこのビジネスを実装することにしました。



アクションプラン


だから、私たちは何を見たいですか:

  1. プログラム自体は、たとえば登録するリソースのURLに基​​づいてパスワードを生成する必要があります。
  2. パスワードは、ブルートフォースに対して十分な耐性、つまり文字と数字を含む必要があります。
  3. パスワードはどこにも保存しないで、その場で生成する必要があります。
  4. パスワードは回復可能でなければなりません。




私はこれを想像する:

  1. プログラムを起動した後、パスワードを入力する必要があります(45678などの単純なものでもかまいません)。
  2. www.twitter.comなどのURLが必要です。
  3. 登録に使用する10桁のパスワードを取得します。




どのように機能しますか?


パスワードとURLを入力した後、md5の合計を取得し、文字列の連結を実行して、64文字の文字列を取得します。 次に、この行のmd5合計を取得し、最初の10文字を取得します-これがパスワードになります。 とても簡単です。



実装


私はPythonとJavaScriptが大好きですが、コンソールアプリケーションを取得したい方法であり、コンソールでJavaScripteプログラムを実行する方法がわかりません。Pythoneで記述します。 始めましょう:



import hashlib, sys, re class PassKeep: #,  , ! __password = "" __length = 10 #    10 . url = "" def getMd5(self, string): #   md5  . string = str(string) md5 = hashlib.md5() md5.update(string) return md5.hexdigest() def __init__(self): #,   .   .      . self.__password = self.getMd5(self.__password) self.time = self.getMd5(time.time()) def setUrl(self, url): # url. self.url = self.getMd5(url) return self.url def setPasswd(self, passwd): # . self.__password = self.getMd5(passwd) return self.__password def decrypt(self): # ,   . password = self.__password #   url, url = self.url #    . result = self.getMd5(password + url) #  md5    . passwd_candidate = result[:self.__length] #     10 . #    !   , # ,    ,   n(10)    . #     -   ,     -   ! if (len(re.findall(r'([0-9]+)', passwd_candidate)[0]) + 3 < len(passwd_candidate)): #    return passwd_candidate else: #  ,   . result = "" count = 0 sum = 1 for symbol in passwd_candidate: #     . if (sum < 4): #       ,    . try: #     int,   str (). int_symbol = int(symbol) if (count%2 != 0): #      . print int_symbol result += chr(122 - int_symbol) #   ,          ,     ! sum += 1 count += 1 else: # ,    . result += symbol count += 1 except: #  str       . result += symbol count += 1 else: result += symbol count += 1 return result p = PassKeep() # . passwd = raw_input("Enter passwd \n") #       ! p.setPasswd(passwd) url = raw_input("Enter url, like www.example.com \n") p.setUrl(url) print p.decrypt() #      sys.exit(0) # .
      
      







打ち上げ


実行は非常に簡単です-passkeep.pyファイルにすべてを保存して実行します:

python passkeep.py









おわりに


私は今、このものをほぼ12時間使用しています。 5つのリソースに登録し、2でパスワードを変更しました。 最初は、パスワードは64ビットプロセッサで生成されていましたが、今では86ビットプロセッサで試しましたが、パスワードは一致しているようです。 念のため、それは私です。



そうそう。 また、このことをGithubにアップロードしました :をクリックします



このすべてをもう少しテストし、問題がなければ、iOS / Android / Chrome Extensionsに移植します。



実装に関する建設的なコメントを歓迎します。



ご清聴ありがとうございました。



UPD:

Dark_MX habrayuzer追加に感謝し、 Chrome拡張機能を見つけてくれたRomanslに感謝します。



All Articles