2023年7月21日

This commit is contained in:
枫谷剑仙 2023-07-21 19:05:15 +08:00
parent d1ac485617
commit 1cbe932d88
22 changed files with 148775 additions and 6501 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 KiB

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 KiB

After

Width:  |  Height:  |  Size: 576 KiB

View File

@ -13,14 +13,11 @@ The current acquisition API is
* 但是有加密的参数,我不知道如何生成,所以我只能从游戏的下载过程截获。
But there are encrypted parameters that I don't know how to generate. So I intercepted from the game's download process.
* 使用 [Fidder](https://www.telerik.com/download/fiddler),执行 *HTTPS 中间人攻击*从游戏内抓包获得怪物信息。
Use [Fidder](https://www.telerik.com/download/fiddler), do *HTTPS man-in-the-middle attack* to capture monster information from in-game capture.
* 使用 [Fiddler](https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe),执行 *HTTPS 中间人攻击*从游戏内抓包获得怪物信息。
Use [Fiddler](https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe), do *HTTPS man-in-the-middle attack* to capture monster information from in-game capture.
* 安卓5可以直接在安卓系统里安装 *CER* 证书但安卓7开始系统不再信任用户证书。
Android 5 can install *CER* certificates directly in Android. Starting with Android 7, the system no longer trusts user certificates.
* 由于需要安卓 7 才能玩智龙迷城,所以要先创建安卓 7 的模拟器,再安装智龙迷城。
Since Android 7 is required to play PAD, you must create an emulator for Android 7 before installing PAD.
* 安卓5可以直接在安卓系统里安装 *CER* 证书但安卓7开始系统不再信任用户证书。由于需要安卓 7 才能玩智龙迷城,所以要先创建安卓 7 的模拟器,再安装智龙迷城。
Android 5 can install *CER* certificates directly in Android. Starting with Android 7, the system no longer trusts user certificates. Since Android 7 is required to play PAD, you must create an emulator for Android 7 before installing PAD.
* 将 Fidder 根证书导出到桌面
Export the Fidder Root Certificate to desktop
@ -36,8 +33,8 @@ Execute the code to get the hash of the certificate
Execute the code to convert the certificate from *CER* to *PEM* format
`openssl x509 -inform DER -in FiddlerRoot.cer -outform PEM -out [hash].0`
* 将证书文件放入安卓系统证书文件夹
Place the certificate file in the Android system certificate folder
* 将证书文件放入安卓系统证书文件夹`/system/etc/security/cacerts/`
Place the certificate file in the Android system certificate folder`/system/etc/security/cacerts/`
参考/Reference: https://www.jianshu.com/p/035f7d7a0f7e
<details>
@ -93,49 +90,30 @@ Now that you're running the game inside the simulator, Fidder will be able to in
```js
//自动储存智龙迷城数据
var PADDataPath = "D:\\PADDashFormation\\monsters-info\\official-API\\";
if (oSession.HostnameIs("api-adr.padsv.gungho.jp") //日服域名
|| oSession.HostnameIs("api-ht-adr.padsv.gungho.jp") //港台服域名
|| oSession.HostnameIs("api-na-adrv2.padsv.gungho.jp") //美服域名
|| oSession.HostnameIs("api-kr-adrv2.padsv.gungho.jp") //韩服域名
) {
var serverName;
switch (oSession.hostname)
{
case "api-adr.padsv.gungho.jp": //日服域名
case "api-ht-adr.padsv.gungho.jp": //港台服域名
serverName = "ja"
break;
case "api-na-adrv2.padsv.gungho.jp": //美服域名
serverName = "en"
break;
case "api-kr-adrv2.padsv.gungho.jp": //韩服域名
serverName = "ko"
break;
switch (oSession.hostname) {
case "api-adr.padsv.gungho.jp": //日服域名
case "api-ht-adr.padsv.gungho.jp":{ //港台服域名
savePADData("ja");
break;
}
case "api-na-adrv2.padsv.gungho.jp":{ //美服域名
savePADData("en");
break;
}
case "api-kr-adrv2.padsv.gungho.jp":{ //韩服域名
savePADData("ko");
break;
}
}
function savePADData(serverName: String) {
//智龙迷城数据文件位置
var PADDataPath: String = "D:\\www\\PADDashFormation\\monsters-info\\official-API\\";
if (oSession.uriContains("download_card_data")) { //自动保存怪物数据
oSession.SaveResponseBody(PADDataPath + serverName + "-card.json")
oSession.SaveResponseBody(Path.Combine(PADDataPath, serverName + "-card.json"));
}
if (oSession.uriContains("download_skill_data")) { //自动保存技能数据
oSession.SaveResponseBody(PADDataPath + serverName + "-skill.json")
oSession.SaveResponseBody(Path.Combine(PADDataPath, serverName + "-skill.json"));
}
/*
if (oSession.uriContains("download_dungeon_data")) { //自动保存地下城数据
oSession.SaveResponseBody(PADDataPath + serverName + "-dungeon.json")
}
if (oSession.uriContains("download_limited_bonus_data")) { //自动保存limited_bonus数据
oSession.SaveResponseBody(PADDataPath + serverName + "-limited_bonus.json")
}
if (oSession.uriContains("download_enemy_skill_data")) { //自动保存敌人技能数据
oSession.SaveResponseBody(PADDataPath + serverName + "-enemy_skill.json")
}
if (oSession.uriContains("shop_item")) { //自动保存商店数据
oSession.SaveResponseBody(PADDataPath + serverName + "-shop_item.json")
}
if (oSession.uriContains("mdatadl")) { //自动保存交换所数据
oSession.SaveResponseBody(PADDataPath + serverName + "-mdatadl.json")
}
*/
}
```

View File

@ -2,25 +2,25 @@
{
"code": "ja",
"ckey": {
"card": "57b927958ade8acfd322d693a80f7800",
"skill": "c1cfec443bef0fe50945711552343037"
"card": "a414cd042bd7a0675b363f9449fa4391",
"skill": "1e5d70a93e8900256f9ef965c53c6151"
},
"updateTime": 1689250973297
"updateTime": 1689937361316
},
{
"code": "en",
"ckey": {
"card": "f0a5243acdf719d63e5f7f1bc1ca2d18",
"skill": "049e9629db7f1a588ef8580e84c5bd7d"
"card": "5ad259527272f4994e97c9f41d9e2319",
"skill": "e41bdbf8815110b3d65c5cf84c495477"
},
"updateTime": 1689250973297
"updateTime": 1689937361316
},
{
"code": "ko",
"ckey": {
"card": "38758bfefc8629090d12b1cfcb5edda6",
"skill": "6c9febdc2145976799fad16cf4de3431"
"card": "2c51a52260b862ca9c282e326894b474",
"skill": "cafd7868c12f0f89eae875e76d045382"
},
"updateTime": 1689250973297
"updateTime": 1689937361316
}
]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -179,13 +179,13 @@ fs.readdir(sourceFolder,function(err,files){
return a.id - b.id;
});
fs.writeFile(outJSON_cht, JSON.stringify(monArr_cht) ,function(err){
fs.writeFile(outJSON_cht, JSON.stringify(monArr_cht, null, '\t') ,function(err){
if(err){
console.error(err);
}
console.log("---繁体中文导出成功,共 %d 个名称---", monArr_cht.length);
});
fs.writeFile(outJSON_chs, JSON.stringify(monArr_chs) ,function(err){
fs.writeFile(outJSON_chs, JSON.stringify(monArr_chs, null, '\t') ,function(err){
if(err){
console.error(err);
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

12838
script.js

File diff suppressed because it is too large Load Diff

View File

@ -413,6 +413,10 @@ const cachesMap = new Map([
"images/cards_ja/CARDS_103.PNG",
"4bb317bd69e592c10d68db12ff36b255"
],
[
"images/cards_ja/CARDS_104.PNG",
"c25d97e3e33bcbd4cb03ee93c6a8562a"
],
[
"sound/voice/ja/padv001.wav",
"5d5cfc2aea6aa9e69299e2fd8f5657d2"
@ -6339,7 +6343,7 @@ const cachesMap = new Map([
],
[
"images/cards_en/CARDS_102.PNG",
"103c50c6cf32189a774b5bc2bf633a01"
"981c531bf2f741831496c72721382a29"
],
[
"sound/voice/en/padv001.wav",
@ -10147,7 +10151,7 @@ const cachesMap = new Map([
],
[
"images/cards_ko/CARDS_102.PNG",
"103c50c6cf32189a774b5bc2bf633a01"
"981c531bf2f741831496c72721382a29"
],
[
"sound/voice/ko/padv001.wav",
@ -14607,7 +14611,7 @@ const cachesMap = new Map([
],
[
"script.js",
"35b22c7617b09b63e40da346edde8931"
"ede2f1c6cd08f700baf51f0344ef586e"
],
[
"solo.html",
@ -14619,7 +14623,7 @@ const cachesMap = new Map([
],
[
"style.css",
"70a470410b5c4b4600d8cb407437e077"
"d7acd75c657cc03abd6a59293d7b629e"
],
[
"temp.js",
@ -14859,31 +14863,31 @@ const cachesMap = new Map([
],
[
"monsters-info/ckey.json",
"70b61d020e1377efab5fe3d1f2d04434"
"8eaf47c77bd377972ad6ab05a19b7c85"
],
[
"monsters-info/mon_en.json",
"f0a5243acdf719d63e5f7f1bc1ca2d18"
"5ad259527272f4994e97c9f41d9e2319"
],
[
"monsters-info/mon_ja.json",
"57b927958ade8acfd322d693a80f7800"
"a414cd042bd7a0675b363f9449fa4391"
],
[
"monsters-info/mon_ko.json",
"38758bfefc8629090d12b1cfcb5edda6"
"2c51a52260b862ca9c282e326894b474"
],
[
"monsters-info/skill_en.json",
"049e9629db7f1a588ef8580e84c5bd7d"
"e41bdbf8815110b3d65c5cf84c495477"
],
[
"monsters-info/skill_ja.json",
"c1cfec443bef0fe50945711552343037"
"1e5d70a93e8900256f9ef965c53c6151"
],
[
"monsters-info/skill_ko.json",
"6c9febdc2145976799fad16cf4de3431"
"cafd7868c12f0f89eae875e76d045382"
],
[
"doc/export-player-data.html",