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

软件开发报价的计算方法黑帽seo排名

软件开发报价的计算方法,黑帽seo排名,信阳专业做网站公司,做队徽的网站一、数据接口分析 主页地址#xff1a;某税网 1、抓包 通过抓包可以发现登录接口是factorAccountLogin 2、判断是否有加密参数 请求参数是否加密#xff1f; 通过查看载荷模块可以发现有一个datagram 和 一个signature加密参数 请求头是否加密#xff1f; 通过查看“标…一、数据接口分析 主页地址某税网 1、抓包 通过抓包可以发现登录接口是factorAccountLogin 2、判断是否有加密参数 请求参数是否加密 通过查看载荷模块可以发现有一个datagram 和 一个signature加密参数 请求头是否加密 通过查看“标头”模块可以发现请求头中有Deviceidentyno、X-App-Clientid、X-Temp-Info三个加密参数 响应是否加密 登录失败是无加密登录成功时datagram是加密参数cookie是否加密 无 二、加密位置定位 1、加密参数以及部分请求头 1看启动器 查看启动器发现里面包含异步所以无法正确找到加密位置 2搜索关键字 通过搜索关键字datagram可以发现在请求拦截器中会对datagram进行赋值并且此处还有signature参数以及部分请求头所以此处大概率是加密位置。 在此处下断点发现可以断住并且生成位置就在上方所以此处就是加密位置 2、请求头Deviceidentyno 搜索关键字 通过搜索关键字Deviceidentyno可以找到设置请求头的位置。 3、响应解密 因为定位到的加密位置是在请求拦截器中所以解密位置大概率会在响应拦截器中我们可以在请求拦截器的js文件中搜索interceptors.response就可以找到响应拦截器的位置。并且可以发现在响应拦截器中确实有解密操作。 三、扣js代码 1、本地存储 我们在扣js代码时可以发现网站会从本地缓存中取出一些数据但是其中只有new_key16、clientId和natureuuid是有值的其他都是空。同时我们可以看到网站将new_key16取出的值赋值给了a然后在下方代码中又判断a是否为空如果为空就使用Object(A[b])()方法生成所以我们就可以直接将这个生成方法扣出使用这个方法生成。clientId仔细观察可以发现这个值是固定不变的可以写死。所以我们只需要关心natureuuid即可。 进入控制台的“应用”标签页中的“本地存储空间”将本地存储全部清除 然后对localStorage.setItem进行hook hook代码 var my_setItem localStorage.setItem; localStorage.setItem function (key, value) {if (key natureuuid){debugger}return my_setItem.call(localStorage, key, value); };运行hook代码再次点击登录发现可以断住 接着调试执行可以发现设置natureuuid的位置同时可以看出这段代码是在回调中执行的。 再次观察发包可以发现网站是请求了一个getPublicKey接口返回了uuid和publicKey虽然目前来看我们没有用到publicKey但是肯定是有用到的地方所以我们也先保存一下。 2、请求流程 当我们将本地存储清空之后再次登录可以发现网站是发送了三个请求先请求了getPublicKey和sendSm4这两个接口之后才请求了登录接口。 所以我们在请求登录之前也需要先请求这两个接口。 观察这两个接口的“载荷”可以发现这两个接口携带的参数与登录接口是一样的只不过其中的数据不同同时网站在请求前两个接口时也会经过我们上面定位出来的加密位置只不过datagram的生成不太一样前两个接口只是转成了json字符串只有登录接口才加密。 在观察前两个接口的发包过程时可以发现第一个接口getPublicKey的datagram就只是一个空字典然后转成json字符串。但是网站在给sendSm4接口发包时是有数据的而且还有一个我们不知道的参数secret。 我们通过搜索关键字的方式搜索secret:就可以找到生成位置了同时这个参数生成的时候还用到了之前通过请求getPublicKey接口获取到的publicKey。 3、坑 在对这三个请求发包时使用的new_key16以及deviceIdentyNo的值都要使用同一个。 4、加密算法 通过扣js代码可以发现网站使用了sm2、sm4以及HmacSHA256三种加密算法解密时使用的是sm4解密而且这些算法都是标准算法所以我们可以直接使用标准模块进行加解密。 四、源代码 JavaScript源码 const {sm2, sm4} require(sm-crypto); const CryptoJS require(crypto-js);function func_i(e, t) {var n, a, r 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.split(), i [];if (t t || r.length,e)for (n 0; n e; n)i[n] r[0 | Math.random() * t];elsefor (i[8] i[13] i[18] i[23] -,i[14] 4,n 0; n 36; n)i[n] || (a 0 | 16 * Math.random(),i[n] r[19 n ? 3 a | 8 : a]);return i.join() }function object_A_d(e, t) {r sm4.encrypt(e, t);return r }function object_A_i(e) {for (var t , n 0; n e.length; n) t ? t e.charCodeAt(n).toString(16) : t e.charCodeAt(n).toString(16);return t }function object_A_a(e, t) {var n CryptoJS.HmacSHA256(e, t).toString();return n }function object_A_e(e, t) {r sm4.decrypt(e, t);return r }function padZero(num) {return num 10 ? 0 num : num; }var clientId s44fftt3bc634tcab4teasbaasba7ft4function get_headers(natureuuid, ded) {if (!ded) {ded func_i(32)}var t {headers: {},}t.headers[deviceIdentyNo] ded;t.headers[X-APP-CLIENTID] clientIdif (natureuuid) {t.headers[X-TEMP-INFO] natureuuid}return [t.headers, ded] } var v GwdK^R4q function get_params(t_data, is_get_key, g) {if (!g) {g func_i(16, 61)}var currentDate new Date();var formattedDate currentDate.getFullYear() padZero(currentDate.getMonth() 1) padZero(currentDate.getDate()) padZero(currentDate.getHours()) padZero(currentDate.getMinutes()) padZero(currentDate.getSeconds());c {}p g.substring(0, 8) vu c[zipCode] 0if (is_get_key) {c[encryptCode] 0;c.datagram JSON.stringify(t_data);} else {f JSON.stringify(t_data);u object_A_d(f, object_A_i(p));c.datagram u;c[encryptCode] 2;}c[timestamp] formattedDatec[access_token] c[signtype] HMacSHA256c[signature] object_A_a(c[zipCode] c[encryptCode] u c[timestamp] c[signtype], g)return [c, g] }function func_l(e, t, a) {if (t) {var i sm2.doEncrypt(e, t, a);return i}return }function get_secret(pubkey, g) {new_key16 gsecret func_l(new_key16, pubkey, 1)return secret }function get_data(g, datagram) {var a g.substring(0, 8) v;return object_A_e(datagram, object_A_i(a)) }Python源码 Author陈帅超 Email912917367qq.com Date: 2023/8/29 16:25import jsonimport execjs import requestsclass Spider:def __init__(self):self.session requests.session()self.session.headers {Accept: application/json, text/plain, */*,Accept-Language: zh-CN,zh;q0.9,Authorization: ,Cache-Control: no-cache,Connection: keep-alive,Content-Type: application/json,Origin: https://tpass.jiangsu.chinatax.gov.cn:8443,Pragma: no-cache,Referer: https://tpass.jiangsu.chinatax.gov.cn:8443/,Sec-Fetch-Dest: empty,Sec-Fetch-Mode: cors,Sec-Fetch-Site: same-origin,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36,X-LANG-ID: null,X-NATURE-IP: ,X-SM4-INFO: 0,X-TICKET-ID: null,hUid: ,sec-ch-ua: ^\\^Chromium^^;v^\\^116^^, ^\\^Not)A;Brand^^;v^\\^24^^, ^\\^Google,sec-ch-ua-mobile: ?0,sec-ch-ua-platform: ^\\^Windows^^}with open(reverse.js, r, encodingutf-8) as f:self.js_obj execjs.compile(f.read())self.uuid self.publicKey self.g self.ded def get_public_key(self):url https://tpass.jiangsu.chinatax.gov.cn:8443/sys-api/v1.0/auth/oauth2/getPublicKeyheaders2 self.js_obj.call(get_headers, self.uuid)self.ded headers2[0]self.session.headers headers2[0] | self.session.headersdata self.js_obj.call(get_params, {}, True)self.g data[1]response self.session.post(url, jsondata[0])datagram json.loads(response.json()[datagram])self.uuid datagram[uuid]self.publicKey datagram[publicKey]print(uuid, self.uuid)print(publicKey, self.publicKey)def send_sm4(self):url https://tpass.jiangsu.chinatax.gov.cn:8443/sys-api/v1.0/auth/white/sendSm4headers2 self.js_obj.call(get_headers, self.uuid, self.ded)self.session.headers headers2[0] | self.session.headerssecret self.js_obj.call(get_secret, self.publicKey, self.g)data self.js_obj.call(get_params, {uuid: self.uuid, secret: secret}, True, self.g)response self.session.post(url, jsondata[0])print(response.text)print(response)def login(self):t_data {client_id: s44fftt3bc634tcab4teasbaasba7ft4,account: 登录用户名,password: 登录密码,redirect_uri: https://etax.jiangsu.chinatax.gov.cn/sso/kxLogin/authorize,creditCode: 税号}url https://tpass.jiangsu.chinatax.gov.cn:8443/sys-api/v1.0/auth/enterprise/quick/factorAccountLoginheaders2 self.js_obj.call(get_headers, self.uuid, self.ded)self.session.headers headers2[0] | self.session.headersdata self.js_obj.call(get_params, t_data, False, self.g)response self.session.post(url, jsondata[0])response_data self.js_obj.call(get_data, self.g, response.json()[datagram])print(response_data)if __name__ __main__:s Spider()s.get_public_key()s.send_sm4()s.login()
http://www.dnsts.com.cn/news/206929.html

