JS解密 电影排行版(艺恩)数据解密

JS逆向解密 电影排行版(艺恩)数据解密

项目场景:

关于艺恩的JS数据解密


问题描述:

> 正常请求API接口返回的结果

@Override
        datas = 'areaId=50&typeId=0&year=0&initial=&pageIndex=2&pageSize=10&MethodName=BoxOffice_GetMovieData_List'
headers  = {
  'Origin': 'https://www.endata.com.cn',
  'Pragma': 'no-cache',
  '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/88.0.4324.190 Safari/537.36',
  'X-Requested-With': 'XMLHttpRequest',
  'Accept': 'text/plain, */*; q=0.01',
  'Accept-Encoding': 'gzip, deflate, br',
  'Accept-Language': 'zh-CN,zh;q=0.9',
  'Cache-Control': 'no-cache',
  'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  'Host': 'www.endata.com.cn'
}
import requests

print(requests.post('https://www.endata.com.cn/API/GetData.ashx',headers=headers,data=datas,verify=False).text)

**result**: F5E10AC8990BE190D37D5F26383B8004F70A92F030D504C36FE6FF0E5A86944E39DFD5D1578E30DC77C7C9E9040789D7303F8A545338BDF371D5D046CE2F40BBD90C099F6EE1146D1450E30D9885040292142932450DEB9CFBCFCDE64A7076F413A704DF7D58B0A3107DD7D050962C84FDAE279ECADA5D3CD2B920E844AD9B874DB6D42D024B73955E4119C2675DE2E72320B1CA0EDD7BE63F5D93D4B11310E85955D184A60B712EDCFE52DD093C83308A5D63C3FDA75DEBED611C980A10DDFDBC6CB032FCE9BDA8FD8CDE1BF5121C89B47B5C1EC4ED3C78FDE379A225DE846A230588015FA3F8CAFC124F07335D859D4C4093EFD66B1797A3F7B0AC4DBBE205ECF6FDCB64AC8DB9EDD03F1D84605268C9B8DF39B25777FE8C13EE941473D887FC35CFB49A3AC3BFB0D5FC7E9F543BC9BF850827CC9C5160D55C48A44C9BA579500743748387D091200BB01B5DEEDED98AD81BE36EFA2933F0B981487A0F7CFBBFE3A026F8C3C83934AD2FF576357A13488C86B72CC13C177A62F327C654DD601DF29E94A53CDD8A3FCAC68558FD5E8F88395070C833882227CE67D170C8F0650891DDC20EB24B5327A5B737AB3A83B61AFF2824517635BF4189749DABFBC441B8A724DEBE138E56D87E64A3D7DEE7E007CAEA9E390426C71F04EB67886301E06FD4222F6B5A08D7A1E46130EDDCD5AB3E067244E784DED1C04EF2EEFEA9DFC17
87CA1A270ED9AC4C8467EBC3D29D55CD1DDBAE06540B1EA422577C53CB020204661537181B0CADD41354CC5934F488807C8E56EE23BACC888440D8353A222B58D08B4261BF509D807ABDC77324E2058FD808CA2CD77732486861E34F3B9A4568CBAABBC20D5DB1FD81A2D4AAA8166B6D3EA3EB18121C38D54E519CFEB5F0C4D8A91A266CBB1C82A9AE4BF3817450B55D3801EA5D06C585173DF1670C96304AFB59CF3773E59B11FB6E9D84E7B13FBF3D39ACCB383AA68A326D6A0BB6EA6656DA79966FA0C4E74C4CEB95C07891D3A937742B5BA04EDDD7EC0740C18AFC079CE788C82CEBDA12C43C171A01633387F21E29A15EDE54FBD3D4D57D2AD234AA686388F2CE1F7F28D5A491B34BAC6550646EAD75133B584A419A8F6DF652E2F40BBD90C099F6AB1C0FDE2E1BB67EFA2B541A367D113F50DEB9CFBCFCDE64A7076F413A704DF7CE3BB7F72D45A7FF3D289406FA8D5551739BF75CA38C61728C3C83934AD2FF576357A13488C86B724EB77E24D
C3F19A3654DD601DF29E94A53CDD8A3FCAC68558FD5E8F88395070C833882227CE67D170C8F0650891DDC207748AD6D6B6B1F86D1CF6491BBA9B58A0AC0810BA352691CAE4E3287D79AFE444B773BA4D3CA0D2015A1AC41A5660ACB90426C71F04EB6789D12D8653762887A0C58956A5BAC6163DDCD5AB3E067244E51BAB454ED980314EA9DFC1787CA1A277CB633748591749B9B46CD763E9E80039FD0E9F53B59FE7ACB020204661537182168C9D96FE569BAC30B61BD753147717E35CCAA92C6D0328DEDFE56D1222E9A22861964B3CFE32EADA5D3CD2B920E844AD9B874DB6D42D07BF64D3CC408C00A75DE2E72320B1CA0EDD7BE63F5D93D4B11310E85955D184A60B712EDCFE52DD093C83308A5D63C3FF66106D0A67E7C6BC549140A88E3C7284DE7DDAA81116A460DC45BF7933B41CFC203A2E82455306CB1EF3D6DF24914B6FA3F8CAFC124F073228FE062CCE5C150DDF2C051FF29A84BDBBE205ECF6FDCB6D024D7AE6182D8A74605268C9B8DF39B5C19FE34594404C63C8A51BC168E1D3DEC662F7BDC74ACC8F543BC9BF850827CDBB2533F605B11344D84E179DF68CDEC5
0DEB9CFBCFCDE64A7076F413A704DF7A9442D89DCCED2255B69978DF4AFDC85EDB7132C63F4621052CC36041D1A17441FD1A9D48D4B8DEF2422D128517DFCC673D226B6E3C65F0A5E6559F7D2B0277B75661FD22FF54D84578FE540EE6FF758705F888748BF26F4B428E22B9B4A0B013CF3D69CA13592A6A8346794465B7A0372E81318482D79AD5997BAA0F8F21E6787A75B48AA4D240F1B050C0BABC732A6521E2098C9879AA614D965A138EF9D5EF97D5CDF84E43723214B02D21CCC52A3A58FA937DB995BE04D62F5B24737C2B2A6EB0CACE52A01CAFAEB6B64FE32A70759EEC215160CB6F63318CB5EFDDEA4A6051B5BF669488F6FA4C995721FF894464E2B72E1679B7501573568C4EFCCEE60311E71
E91206930B7304409C774A57C246CC45C7069B3D1395D991467BB7D1B5E87523427E2A78A0F0724D9E84CFD6051C222CD967BC29C3BAA31623A0CB3B2B032CA90D4FE54CBE5408ACBA67FD13394B7B0537E7EFD08350C0A8010029A538CAD58C16BF39EB46AAD355B3CDB0505EF5D125915ED9989C77280072617220BEF8FC291DB8736176A8C6199DA7751BFF62D493193889FB7817974D86E9A9A4DD5187EC4C63B42EF8108ACE9D8205729D5FD57F1D26CCC0C98EAFC2ED4C602C2FF56F2FEFB91BF01C733D5EC2292A00D1EEEDA772D66218EDA4C995721FF894466ED3A8889304A92642E97FD72DF35A00CE9F0E6F56852C0D0D5DB1FD81A2D4AAC7169C65996FC652121C38D54E519CFEB5F0C4D8A91A266CBB1C82A9AE4BF3817450B55D3801EA5D06C585173DF1670C96304AFB59CF3773098C9F6E9AE9E56C2A9BFFED5831B96EF1F8AAA9303D7CB8DEBD57495F7A86D07929BEBC2301B3E83BEBDFEFAED58CBF4EDDD7EC0740C18AB04B61D484DB0D2AF1343F0D1AEEF9F53387F21E29A15EDE1B7BD85C83CC01BE7087CDE5413DDBB551A4FC1E75C41FCBCDE520CE65807195A07D1C0FB608322AE2F40BBD90C099F61E597138ADF92609F83222940EA12F90BBF1451C1244DD59836F25C8332B3472
3A222B58D08B426198F24BBAC1C914D2FC53696DCDFADC17616904D95127EE84BFBBBCAB31865F44F73C86C2B8D9C955EDBBC274AE4BEFA1C0BE0E826249835F7B9F6BA4ABC4DAA11ABE80BBA31AC7F8A176116C5640D94045EA168A80226B48BDC17024B3183F40A67547031EB384F26A71773A5A3935F1D722504E9DEC480F1500E87E248BACEA9EE39D3C627ECF21AC8D381885318FDE66BE34F6BAC2C1F45BB3DD1D604B5E9868DAE40935106896BBB36E491263F3B044E6E6D176ABD2FF552BB768CC2E629126BA8C50C425C8F70988C52D38B234A72A214FFC83138A7B3B92DB5EB1DECD979DAEBA1FB46355A8F7F15ACA1B71CE44F14A7E66112B34D5813F9704CA34611350DEB9CFBCFCDE64A7076F413A704DF78C93F08DEF4452C4F5CCF93A7BC5F4227CF37D4ADFDC4B65FBC15AC46C15EE2163B08C022C4448400D5DB1FD81A2D4AAC7169C65996FC652121C38D54E519CFEB5F0C4D8A91A266CBB1C82A9AE4BF3817450B55D3801EA5D06C585
173DF1670C96304AFB59CF3773098C9F6E9AE9E56CBB3E36A397041AE52C4D5BE12A4E21E6D3220EE227C2CE81B45778B92DAF9879B415CBA232A7E1C04EDDD7EC0740C18ABF35157A69753DE7C9B7B9FA0BE6CA3709109E4660C1127C6FC73C00640643DF2C704DECCF778B660B5FE29904E83D455D706E27EE7728461A1B2DE63AFB03CCCD8A205F611E8933A4D5DDE4794E38A8E5374E4AB0B33711283AE7A1B3E98D9624E4A66C9B8FC929046FE0882C5BB0163E4AC308C7A22907

