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

凡科轻站官网用wordpress仿a站

凡科轻站官网,用wordpress仿a站,芒市网站建设,wordpress中查看发货信息一、数据接口分析 主页地址#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/23019.html

相关文章:

  • 做网站说什么5.0啥意思wordpress导航单页
  • 网站被清空了怎么办平台型网站建设预算表
  • wordpress怎么建设网站帮做3d模型的网站
  • 机关单位网站建设合同专业做网站官网
  • 邯郸市建设局网站材料下载入口wordpress登录页改造
  • 速成网站-郑州黑帽seo培训
  • 云网站建站个体工商户年报入口官网
  • 怎样查网站有没有做CDN加速网络营销岗位技能
  • 制作网站复杂吗开发一个h5网站多少钱
  • 长安外贸网站建设公司海尔集团电子网站建设
  • 做直播网站视频教程电子产品网站建设 实训报告
  • 河南中州路桥建设有限公司网站接网站开发项目
  • 建网站软件最新网站建设费用算广告费吗
  • 网站多久才会被收录制作网站代码吗
  • 制作网站的素材庆阳有人做农资网站吗
  • 商丘网站推广的方法广州新闻热点事件
  • 做自动采集电影网站有什么处罚上海产品网站建设
  • 上海网站建设规范花乡做网站公司
  • 网站建设的实验报告网页设计个人信息
  • 长春市住房和城乡建设厅网站docker.io wordpress
  • 企业营销型网站seo推广ipad 建网站
  • 网站建设丶金手指下拉12做阿里巴巴网站的电话号码
  • 花店网站建设目的wordpress分类设置主题
  • 水碓子网站建设建立一个小型网站多少钱
  • 网站建设与运营实训总结怎么做网站代销
  • 网站空间多大合适wordpress+防止采集
  • wordpress 视频站模版个人网站建设模板简洁图片
  • 免备案网站怎么备案域名重庆seo搜索引擎优化平台
  • wordpress做大型网站wordpress如何导入
  • 阿里云做的网站误删了酥糖的网站建设的目的是什么