相关文章:

  • 网站 详细设计建设自己的网站怎么做
  • 哪些网站是jsp做的虚拟货币交易网站建设
  • 班级网站模板素材网站开发研发合同
  • 好上手的做海报网站中国代理网官方网站
  • 同一个服务器的网站做友情链接网站 新媒体建设情况
  • 南宁市网站建设公司深圳东门步行街在哪个区
  • 做网站需要字体切换山东 网站建设
  • 广东同江医院网站建设罗岗网站建设公司
  • 建站平台和网站建设的区别合网站 - 百度
  • 成都市建设二维码检测网站宣传片制作拍摄公司
  • 比较好的ui设计网站南宁机关两学一做网站
  • 有服务器如何做网站可以做淘宝客的网站
  • 网站小图标 免费毕业设计做系统好还是网站好
  • 北京中天人建设工程有限公司网站php素材网站源码免费下载
  • 手机做炫光头像图的网站呼市网页制作培训
  • 网站建设什么时候好那种软件可以做视频网站
  • 网站优化推广招聘深圳建设网站哪家强
  • 河南省建设厅网站 吴浩wordpress中文修改
  • 用ps做网站尺寸正规不收费的网站
  • 有什么网站可以做浏览单青岛专业做网站的公司
  • 单位网站的建设网店美工教案
  • 大航母网站建设在哪里运营推广培训课程
  • 如何建立一个网站根目录wordpress主题正版
  • 滨州网站建设公司奥利奥广告策划书
  • 有哪些好的网站建设公司一起做网店怎么拿货
  • 做网站_接活wordpress优酷视频插件
  • 做篮球网站用的背景图企业培训机构排名
  • 找简历的网站网络彩票网站建设多少钱
  • asp装修公司网站源码网站建设360
  • 旅游景点企业网站排名企业邮箱网易