原因分析:

显而意见,返回数据是经过加密的,想要获取数据必须了解网站的加密结构,才能得到最终想要的数据。


解决方案:

看到相关JS文件,跟进去
在这里插入图片描述
解密的函数
在这里插入图片描述
跟到逻辑,找到关键位置。(可以看到这是个常见的DES加密方法)
在这里插入图片描述

修改关键JS代码,其实直接调用函数。
 function shell(_0xa0c834) {
        var _0x51eedc = {
            'pKENi': function _0x2f627(_0x5b6f5a, _0x440924) {
                return _0x5b6f5a === _0x440924;
            },
            'wnfPa': 'ZGz',
            'VMmle': '7|1|8|9|5|2|3|6|0|4',
            'GKWFf': function _0x1a4e13(_0x40cfde, _0x16f3c2) {
                return _0x40cfde == _0x16f3c2;
            },
            'MUPgQ': function _0x342f0d(_0x19038b, _0x4004d6) {
                return _0x19038b >= _0x4004d6;
            },
            'hLXma': function _0x55adaf(_0x45a871, _0x161bdf) {
                return _0x45a871 + _0x161bdf;
            },
            'JdOlO': function _0x13e00a(_0x5899a9, _0x4bb34d) {
                return _0x5899a9 + _0x4bb34d;
            },
            'qrTpg': function _0x1198fb(_0x55b317, _0x22e1db, _0x1b091a) {
                return _0x55b317(_0x22e1db, _0x1b091a);
            },
            'pdmMk': function _0xe2b022(_0x4af286, _0x4c2fd4) {
                return _0x4af286 - _0x4c2fd4;
            },
            'xVKWW': function _0x1094a3(_0x5f3627, _0x2a0ac5, _0x3ad2e5) {
                return _0x5f3627(_0x2a0ac5, _0x3ad2e5);
            }
        };
        if (_0x51eedc[_0x2246('0x258', '@1Ws')](_0x2246('0x259', 'E&PI'), _0x51eedc['wnfPa'])) {
            this['_append'](a);
            return this[_0x2246('0x25a', 'GL3Q')]();
        } else {
            var _0x492a62 = _0x51eedc[_0x2246('0x25b', '&59Q')][_0x2246('0x25c', ')q#9')]('|')
              , _0x356b01 = 0x0;
            while (!![]) {
                switch (_0x492a62[_0x356b01++]) {
                case '0':
                    _0x554c90 = _grsa_JS[_0x2246('0x25d', 'E&PI')]['decrypt']({
                        'ciphertext': _grsa_JS['enc'][_0x2246('0x25e', 'sy^o')]['parse'](_0xa0c834)
                    }, _0x2cf8ae, {
                        'iv': _0x554c90,
                        'mode': _grsa_JS[_0x2246('0x16c', 'O^50')][_0x2246('0x25f', 'Who^')],
                        'padding': _grsa_JS[_0x2246('0x260', '7IfV')][_0x2246('0x261', 'E&PI')]
                    })[_0x2246('0x1c', 'yY#5')](_grsa_JS['enc'][_0x2246('0x262', ']2BX')]);
                    continue;
                case '1':
                    if (_0x51eedc[_0x2246('0x263', 'Jsmq')](null, _0xa0c834) || _0x51eedc[_0x2246('0x264', '!2eC')](0x10, _0xa0c834['length']))
                        return _0xa0c834;
                    continue;
                case '2':
                    _0xa0c834 = _0x9843d3(_0xa0c834, _0x2cf8ae, 0x8);
                    continue;
                case '3':
                    _0x2cf8ae = _grsa_JS[_0x2246('0x265', 'RQ2o')][_0x2246('0x266', '3j7z')][_0x2246('0x267', 'RQ2o')](_0x554c90);
                    continue;
                case '4':
                    return _0x554c90[_0x2246('0x268', 'cs*4')](0x0, _0x51eedc[_0x2246('0x269', 'MVsm')](_0x554c90[_0x2246('0x26a', '0J6f')]('}'), 0x1));
                case '5':
                    _0x554c90 = _0xa0c834[_0x2246('0x26b', 'UwHa')](_0x2cf8ae, 0x8);
                    continue;
                case '6':
                    _0x554c90 = _grsa_JS[_0x2246('0x26c', '4VZ$')]['Utf8']['parse'](_0x554c90);
                    continue;
                case '7':
                    if (!navigator || !navigator[_0x2246('0x26d', '0I#o')])
                        return '';
                    continue;
                case '8':
                    var _0x554c90 = _0x51eedc[_0x2246('0x26e', 'Yb4P')](_0x51eedc[_0x2246('0x26f', 'BQ5p')](parseInt, _0xa0c834[_0x51eedc[_0x2246('0x270', 'Z2VK')](_0xa0c834['length'], 0x1)], 0x10), 0x9)
                      , _0x2cf8ae = _0x51eedc[_0x2246('0x271', 'yY#5')](parseInt, _0xa0c834[_0x554c90], 0x10);
                    continue;
                case '9':
                    _0xa0c834 = _0x9843d3(_0xa0c834, _0x554c90, 0x1);
                    continue;
                }
                break;
            }
        }
    
    ;
};

调用sheel('需要解密的数据')

解密后的数据
在这里插入图片描述
如果你对此DES解密熟悉,直解调用现成的库,可以很快得到你想要的数据

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值