当前位置: 首页 > news >正文

逆向案例二十八——红某点集登录接口逆向序

网址:aHR0cHM6Ly93d3cuaHJkanl1bi5jb20vIy9sb2dpbj9yZWRpcmVjdD0lMkZyZWFsVGltZUxpdmluZw==

登录接口,发现两个参数加密,分别是pwd和sig,t很明显是时间戳。

观察pwd,发现很像md5加密,我输入的密码是123456,在在线加密网站加密,发现果然如此。

但是这次采用扣代码来解决,不用标准库。

 

参数没有特点,搜索是很难搜的,采用跟栈方法。

 还是跟之前一样,点击第一个,在send处打断点,点击登录,前三个是发包,一般不在里面吗加密。

现在就是判断是不是在异步里面加密的,如何判断呢, 进入异步s.requests处,在常见位置打上断点。在控制台打印e,进入第一个函数在return处打上断点,看加密了吗?若是加密了,则并不是在异步中加密的。

 

发现进入异步的第一个函数接受的参数已经是经过加密的数据,因此跳过异步。 

 

进入下一个栈,G栈,在u处打上断点,释放其他断点,点击登录

看l = l = Object(g["a"])(H(S(e)))就是sig的加密位置,Object(g["a"])代码的意思就是调用g中的a方法。相当于g["a"](H(S(e)),但是这里存在变量污染,传入的参数s不应该含有加密后的sig,所以在前面打上断点,可以更好确定传入的参数是什么形式的。

 

在这里打上断定,var t = n.split("/") ,再点击跳过下一个函数执行,一步步执行到sig的加密位置。

这时候的传入的参数为e

 

t由s赋值,s由函数 s = (new Date).getTime();赋值

那么现在还是要先破解pwd是怎么加密的。

先找到pwd的加密位置。由于传入function G(n,e)中的e已经有加密后的pwd了,所以继续往前跟栈。

pwd由pwd: Object(E["a"])(t.loginForm.password)赋值,相当于E["a"](t.loginForm.password),其中t.loginForm.password是密码'123456'

 

进入E['a']发现是它,复制到pycharm中,传入的n就是密码,运行会发现缺少c,就在前面找c,然后复制

 

 

c在哪里,就在这个函数附近。然后运行发现没有o,接着复制一步一步来,最后直到成功。

 

完整代码:

var a=0;
function i(n) {return c(o(s(n)))
};
function c(n) {for (var e, t = a ? "0123456789ABCDEF" : "0123456789abcdef", i = "", o = 0; o < n.length; o++)e = n.charCodeAt(o),i += t.charAt(e >>> 4 & 15) + t.charAt(15 & e);return i};
function o(n) {return r(d(l(n), 8 * n.length))};
function s(n) {var e, t, a = "", i = -1;while (++i < n.length)e = n.charCodeAt(i),t = i + 1 < n.length ? n.charCodeAt(i + 1) : 0,55296 <= e && e <= 56319 && 56320 <= t && t <= 57343 && (e = 65536 + ((1023 & e) << 10) + (1023 & t),i++),e <= 127 ? a += String.fromCharCode(e) : e <= 2047 ? a += String.fromCharCode(192 | e >>> 6 & 31, 128 | 63 & e) : e <= 65535 ? a += String.fromCharCode(224 | e >>> 12 & 15, 128 | e >>> 6 & 63, 128 | 63 & e) : e <= 2097151 && (a += String.fromCharCode(240 | e >>> 18 & 7, 128 | e >>> 12 & 63, 128 | e >>> 6 & 63, 128 | 63 & e));return a};
function r(n) {for (var e = "", t = 0; t < 32 * n.length; t += 8)e += String.fromCharCode(n[t >> 5] >>> t % 32 & 255);return e};
function d(n, e) {n[e >> 5] |= 128 << e % 32,n[14 + (e + 64 >>> 9 << 4)] = e;for (var t = 1732584193, a = -271733879, i = -1732584194, o = 271733878, c = 0; c < n.length; c += 16) {var s = t, l = a, r = i, d = o;t = h(t, a, i, o, n[c + 0], 7, -680876936),o = h(o, t, a, i, n[c + 1], 12, -389564586),i = h(i, o, t, a, n[c + 2], 17, 606105819),a = h(a, i, o, t, n[c + 3], 22, -1044525330),t = h(t, a, i, o, n[c + 4], 7, -176418897),o = h(o, t, a, i, n[c + 5], 12, 1200080426),i = h(i, o, t, a, n[c + 6], 17, -1473231341),a = h(a, i, o, t, n[c + 7], 22, -45705983),t = h(t, a, i, o, n[c + 8], 7, 1770035416),o = h(o, t, a, i, n[c + 9], 12, -1958414417),i = h(i, o, t, a, n[c + 10], 17, -42063),a = h(a, i, o, t, n[c + 11], 22, -1990404162),t = h(t, a, i, o, n[c + 12], 7, 1804603682),o = h(o, t, a, i, n[c + 13], 12, -40341101),i = h(i, o, t, a, n[c + 14], 17, -1502002290),a = h(a, i, o, t, n[c + 15], 22, 1236535329),t = m(t, a, i, o, n[c + 1], 5, -165796510),o = m(o, t, a, i, n[c + 6], 9, -1069501632),i = m(i, o, t, a, n[c + 11], 14, 643717713),a = m(a, i, o, t, n[c + 0], 20, -373897302),t = m(t, a, i, o, n[c + 5], 5, -701558691),o = m(o, t, a, i, n[c + 10], 9, 38016083),i = m(i, o, t, a, n[c + 15], 14, -660478335),a = m(a, i, o, t, n[c + 4], 20, -405537848),t = m(t, a, i, o, n[c + 9], 5, 568446438),o = m(o, t, a, i, n[c + 14], 9, -1019803690),i = m(i, o, t, a, n[c + 3], 14, -187363961),a = m(a, i, o, t, n[c + 8], 20, 1163531501),t = m(t, a, i, o, n[c + 13], 5, -1444681467),o = m(o, t, a, i, n[c + 2], 9, -51403784),i = m(i, o, t, a, n[c + 7], 14, 1735328473),a = m(a, i, o, t, n[c + 12], 20, -1926607734),t = A(t, a, i, o, n[c + 5], 4, -378558),o = A(o, t, a, i, n[c + 8], 11, -2022574463),i = A(i, o, t, a, n[c + 11], 16, 1839030562),a = A(a, i, o, t, n[c + 14], 23, -35309556),t = A(t, a, i, o, n[c + 1], 4, -1530992060),o = A(o, t, a, i, n[c + 4], 11, 1272893353),i = A(i, o, t, a, n[c + 7], 16, -155497632),a = A(a, i, o, t, n[c + 10], 23, -1094730640),t = A(t, a, i, o, n[c + 13], 4, 681279174),o = A(o, t, a, i, n[c + 0], 11, -358537222),i = A(i, o, t, a, n[c + 3], 16, -722521979),a = A(a, i, o, t, n[c + 6], 23, 76029189),t = A(t, a, i, o, n[c + 9], 4, -640364487),o = A(o, t, a, i, n[c + 12], 11, -421815835),i = A(i, o, t, a, n[c + 15], 16, 530742520),a = A(a, i, o, t, n[c + 2], 23, -995338651),t = p(t, a, i, o, n[c + 0], 6, -198630844),o = p(o, t, a, i, n[c + 7], 10, 1126891415),i = p(i, o, t, a, n[c + 14], 15, -1416354905),a = p(a, i, o, t, n[c + 5], 21, -57434055),t = p(t, a, i, o, n[c + 12], 6, 1700485571),o = p(o, t, a, i, n[c + 3], 10, -1894986606),i = p(i, o, t, a, n[c + 10], 15, -1051523),a = p(a, i, o, t, n[c + 1], 21, -2054922799),t = p(t, a, i, o, n[c + 8], 6, 1873313359),o = p(o, t, a, i, n[c + 15], 10, -30611744),i = p(i, o, t, a, n[c + 6], 15, -1560198380),a = p(a, i, o, t, n[c + 13], 21, 1309151649),t = p(t, a, i, o, n[c + 4], 6, -145523070),o = p(o, t, a, i, n[c + 11], 10, -1120210379),i = p(i, o, t, a, n[c + 2], 15, 718787259),a = p(a, i, o, t, n[c + 9], 21, -343485551),t = f(t, s),a = f(a, l),i = f(i, r),o = f(o, d)}return Array(t, a, i, o)};
function l(n) {for (var e = Array(n.length >> 2), t = 0; t < e.length; t++)e[t] = 0;for (t = 0; t < 8 * n.length; t += 8)e[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32;return e};
function h(n, e, t, a, i, o, c) {return u(e & t | ~e & a, n, e, i, o, c)};
function f(n, e) {var t = (65535 & n) + (65535 & e), a = (n >> 16) + (e >> 16) + (t >> 16);return a << 16 | 65535 & t};
function g(n, e) {return n << e | n >>> 32 - e};
function m(n, e, t, a, i, o, c) {return u(e & a | t & ~a, n, e, i, o, c)};
function A(n, e, t, a, i, o, c) {return u(e ^ t ^ a, n, e, i, o, c)};
function p(n, e, t, a, i, o, c) {return u(t ^ (e | ~a), n, e, i, o, c)};function u(n, e, t, a, i, o) {return f(g(f(f(e, n), f(a, o)), i), t)}console.log(i('123456'))

运行结果

 

看复制的代码的位置,其实就是'87ff'中的绝大部分代码块,之所以不用webpack是因为'87ff'没有调用其他的模块,所以直接扣就可以。

 

现在处理sig怎么加密的,先生成e,跟上面的步骤一样来。

然后开始写 

 g["a"](H(S(e)),回到G栈,找到S函数,H函数,g['a']函数。并复制

它们分别为

 

 

g.a其实就是i函数。最后结果。

 

最终代码:

var a = 0;function p(n, e, t, a, i, o, c) {return u(t ^ (e | ~a), n, e, i, o, c)
};function A(n, e, t, a, i, o, c) {return u(e ^ t ^ a, n, e, i, o, c)
};function m(n, e, t, a, i, o, c) {return u(e & a | t & ~a, n, e, i, o, c)
};function g(n, e) {return n << e | n >>> 32 - e
};function f(n, e) {var t = (65535 & n) + (65535 & e), a = (n >> 16) + (e >> 16) + (t >> 16);return a << 16 | 65535 & t
};function u(n, e, t, a, i, o) {return f(g(f(f(e, n), f(a, o)), i), t)
};function h(n, e, t, a, i, o, c) {return u(e & t | ~e & a, n, e, i, o, c)
};function l(n) {for (var e = Array(n.length >> 2), t = 0; t < e.length; t++)e[t] = 0;for (t = 0; t < 8 * n.length; t += 8)e[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32;return e
};function d(n, e) {n[e >> 5] |= 128 << e % 32,n[14 + (e + 64 >>> 9 << 4)] = e;for (var t = 1732584193, a = -271733879, i = -1732584194, o = 271733878, c = 0; c < n.length; c += 16) {var s = t, l = a, r = i, d = o;t = h(t, a, i, o, n[c + 0], 7, -680876936),o = h(o, t, a, i, n[c + 1], 12, -389564586),i = h(i, o, t, a, n[c + 2], 17, 606105819),a = h(a, i, o, t, n[c + 3], 22, -1044525330),t = h(t, a, i, o, n[c + 4], 7, -176418897),o = h(o, t, a, i, n[c + 5], 12, 1200080426),i = h(i, o, t, a, n[c + 6], 17, -1473231341),a = h(a, i, o, t, n[c + 7], 22, -45705983),t = h(t, a, i, o, n[c + 8], 7, 1770035416),o = h(o, t, a, i, n[c + 9], 12, -1958414417),i = h(i, o, t, a, n[c + 10], 17, -42063),a = h(a, i, o, t, n[c + 11], 22, -1990404162),t = h(t, a, i, o, n[c + 12], 7, 1804603682),o = h(o, t, a, i, n[c + 13], 12, -40341101),i = h(i, o, t, a, n[c + 14], 17, -1502002290),a = h(a, i, o, t, n[c + 15], 22, 1236535329),t = m(t, a, i, o, n[c + 1], 5, -165796510),o = m(o, t, a, i, n[c + 6], 9, -1069501632),i = m(i, o, t, a, n[c + 11], 14, 643717713),a = m(a, i, o, t, n[c + 0], 20, -373897302),t = m(t, a, i, o, n[c + 5], 5, -701558691),o = m(o, t, a, i, n[c + 10], 9, 38016083),i = m(i, o, t, a, n[c + 15], 14, -660478335),a = m(a, i, o, t, n[c + 4], 20, -405537848),t = m(t, a, i, o, n[c + 9], 5, 568446438),o = m(o, t, a, i, n[c + 14], 9, -1019803690),i = m(i, o, t, a, n[c + 3], 14, -187363961),a = m(a, i, o, t, n[c + 8], 20, 1163531501),t = m(t, a, i, o, n[c + 13], 5, -1444681467),o = m(o, t, a, i, n[c + 2], 9, -51403784),i = m(i, o, t, a, n[c + 7], 14, 1735328473),a = m(a, i, o, t, n[c + 12], 20, -1926607734),t = A(t, a, i, o, n[c + 5], 4, -378558),o = A(o, t, a, i, n[c + 8], 11, -2022574463),i = A(i, o, t, a, n[c + 11], 16, 1839030562),a = A(a, i, o, t, n[c + 14], 23, -35309556),t = A(t, a, i, o, n[c + 1], 4, -1530992060),o = A(o, t, a, i, n[c + 4], 11, 1272893353),i = A(i, o, t, a, n[c + 7], 16, -155497632),a = A(a, i, o, t, n[c + 10], 23, -1094730640),t = A(t, a, i, o, n[c + 13], 4, 681279174),o = A(o, t, a, i, n[c + 0], 11, -358537222),i = A(i, o, t, a, n[c + 3], 16, -722521979),a = A(a, i, o, t, n[c + 6], 23, 76029189),t = A(t, a, i, o, n[c + 9], 4, -640364487),o = A(o, t, a, i, n[c + 12], 11, -421815835),i = A(i, o, t, a, n[c + 15], 16, 530742520),a = A(a, i, o, t, n[c + 2], 23, -995338651),t = p(t, a, i, o, n[c + 0], 6, -198630844),o = p(o, t, a, i, n[c + 7], 10, 1126891415),i = p(i, o, t, a, n[c + 14], 15, -1416354905),a = p(a, i, o, t, n[c + 5], 21, -57434055),t = p(t, a, i, o, n[c + 12], 6, 1700485571),o = p(o, t, a, i, n[c + 3], 10, -1894986606),i = p(i, o, t, a, n[c + 10], 15, -1051523),a = p(a, i, o, t, n[c + 1], 21, -2054922799),t = p(t, a, i, o, n[c + 8], 6, 1873313359),o = p(o, t, a, i, n[c + 15], 10, -30611744),i = p(i, o, t, a, n[c + 6], 15, -1560198380),a = p(a, i, o, t, n[c + 13], 21, 1309151649),t = p(t, a, i, o, n[c + 4], 6, -145523070),o = p(o, t, a, i, n[c + 11], 10, -1120210379),i = p(i, o, t, a, n[c + 2], 15, 718787259),a = p(a, i, o, t, n[c + 9], 21, -343485551),t = f(t, s),a = f(a, l),i = f(i, r),o = f(o, d)}return Array(t, a, i, o)
};function r(n) {for (var e = "", t = 0; t < 32 * n.length; t += 8)e += String.fromCharCode(n[t >> 5] >>> t % 32 & 255);return e
};function c(n) {for (var e, t = a ? "0123456789ABCDEF" : "0123456789abcdef", i = "", o = 0; o < n.length; o++)e = n.charCodeAt(o),i += t.charAt(e >>> 4 & 15) + t.charAt(15 & e);return i
};function o(n) {return r(d(l(n), 8 * n.length))
};function i(n) {return c(o(s(n)))
};function s(n) {var e, t, a = "", i = -1;while (++i < n.length)e = n.charCodeAt(i),t = i + 1 < n.length ? n.charCodeAt(i + 1) : 0,55296 <= e && e <= 56319 && 56320 <= t && t <= 57343 && (e = 65536 + ((1023 & e) << 10) + (1023 & t),i++),e <= 127 ? a += String.fromCharCode(e) : e <= 2047 ? a += String.fromCharCode(192 | e >>> 6 & 31, 128 | 63 & e) : e <= 65535 ? a += String.fromCharCode(224 | e >>> 12 & 15, 128 | e >>> 6 & 63, 128 | 63 & e) : e <= 2097151 && (a += String.fromCharCode(240 | e >>> 18 & 7, 128 | e >>> 12 & 63, 128 | e >>> 6 & 63, 128 | 63 & e));return a
};function H(n) {var e = [], t = "";for (var a in n)e.push(n[a]);for (var i = 0; i < e.length; i++)t += e[i] + "";return t += "JzyqgcoojMiQNuQoTlbR5EBT8TsqzJ",t
};function S(n) {for (var e = Object.keys(n).sort(), t = {}, a = 0; a < e.length; a++)t[e[a]] = n[e[a]];return t
};password = '123456'
phoneNum = "18720180853"
function get_info(phoneNum,password){pwd = i(password)e = {"phoneNum": phoneNum,"pwd": pwd,"t": (new Date).getTime(),"tenant": 1,}// console.log(i(password))sig = i(H(S(e)))return [pwd,sig,e.t]
}
console.log(get_info(phoneNum,password))

用python调用访问代码: 

import requests
import execjs
f = open('红人点集.js','r',encoding='utf-8').read()
json_code = execjs.compile(f)
data = json_code.call('get_info','18720180853','123456')
print(data)
headers = {'Accept': 'application/json, text/plain, */*','Accept-Language': 'zh-CN,zh;q=0.9','Cache-Control': 'no-cache','Connection': 'keep-alive','Content-Type': 'application/json','Origin': 'https://www.hrdjyun.com','Pragma': 'no-cache','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-site','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36','sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"',
}json_data = {'phoneNum': '18720180853','pwd': data[0],'t': data[2],'tenant': 1,'sig': data[1],
}response = requests.post('https://user.hrdjyun.com/wechat/phonePwdLogin', headers=headers, json=json_data)
print(response.json())

 

 

 

 

 

 

相关文章:

逆向案例二十八——红某点集登录接口逆向序

网址&#xff1a;aHR0cHM6Ly93d3cuaHJkanl1bi5jb20vIy9sb2dpbj9yZWRpcmVjdD0lMkZyZWFsVGltZUxpdmluZw 登录接口&#xff0c;发现两个参数加密&#xff0c;分别是pwd和sig,t很明显是时间戳。 观察pwd,发现很像md5加密&#xff0c;我输入的密码是123456&#xff0c;在在线加密网…...

我的创作纪念日20240418

机缘 我的技术博客起源于对编程的深深热爱和对知识的渴望。从一开始&#xff0c;我就被编程世界的无限可能所吸引&#xff0c;而这种热情也推动我开始了技术创作之旅。我创建博客的初衷有以下几点&#xff1a; 分享实战经验&#xff1a;在工作中&#xff0c;我遇到了许多技术…...

计算机视觉入门

计算机视觉是人工智能的一个分支&#xff0c;它涉及研究如何使计算机能够理解和解释图像和视频中的视觉信息。这个领域结合了计算机科学、工程学、神经科学和认知科学等多个学科的知识。以下是计算机视觉入门的一些关键点&#xff1a; 1. 基础概念 - **图像处理**&#xff1a;对…...

CTFHUB-技能树-Web前置技能-文件上传(前端验证—MIME绕过、00截断、00截断-双写后缀)

CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—MIME绕过、00截断、00截断-双写后缀&#xff09; 文章目录 CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—MIME绕过、00截断、00截断-双写后缀&#xff09;前端验证—MIME绕过有关MIMEMIME的作用 解题时有…...

Java面试题笔记(持续更新)

Java基础 java中的Math.round(-1.5)等于多少&#xff1f; Math的round方法是四舍五入,如果参数是负数,则往大的数如,Math.round(-1.5)-1&#xff0c;如果是Math.round(1.5)则结果为2 JDK和JRE的区别&#xff1f; JDK 是 Java Development ToolKit 的简称&#xff0c;也就是…...

格式化字符串漏洞学习笔记

简单介绍 格式化字符串漏洞和栈溢出有相似之处&#xff0c;但又有所不同&#xff0c;都是利用了程序员的疏忽大意来改变程序运行的正常流程。 1、格式化字符串的介绍 printf()、fprint()等print&#xff08;&#xff09;系列的函数可以按照一定的格式将数据进行输出。 实例…...

用友NC avatar接口文件上传漏洞

产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具&#xff0c;用友NC提供了一系列业务管理模块&#xff0c;包括财务会计、采购管理销售管理、物料管理、生产计划和人力资源管理等&#xff0c;帮助企业实现数字化转型和高效管理。 漏洞介绍 用友 NC avatar接口处…...

【Go语言快速上手(二)】 分支与循环函数讲解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; Go快速上手 1. 前言2. 分支与循环2.1…...

动手写sql 《牛客网80道sql》

第1章&#xff1a;SQL编写基础逻辑和常见问题 基础逻辑 SELECT语句: 选择数据表中的列。FROM语句: 指定查询将要从哪个表中检索数据。WHERE语句: 过滤条件&#xff0c;用于提取满足特定条件的记录。GROUP BY语句: 对结果进行分组。HAVING语句: 对分组后的结果进行条件过滤。O…...

Node.js、Java、Python、PHP在构建BS系统时的特点比较

在现代软件开发领域&#xff0c;构建一个稳定、高效的B/S&#xff08;浏览器/服务器&#xff09;系统对于企业的信息化发展至关重要。Node.js、Java、Python和PHP是当下流行的几种后端开发技术&#xff0c;它们各自具有独特的特点和优势。本文将对这几种技术在构建B/S系统时的特…...

快速入门深度学习9.1(用时20min)——GRU

速通《动手学深度学习》9.1 写在最前面九、现代循环神经网络9.1 门控循环单元&#xff08;GRU&#xff09;9.1.1. 门控隐状态9.1.1.1. 重置门和更新门9.1.1.2. 候选隐状态9.1.1.3. 隐状态 9.1.3 API简洁实现小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 20…...

基于51单片机的步进电机调速系统设计

基于51单片机的步进电机调速系统 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.按键可以控制电机正、反转&#xff0c;加、减速&#xff0c;停止&#xff1b; 2.一位7段数码管实时显示档位&#xf…...

postcss概述

PostCSS是一个用于转换CSS的工具&#xff0c;它使用插件来处理CSS&#xff0c;并提供了一种方式来编写可扩展的CSS代码。其主要特点如下&#xff1a; 插件驱动&#xff1a;PostCSS的核心非常轻量级&#xff0c;大部分功能都是通过插件来实现的。这意味着用户可以根据项目的需求…...

【Proteus】51单片机对直流电机的控制

直流电机&#xff1a;输出或输入为直流电能的旋转电机。能实现直流电能和机械能互相转换的电机。把它作电动机运行时是直流电动机&#xff0c;电能转换为机械能&#xff1b;作发电机运行时是直流发电机&#xff0c;机 械能转换为电能。 直流电机的控制&#xff1a; 1、方向控制…...

JET毛选学习笔记:如何利用《实践论》学习实验

一、个人背景介绍 本人本科读的是预防医学专业&#xff08;因为没考上临床&#xff09;&#xff0c;硕博连读&#xff08;报名人少&#xff0c;我报了就得了&#xff09;的时候专业是流行病与卫生统计学&#xff0c;除了学习流行病学、统计学&#xff08;忘得差不多了&#xf…...

FinalShell 远程连接 Linux(Ubuntu)系统

Linux 系列教程&#xff1a; VMware 安装配置 Ubuntu&#xff08;最新版、超详细&#xff09;FinalShell 远程连接 Linux&#xff08;Ubuntu&#xff09;系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️➡️提出一个问题&#xff1a;为什么使用 FinalShell 连接&#xff0…...

Python零基础从小白打怪升级中~~~~~~~多线程

线程安全和锁 一、全局解释器锁 首先需要明确的一点是GIL并不是Python的特性&#xff0c;它是在实现Python解析器(CPython)时所引入的一个概念。 GIL全称global interpreter lock&#xff0c;全局解释器锁。 每个线程在执行的时候都需要先获取GIL&#xff0c;保证同一时刻只…...

【机器学习300问】67、均方误差与交叉熵误差,两种损失函数的区别?

一、均方误差&#xff08;Mean Squared Error, MSE&#xff09; 假设你是一个教练&#xff0c;在指导学生射箭。每次射箭后&#xff0c;你可以测量子弹的落点距离靶心的差距&#xff08;误差&#xff09;。MSE就像是计算所以射击误差的平方后的平均值。它强调了每一次偏离靶心的…...

SAP打印输出设置

SAP打印输入有很多方式&#xff0c;适合不同的应用场景。 一.打印输出总体概览图 二.前台打印 这个是比较常见的&#xff0c;前端打印的出现减轻了管理员的工作量&#xff0c;用户可以选择自己电脑上的打印机输出&#xff0c;不需要所有打印机都在SAP平台中进行配置&#xff0…...

qt对json文件下,qdatetime时间的正确读写方式

qt 对json文件下qdatetime时间的正确读写方式 被搞了很长时间&#xff0c;最后发现是需要控制格式。 正确方式 // read QByteArray localBytes mapJson["playTime"].toString().toLocal8Bit(); char* char_time localBytes.data(); std::string str_time char_…...

【系统分析师】计算机网络

文章目录 1、TCP/IP协议族1.1 DHCP协议1.2 DNS协议1.3网络故障诊断 2、网路规划与设计2.1逻辑网络设计2.2物理网络设计2.3 分层设计 3、网络接入3.1 接入方式3.2 IPv6地址 4、综合布线技术5、物联网5.1物联网概念与分层5.2 物联网关键技术 6、云计算7、网络存储技术&#xff08…...

DDoS攻击愈演愈烈,谈如何做好DDoS防御

DDoS攻击是目前最常见的网络攻击方式之一&#xff0c;各种规模的企业包括组织机构都在受其影响。对于未受保护的企业来讲&#xff0c;每次DDoS攻击的平均成本为20万美元。可见&#xff0c;我们显然需要开展更多的DDoS防御工作。除考虑如何规避已发生的攻击外&#xff0c;更重要…...

48.基于SpringBoot + Vue实现的前后端分离-雪具销售系统(项目 + 论文PPT)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的雪具销售系统设计与实现管理工作系统…...

P8715 [蓝桥杯 2020 省 AB2] 子串分值 (双边检测)

# [蓝桥杯 2020 省 AB2] 子串分值 ## 题目描述 对于一个字符串 $S$, 我们定义 $S$ 的分值 $f(S)$ 为 $S$ 中恰好出现一次的字符个数。例如 $f\left({ }^{\prime \prime} \mathrm{aba}{ }^{\prime \prime}\right)1$&#xff0c;$f\left({ }^{\prime \prime} \mathrm{abc}{ }^{…...

(十四)C++自制植物大战僵尸游戏windows平台视频播放实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs VLC库 在Cocos2d-x游戏开发框架中&#xff0c;没有实现windows平台视频播放的功能&#xff0c;需要自定义实现。在本项目中使用vlc库实现windows平台的视频播放功能。 vlc官网&#xff1a;网址 下载完成后&#x…...

深入理解GCC/G++在CentOS上的应用

文章目录 深入理解GCC/G在CentOS上的应用编译C和C源文件C语言编译C语言编译 编译过程的详解预处理编译汇编链接 链接动态库和静态库静态库和动态库安装静态库 结论 深入理解GCC/G在CentOS上的应用 在前文的基础上&#xff0c;我们已经了解了CentOS的基本特性和如何在其上安装及…...

C语言【复合类型(自定义类型)】

一、结构体 结构体(struct)可以理解为用户自定义的特殊的复合的“数据类型”&#xff1b; 1. 结构体变量的定义和初始化 定义结构体变量的方式&#xff1a; 先声明结构体类型再定义变量名 在声明类型的同时定义变量 // 结构体类型的定义 struct stu {char name[50];int age;…...

【python】初识爬虫

Python爬虫介绍 目录 一、概述二、Python爬虫的基本构成爬虫引擎解析器数据存储三、Python爬虫的主要技术请求与响应URL管理页面解析数据存储四、Python爬虫的应用场景数据采集搜索引擎竞品分析价格监控五、Python爬虫的开发流程六、常用的库...

提高小红书底层逻辑认知+短视频思路打爆笔记+纯带货笔记起号(8节课)

课程内容&#xff1a; 小红书如何0押金开通店铺 .mp4 店铺基础搭建.mp4 小红营的流量从哪里来? 如何用养号发现优质的对标笔记?养号的真正意义是什么?.mp4 什么叫垂类标签? 账号如何打上正确的标签 .mp4 前期笔记是否挂车?不同类型的笔记审核标准是什么?.mp4 如何用…...

力扣:219. 存在重复元素 II

力扣&#xff1a;219. 存在重复元素 II 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 …...

怎么用动图做网站背景/seo排名优化怎么样

当数据库需要进行介质恢复时&#xff0c;为了确保数据库能够顺利的执行恢复过程&#xff0c;恢复数据库到当前状态。我们要做的就是验证&#xff01;验证什么呢&#xff1f;当然是验证备份集和归档是否能够进行有效的恢复。防止我们restore后&#xff0c;执行recover时却发现归…...

wordpress the_permalink()/网络营销最新案例

一 查看慢sql的日志路径以及开启 1.1 查看路径 1.查询慢sql日志log路径&#xff1a; show variables like %slow_query_log% 1.2 开启慢sql 2.开启慢sql日志 set global slow_query_log1; show variables like %slow_query_log%; 二 查看常规sql的日志路径以及开启 2.1 查…...

wordpress 图片多/数字营销案例

前言&#xff1a;php环境这里就不多说了&#xff0c;都是老phper了&#xff0c;elasticsearch是基于java环境的&#xff0c;所以我们先要安装java环境下载地址&#xff1a;点击这里我这里下载的是这个安装包长这样image.png双击安装image.png傻瓜式安装image.png环境变量设置打…...

dede网站后台模板/百度云电脑网页版入口

上一篇跟文章点击量有关的还是如何刷访问量的事情&#xff0c;写博客快一年&#xff0c;自己看了下自己二十多篇文章的点击量给程序员喜欢看的文章类型做一个总结吧&#xff0c;排名不分先后&#xff08;当然也可以分先后&#xff09;。 1.某知名公司/大佬出的新东西的解决方案…...

100个无水印短视频素材/北京seo公司有哪些

源码安装bind&#xff0c;需要自己创建配置文件和系统用户。第一步&#xff1a;解压安装包Tar -xvf bind-9.11.2.tar.gz第二步&#xff1a;查看系统是否有这个用户&#xff0c;创建系统用户getent passwd nameduseradd -d /var/named -r -m -s /sbin/nologin named第三步&…...

用绿色做图标的网站/百度教育app

MariaDB在很多方面强于MySQL&#xff0c;在Linux下如何安装MariaDB数据库成为大家比较头疼的一个问题&#xff0c;下面用实例为大家讲解下MariaDB是采用Maria存储引擎的MySQL分支版本&#xff0c;在很多方面强于MySQL&#xff0c;那么在Linux下如何安装MariaDB数据库呢&#xf…...