初识Protobuf:常见数据加密三种方式
常见数据加密三种方式常见的对数据加密有三种情况: 第一种是,用诸如AES这类加密算法对数据加密,然后在用key进行解密,这类的数据解密的难度不是很大,弄清楚是用的什么加密算法就能反解。 第二种是,用“私有”协议把数据序列化,只有了解该协议的细节才有可能把数据反序列化出来。 第三种是,用第三方厂商的协议来数据序列化,自己搞不出来私有协议的就选用第三方厂商的。比如用 Google 的 Protobuf ,来做数据序列化,也就是数据“加密”。 Protobuf介绍Protobuf应该是Protoc buffers(协议缓冲区),官方解释直接翻译官网的介绍,概括一下就是:Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can...
Python调用js代码:https://github.com/ZSAIm…
1.pyexecjs 安装pip install PyExecJS 用法: import execjs execjs.eval(js代码) 或者 js = js代码 ctx = execjs.compile(js) result = ctx.call(js函数,参数) 存在的问题: 执行编码的输入输出操作出现报错 解决方案,可以把参数使用base64编码一下 执行大型js会慢 2.selenium 用法 js = “js代码” result = browser.execute_script(js) 3.pyppeteer 用法 await page.evaluate(""" () =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) } &qu...
Frida的安装:是Python API,但JavaScript调…
1. 概述Frida是个轻量级别的hook框架 是Python API,但JavaScript调试逻辑Frida的核心是用C编写的,并将Google的V8引擎注入到目标进程中,在这些进程中,JS可以完全访问内存,挂钩函数甚至调用进程内的本机函数来执行。 使用Python和JS可以使用无风险的API进行快速开发。Frida可以帮助您轻松捕获JS中的错误并为您提供异常而不是崩溃。 。 关于frda学习路线了,Frida的学习还是蛮简单的,只需要了解两方面的内容: 1)主控端和目标进程的交互(message) 2)Python接口和js接口(查文档) frida框架分为两部分: 1)一部分是运行在系统上的交互工具frida CLI。 2)另一部分是运行在目标机器上的代码注入工具 frida-serve。 2. 资源和环境12345Windows10 X64Python 3.7mi 6 Anroid 8.1Frida官网:https://www.frida.re/Frida源码:https://github.com/frida 3.运作模式Frida通过其强大的仪器核心Gum提供动态...
基于frida的objection工具的使用
摘录http://strivemario.work/archives/8eec80c3.html 官方仓库: objection 安装前置条件121. python版本 > 3.42. pip版本 > 9.0 安装命令1pip3 install objection 安装完成后, 直接输入objection, 就可以看到食用方法了 简单使用一下CmdLine: 123456789101112131415161718192021222324252627282930313233343536373839Usage: objection [OPTIONS] COMMAND [ARGS]... _ _ _ _ ___| |_|_|___ ___| |_|_|___ ___ | . | . | | -_| _| _| | . | | |___|___| |___|___|_| |_|___|_|_| |___|(object)inject(ion) Runtime Mobile Explorat...
Flask的request对象和数据渲染
request对象的属性from flask import request path:base_url full_path:url host:url_root host_url args:Werkzeug的ImmutableMultiDict对象。存储解析后的查询字符串,可通过字典方式获取键值。如果你想获取未解析的原生查询字符串,可以用query_string属性 blueprint:当前蓝本的名称 cookies:一个包含所有随请求提交的cookies的字典 data:包含字符串形式的请求数据 endpoint:于当前请求相匹配的端点值 files:Werkzeug的MultiDict对象,包含所有上传文件,可以使用字典的形式获取文件。使用的键为文件input标签中的name值,对应的值为Werkzeug的FileStorage对象。可以调用save()方法并传入保存路径来保存文件 form:Werkzeug的ImmutableMultiDict对象。于files类似,包含解析后的表单数据。表单字段值通过input标签的name属性值作为键获...
Flask的路由和蓝图:查看所有的路由的路径
查看所有的路由的路径1.flask routes 命令行 1234Endpoint Methods Rule----------- ------- ----------------hello_world GET /static GET /<path:filename> 2.app.url_map代码中 1Map([<Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>]) url路由转换器普通的转换器默认是str类型 123@app.route('/user/<id>')def hello_world(id): return f'Hello {id}!' 带类型的转换器 12345678910111213# # 默认转换器# DEFAULT_CONVERTERS = {# 'default'...
Flask的异常处理:abort函数和自定义错误信息
abort函数和自定义错误信息abort()函数可以传递两种方式 一种是传递状态码信息,例如:abort(404) ,前端就会报出已经默认好的404错误信息 另外一种方式是传递响应体的信息,abort(Response(“内容”)),Response() ,里面的信息会在前端上面显示出来 自定义错误信息,用装饰器定义一个视图函数 这个函数的返回值会是前端所看到的最终的结果,这个视图函数的装饰器来定义错误的类型 @app.errorhandler(404) # 定义404的错误类型 自定义的错误类型,可以是状态码,可以是异常类名称(例如:ZeroDivisionError)
Flask的请求上下文和钩子:请求钩子
请求钩子 before_first_request 在处理第一个请求前执行 before_request 在每次请求前执行 如果在某修饰的函数中返回了一个响应,视图函数将不再被调用. after_request 如果没有抛出错误,在每次请求后执行 接受一个参数︰视图函数作出的响应 在此函数中可以对响应值在返回之前做最后一步修改处理。 需要将参数中的响应在此参数中进行返回 teardown_request : 在每次请求后执行 接受一个参数:错误信息,如果有相关错误抛出 上下文 current_app 程序上下文,当前激活程序的程序的实例 g 程序上下文,处理请求时用作临时存储的对象。每次请求会重设这个对象 request 请求上下文,请求对象,封装了客户端发出的http请求的内容 session 请求上下文,用户会话
认识flask的app:flask简介
flask简介Flask是使用Python编写的Web微框架。Web框架可以让我们不用关心底层的请求响应处理,更方便高效地编写Web程序。因为Flask核心简单且易于扩展,所以被称作微框架(micro framework)。Flask有两个主要依赖,一个是WSGI(Web Server Gateway Interface,Web服务器网关接口)工具集——Werkzeug(http://werkzeug.pocoo.org/),另一个是Jinja2模板引擎(http://jinja.pocoo.org/)。Flask只保留了Web开发的核心功能,其他的功能都由外部扩展来实现,比如数据库集成、表单认证、文件上传等。如果没有合适的扩展,你甚至可以自己动手开发。Flask不会替你做决定,也不会限制你的选择。总之,Flask可以变成任何你想要的东西,一切都由你做主。 官方文档:https://dormousehole.readthedocs.io/en/latest/ 简单的demo1234567891011121314151617181920212223242526from flask ...
Python开发环境:python的环境
python开发环境python的环境envThe venv module provides support for creating lightweight “virtual environments” with their own site directories, optionally isolated from system site directories. Each virtual environment has its own Python binary (which matches the version of the binary that was used to create this environment) and can have its own independent set of installed Python packages in its site directories. Venv 模块支持创建具有自己站点目录的轻量级“虚拟环境” ,可以选择从系统站点目录中隔离出来。每个虚拟环境都有自己的 Python 二进制文件(与用于创建此环境的二进制文...