自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 JS安全防护算法与逆向分析——babel混淆JS代码

使用Babel操作AST抽象语法树混淆JS代码 const parser = require("@babel/parser"); const traverse=require("@babel/traverse").default; const t=req...

2020-05-17 14:15:44 154 0

原创 JS安全防护算法与逆向分析——使用babel生成JS代码

const types=require("@babel/types");//生成节点,判断类型 const generator=require("@babel/generator").default;//生成代码 const fs=require("...

2020-05-17 13:15:57 94 0

原创 JS安全防护算法与逆向分析——webpack改写方案

webpack改写方案 XHR断点 我们发现要扣的代码特别多,而且循环嵌套,会引用其他包,需要的代码太多了,有八万多行。最外边是一个括号包含webpack,是一个数组,压入了许多数据。但是这些文件都是直接被压入的,里边导入的包没有运行。 (window.webpackJsonp = w...

2020-05-15 23:03:11 128 0

原创 JS安全防护算法与逆向分析——JS Hook

JS Hook 声明:本教程从安全角度出发讲解,只为增加读者的安全知识,提升读者数据安全意识,以及对于病毒和钓鱼网站的防护能力。绝无其他任何目的与用途。 一、JS Hook原理与作用 JS Hook原理非常简单,现在将一个最简单的例子,比如有这样一个函数 function test(a...

2020-05-14 21:20:27 119 0

原创 JS安全防护算法与逆向分析——Chrome开发者工具

Chrome开发者工具 声明:本教程从安全角度出发讲解,只为增加读者的安全知识,提升读者数据安全意识,以及对于病毒和钓鱼网站的防护能力。绝无其他任何目的与用途。 一、打开开发者工具 有时候网站为了反调试,会禁止你打开开发者工具,或者有的小说网站还会禁止你复制,这些都是通过JS做到了,因为JS...

2020-05-14 16:30:36 148 0

原创 JS安全防护算法与逆向分析——淘宝登录JS加密算法
原力计划

淘宝登录JS加密算法 声明:本教程从安全角度出发讲解,只为增加读者的安全知识,提升读者数据安全意识,以及对于病毒和钓鱼网站的防护能力。绝无其他任何目的与用途。 淘宝作为国内最大的网络零售商,对于用户信息安全的保护可谓固若金汤。本文将讲解淘宝在用户登录时如何将用户的个人信息加密以达到保护...

2020-05-12 15:27:24 252 2

原创 JS安全防护算法与逆向分析——问卷星自写算法
原力计划

问卷星自写算法 声明:本教程从安全角度出发讲解,只为增加读者的安全知识,提升读者数据安全意识,以及对于病毒和钓鱼网站的防护能力。绝无其他任何目的与用途。 在学校里经常会填写调查问卷,那这些调查问卷到底需要我们的什么信息呢?传输的时候是否会把我们的个人信息传输上去?再就是我们填写的选项到底是...

2020-05-10 16:33:27 118 0

原创 JS安全防护算法与逆向分析——新浪微博登录JS加密算法
原力计划

新浪微博登录JS加密算法 声明:本教程从安全角度出发讲解,只为增加读者的安全知识,提升读者数据安全意识,以及对于病毒和钓鱼网站的防护能力。绝无其他任何目的与用途。 新浪微博作为国内最大的即使分享社交平台,其用户基数庞大,为了进一步维护网络社交环境,阻止机器人等无用用户涌入,微博必然会提...

2020-05-10 14:16:59 147 2

原创 10.Erlang 记录与宏文件

一、记录 1.创建记录 -record(person,{name,age=0,gender="none"}). 2.读取记录 start(N)-> NewPerson= #person{name=N}, pprint(NewPerson). ...

2020-03-21 20:04:51 16 0

原创 9.Erlang 二进制操作

一,为什么使用二进制类型? 使用低级别的编程更加可靠,而且相比于元组和列表更加节省空间。有时候大量结构化的数据必须在计算机之间相互移动,我们就需要确保数据尽可能高效传播,利用一切可以存储的位置,每个位置尽可能含有较多的信息。 二,二进制类型 1.内置函数转化二进制 1>A={tes...

2020-02-26 09:51:48 59 0

原创 8.Erlang C/S模式

客户端/服务器模型 实现: 1.服务器提供给请求客户端数字 2.客户端发送allocate,则服务器返回数字给客户端 3.客户端发送dellocate,可以释放一个数字 4.客户端发送stop,服务器停止活动 服务器实现 %%server start()-> regi...

2020-02-20 17:36:56 35 0

原创 7.Erlang 并发编程

Erlang的进程是轻量级的,它的生成,上下文切换和消息传递都是虚拟机来管理的。操作系统线程和Erlang进程没有任何关系,独立于操作系统底层。Erlang中每一个处理器或者核心处理一个操作系统线程,而Java每一个进程代表一个操作系统线程。 进程传递消息,从发送进程堆复制到接受进程堆,避免了共...

2020-02-20 17:09:27 30 0

原创 6.Erlang 处理文本

一,常用函数 1.lists:nth/2 获取列表第N个数值 lists:nth(3, [1, 2, 3, 4, 5]). nth(1, [H|_]) -> H; nth(N, [_|T]) when N > 1 -> nth(N - 1, T). 2.stri...

2020-02-12 12:00:53 44 0

原创 5.Erlang 使用列表处理数据库

-module(db). -compile(export_all). new()->[]. destory(_Db)->ok. write(Key,Element,Db)-> lists:keystore(Key,1,Db,{Key,Element}). dele...

2020-02-11 22:54:55 28 0

原创 4.Erlang 错误处理

一,运行错误 1.function_clause:无模式匹配 2.case_clause:case误模式匹配 3.if_clause:if没有模式匹配 4.badmatch:变量已经被绑定 5.badarg:参数错误 6.undef:没有函数 7.badarith:算术运算错误 二...

2020-02-11 21:10:15 57 0

原创 3.Erlang 递归和尾递归

一,递归 1.将列表里的元素都+1 bump([])->[]; bump([H|T])->[H+1|bump(T)]. 2.求平均数 sum([])->0; sum([H|T])->H+sum(T). len([])->0; len([_|T])->...

2020-02-11 20:55:34 20 0

原创 2.Erlang 输入输出

一,输入 读取一行字符串或原子 1> io:get_line(">>>"). >>>hello "hello\n" 2> io:get_chars(">>>",3)....

2020-02-11 19:04:48 37 0

原创 1.Erlang 基础

一,整数 1.Base#Value 可以表示不是十进制的数整数,比如 2#1010代表二进制 16#EA代表十六进制 2.表示字符的ASCII数值,可以使用$character的形式,比如 $a $A $\n 3.数学运算符 / 浮点除法 div 整数除法 rem 整数取余 二...

2020-02-11 18:52:12 20 0

原创 PyQt5打包出错:pyinstaller failed to execute script or not find or load the QT platform plugin “windows”

困扰一整天,试验找出最终解决方案: pyinstaller --hidden-import=queue --path=D:\Anacoda\Lib\site-packages\PyQt5\Qt\bin -w -F main.py 注:--path为你自己的QT路径

2019-08-09 18:05:07 187 0

原创 c语言:矩阵相乘

#include <stdio.h> int main() { int a[4][3] = { {1,2,3}, {4,5,6}, {7,8,9}, {1,2,3}}; int b[3][3] = ...

2019-05-06 00:52:54 712 0

原创 Twisted微框架Klein源码阅读(一)

from klein import run, route @route('/') def home(request): return 'Hello, world!' run("localhost", 8080) 首先进入其K...

2019-04-12 09:16:41 181 0

原创 python:dict.copy()

dict1 = {'Name': 'Zara', 'Age': [0,0,0]} """ dict.copy() 对于一级目录是深拷贝,二级目录浅拷贝,浅拷贝就是引用 浅拷贝的话,改变...

2019-04-12 08:33:06 342 0

原创 Java:final关键字

1.final作为关键字,表示不可变的 2.final修饰的类无法被继承 3.final修饰的方法无法被覆盖 4.final修饰的变量一旦赋值后不可覆盖 5.final修饰的引用不能更改为其他引用,但是引用内部可以改变 6.final常常与static连用,表示不可改变的常量,例如 ...

2019-04-07 15:52:17 37 0

原创 Java:static关键字

带有static的方法,其实既可以采取类名的方式,也可以采取引用的方式访问 但是采用引用,实际上访问的时候和引用的对象无关 所以带有static的方法建议使用类名的方式访问 什么时候成员变量使用静态变量? 所有对象这个属性的值都是一样的时候,节省内存开销 静态代码块——类加载时期 p...

2019-04-07 15:21:36 24 0

原创 Java: this关键字

this关键字: this是一个引用,是一个变量,this变量中保存了指向自身的内存地址,this存储在JVM堆内存 每一个Java对象都有一个this,各个不同 this在多数情况下可以省略不写 this不能使用在带static的方法中,如果想访问就在方法里new一个 package ...

2019-04-07 14:58:33 925 0

原创 Java:构造方法

Java构造方法 1.构造方法不需要返回值类型,也不能写void,如果加上void,这个方法就变为普通方法了 2.构造方法的方法名和类型名字一样 3.构造方法作用是 创建对象 创建对象的同时,初始化实例变量的内存空间,因为实例变量也叫对象变量,没有对象就没有对象变量。也就是会把实例变量赋...

2019-04-06 16:27:30 34 0

原创 Django通过字段获取关联模型

#根据字段获取关联表 filter_field_obj=self.model._meta.get_field(filter_field) print('filter_field_obj:',filter_field_obj) print(type(filter_field_ob...

2019-04-06 11:16:48 143 0

原创 Django权限组件

Django权限可以模型可以分为三个User,Role,Permission。一个用户可以有多个角色,一个角色可以有多个权限,一个权限也可以赋予多个角色,而实际上权限就是限制用户访问某些页面,所以权限实际上就是URL,所以建立如下表。 from django.db import models ...

2019-04-06 11:09:13 150 0

原创 web主机托管

主机托管服务 要想拥有网站,必须要有服务器机房,域名,或者购买网络宽带。很少有人有这么多精力去打理,于是有了主机托管服务,用户只需要提供内容即可,硬件设施由商家提供。 专用托管: 从网络服务商那里租用专用服务器。 虚拟主机托管: 也叫共享主机托管,起因是一些人的网站比较小,不需要专门的网...

2019-04-01 19:36:02 123 0

原创 Lisp:计算黄金分割率

黄金分割率是变换x--->1+1/x的不动点,我这里把不动点的误差控制在0.0001 #lang racket (define (test guess) (define (enough x y) (< (abs (- x y)) 0.0001)) (define (...

2019-03-28 23:13:27 108 0

原创 C语言scanf踩坑

关于scanf的这一点真是千篇阅尽不见人言,只能自己踩坑踩出来:) 用下面的scanf函数输入数据,使a=2, b=76, x=8.4, y=91.02, c1='U', c2='u'。问在键盘上如何输入? #include <stdio.h&...

2019-03-21 17:41:27 89 0

原创 Lisp:素数检测

寻找因子 检测素数的一种方法就是找出它的因子,用从2开始的连续整数检查他们能否整除n 如果n不是素数,必然有一个小于或者等于sqrt(n)的因子。 #lang racket (define (small-divisor n) (find-divisor n 2)) (define (f...

2019-03-14 23:40:31 323 0

翻译 Lisp:换零钱问题

给了半美元,四分之一美元,10美分,5美分,1美分,将1美元换成零钱,一共有多少种换法?更一般的问题,给了任意数量的现金,我们能计算出有多少种换零钱方式吗? 采用递归,有一种简单解法: 将总数a的现金换成n种硬币的不同方式的数目等于 将现金a换成除了第一种硬币之外的所有其他硬币的不同方式...

2019-03-14 21:29:54 83 0

原创 Lisp:斐波那契数列

#lang rocket (define (fib-one n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ fib-one(- n 1) fib-one(- n 2))))) (define (fib-two ...

2019-03-14 21:05:31 304 0

原创 Lisp:用牛顿法求解平方根

用牛顿法求解平方根,本质上是一个不断逼近的过程。就是说,对一个猜测数字的平方与原数字比较,如果相差不大,那最终的结果就是它。 每一次运算,都会求出猜测值y与x/y的平均数,作为下一次猜测的y值,直到满足条件为止。 #lang racket (define (sqrt-iter x gu...

2019-03-14 20:34:18 109 0

翻译 Twisted聊天服务器

from twisted.internet.protocol import Factory,connectionDone from twisted.protocols.basic import LineReceiver from twisted.internet import reactor ...

2019-01-24 15:32:51 119 0

翻译 python享元模式

#享元模式是用于优化的 #是创建大量重复单元,不在意单个ID的,就是说,他们的ID是不区分的 #比如说创建一万颗树,第一次可以创建,接下来就不用再开辟内存了,直接寻找,找到就返回创建 import random from enum import Enum TreeType=Enum(&qu...

2018-11-18 20:14:44 127 0

原创 python实现群聊服务器

import socket import threading import logging log=logging.basicConfig(level=logging.DEBUG, format='%(asctime)s--%(thre...

2018-11-16 23:24:36 231 0

原创 django的RedirectView通用试图

# views.py class ArticleCounterRedirectView(generic.RedirectView): '''也可以设置url# url 可以不给,用 pattern_name 和 get_redirect_url...

2018-11-14 15:48:14 518 0

原创 Mongodb缓存爬虫数据

from pymongo import MongoClient from datetime import datetime,timedelta import zlib import pickle class MongoCache: def __init__(self,client=No...

2018-11-14 11:09:08 77 0

提示
确定要删除当前文章?
取消 删除