ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

生成otp token 脚本

2021-01-28 15:01:54  阅读:296  来源: 互联网

标签:脚本 int secret token key otp import data


#!/usr/bin/python3   import re import time import hashlib import struct import base64 import hmac from random import choice from string import ascii_letters, digits from sys import argv

 

secret = '这里是你的secret'

 

mangling_string = 'ASGIw3gQMAbEw6z4u8xxmfwYx5qG4b16'

 

def get_hotp_token(secret, intervals_no): key = base64.b32decode(secret, True) msg = struct.pack(">Q", intervals_no) h = hmac.new(key, msg, hashlib.sha1).digest() o = h[19] & 15 h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000 return h



def get_totp_token(secret): return get_hotp_token(secret, intervals_no=int(time.time())//30)



def xor_crypt_string(data, key='awesomepassword', encode=False, decode=False): from sys import byteorder import base64 if decode: data = base64.decodebytes(bytearray(data, 'ascii')) else: data = bytearray(data, 'ascii') while (len(data) > len(key)): key += key key = key[:len(data)] key = bytearray(key, 'ascii') int_data = int.from_bytes(data, byteorder) int_key = int.from_bytes(key, byteorder) int_enc = int_data ^ int_key int_enc = int_enc.to_bytes(len(data), byteorder) if encode: return base64.encodebytes(int_enc).strip() return int_enc



# extract params: if (len(argv) > 1): secret = argv[1]

 

try: token = get_totp_token(xor_crypt_string( secret, mangling_string, decode=True)) except: print("Invalid Secret")

 

token = '123456' + '%06d' % token print(token)

 

标签:脚本,int,secret,token,key,otp,import,data
来源: https://www.cnblogs.com/sweetsunnyflower/p/14339847.html

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

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

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

ICode9版权所有