diff --git a/jar/JNUSTool.jar b/jar/JNUSTool.jar index f182849..3d6385a 100644 Binary files a/jar/JNUSTool.jar and b/jar/JNUSTool.jar differ diff --git a/jar/updatetitles.csv b/jar/updatetitles.csv index 9604979..e432eda 100644 --- a/jar/updatetitles.csv +++ b/jar/updatetitles.csv @@ -69,7 +69,7 @@ 0005000E-10113700;4;WUP;0052;WUP-U-AECD;AECD52;Call of Duty: Black Ops II;16,32,48,64,80,96,112,144 0005000E-10113800;4;WUP;00Y4;WUP-U-WBAP;WBAPY4;Zen Pinball 2;17,32,48,65,80,96 0005000E-10113C00;2;WUP;00GT;WUP-U-AFBE;AFBEGT;Funky Barn;16 -0005000E-10115E00;1;WUP;00GD;WUP-U-ADQJ;ADQJGD;Dragon Quest X;16,80,128,144,160,192,208,224,240,256,272,288,304,336,368,384,400,416,432,448,464,480,496,512,528,544,560,624,640,656,672,688,704,736,752,784,800,816,832,848,960,976,992,1008,1024,1040,1056,1072,1088,1104,1120,1136,1152,1168,1184,1200,1216,1232,1248,1264,1280,1296,1312,1328,1344,1360,1376,1392,1408,1424,1440,1456,1472,1488,1504,1520,1536,1552,1568,1584,1600,1616,1632,1648,1664,1680,1696,1712,1728,1744,1760,1776,1792,1808,1824,1840,1856,1872,1888,1904,1920,1936,1952,1968,1984,2000,2016,2032,2048,2064,2080,2096,2112,2128,2144,2160,2176,2192,2208,2224,2240,2256,2272,2288,2304,2320,2336,2352,2384,2400,2416,2432,2448,2464,2480,2496,2512,2528,2544,2560,2576,2592 +0005000E-10115E00;1;WUP;00GD;WUP-U-ADQJ;ADQJGD;Dragon Quest X;16,80,128,144,160,192,208,224,240,256,272,288,304,336,368,384,400,416,432,448,464,480,496,512,528,544,560,624,640,656,672,688,704,736,752,784,800,816,832,848,960,976,992,1008,1024,1040,1056,1072,1088,1104,1120,1136,1152,1168,1184,1200,1216,1232,1248,1264,1280,1296,1312,1328,1344,1360,1376,1392,1408,1424,1440,1456,1472,1488,1504,1520,1536,1552,1568,1584,1600,1616,1632,1648,1664,1680,1696,1712,1728,1744,1760,1776,1792,1808,1824,1840,1856,1872,1888,1904,1920,1936,1952,1968,1984,2000,2016,2032,2048,2064,2080,2096,2112,2128,2144,2160,2176,2192,2208,2224,2240,2256,2272,2288,2304,2320,2336,2352,2384,2400,2416,2432,2448,2464,2480,2496,2512,2528,2544,2560,2576,2592,2608,2624,2640,2656,2672,2688,2704,2720,2736,2752,2768,2784,2800,2816 0005000E-10115F00;2;WUP;00Y4;WUP-U-WBAE;WBAEY4;Zen Pinball 2;16,32,48,65,80,96 0005000E-10116100;1;WUP;0001;WUP-P-AX5J;AX5J01;XenobladeX;16,32,48 0005000E-10116300;1;WUP;0001;WUP-U-ACMJ;ACMJ01;The Wonderful 101;16 @@ -104,7 +104,7 @@ 0005000E-1012C500;4;WUP;00AF;WUP-U-ACRP;ACRPAF;THE CROODS;16 0005000E-1012CF00;2;WUP;0008;WUP-U-ABHE;ABHE08;RESIDENT EVIL REVELATIONS;16 0005000E-1012DC00;2;WUP;0001;WUP-U-ACME;ACME01;The Wonderful 101;16 -0005000E-1012F000;2;WUP;00JX;WUP-P-WFSE;WFSEJX;FAST Racing NEO;33 +0005000E-1012F000;2;WUP;00JX;WUP-P-WFSE;WFSEJX;FAST Racing NEO;33,48 0005000E-1012F100;1;WUP;0001;WUP-U-AWSJ;AWSJ01;Wii Sports Club;16,32,48,64,80,96,112 0005000E-10131D00;1;WUP;0001;WUP-P-ASEJ;ASEJ01;幻影異聞録♯FE;17,32 0005000E-10131F00;1;WUP;0001;WUP-U-AYCJ;AYCJ01;yoshi's woolly world;32 @@ -168,7 +168,7 @@ 0005000E-1014CF00;2;WUP;00HL;WUP-U-WCDE;WCDEHL;Coaster Crazy Deluxe;16,32 0005000E-1014D100;4;WUP;00CS;WUP-U-WKTP;WKTPCS;Scram Kitty and his Buddy on Rails;17,32 0005000E-1014D900;1;WUP;008P;WUP-P-APTJ;APTJ8P;PUYOPUYOTETRIS;16,32 -0005000E-1014DA00;1;WUP;0008;WUP-U-AMFJ;AMFJ08;Monster Hunter Frontier G;80,96,112,128,144,160,176,192,208,224,240,256,288,304,320,336,352,368,400,432,448,464,480,496,512,528,544,560,576,592,608,624,640,656,672,688,704,720,736,752,768,784,800,816,832,848,864,880,896,912,928,944,960,976,992,1008,1024,1040,1056,1072,1088,1104,1120,1136,1152,1168,1184,1200,1216,1232,1248,1264,1280,1296,1312,1328,1344,1360,1376,1392,1408,1424,1440,1456,1472,1488,1504,1520,1536,1552,1568,1584 +0005000E-1014DA00;1;WUP;0008;WUP-U-AMFJ;AMFJ08;Monster Hunter Frontier G;80,96,112,128,144,160,176,192,208,224,240,256,288,304,320,336,352,368,400,432,448,464,480,496,512,528,544,560,576,592,608,624,640,656,672,688,704,720,736,752,768,784,800,816,832,848,864,880,896,912,928,944,960,976,992,1008,1024,1040,1056,1072,1088,1104,1120,1136,1152,1168,1184,1200,1216,1232,1248,1264,1280,1296,1312,1328,1344,1360,1376,1392,1408,1424,1440,1456,1472,1488,1504,1520,1536,1552,1568,1584,1600,1616 0005000E-1014DE00;2;WUP;00WR;WUP-U-ALAE;ALAEWR;The LEGO® Movie Videogame;16 0005000E-1014E000;4;WUP;00WR;WUP-U-ALAP;ALAPWR;The LEGO® Movie Videogame;18 0005000E-1014E100;4;WUP;00AF;WUP-U-ADVP;ADVPAF;Adventure Time: Explore the Dungeon Because I Don't Know!;16 @@ -188,7 +188,7 @@ 0005000E-1015EB00;1;WUP;00R7;WUP-U-WHYJ;WHYJR7;Mighty Switch Force!™ Hyper Drive Edition;18 0005000E-10161F00;1;WUP;0001;WUP-U-ABAJ;ABAJ01;Mario Party 10;16 0005000E-10162300;4;WUP;00YR;WUP-U-WCZP;WCZPYR;Color Zen;17 -0005000E-10162B00;1;WUP;0001;WUP-P-AGMJ;AGMJ01;Splatoon;16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256 +0005000E-10162B00;1;WUP;0001;WUP-P-AGMJ;AGMJ01;Splatoon;16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272 0005000E-10162D00;2;WUP;0001;WUP-U-ABAE;ABAE01;Mario Party 10;16 0005000E-10169600;4;WUP;00UP;WUP-U-WEPS;WEPSUP;Unepic EnjoyUp Games;16,32 0005000E-1016A200;4;WUP;00SS;WUP-U-WBXP;WBXPSS;Bombing Bastards;16 @@ -219,8 +219,8 @@ 0005000E-10175D00;4;WUP;00AF;WUP-P-AUNP;AUNPAF;ONE PIECE Unlimited World Red;16 0005000E-10176500;2;WUP;00UB;WUP-U-WCGE;WCGEUB;Stealth Inc 2 A Game of Clones;16 0005000E-10176600;1;WUP;00R5;WUP-P-WG8J;WG8JR5;GREAT RACE;16 -0005000E-10176900;2;WUP;0001;WUP-P-AGME;AGME01;Splatoon;16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256 -0005000E-10176A00;4;WUP;0001;WUP-P-AGMP;AGMP01;Splatoon;32,48,64,80,96,112,128,144,160,176,192,208,224,240,256 +0005000E-10176900;2;WUP;0001;WUP-P-AGME;AGME01;Splatoon;16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272 +0005000E-10176A00;4;WUP;0001;WUP-P-AGMP;AGMP01;Splatoon;32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272 0005000E-10176F00;4;WUP;0041;WUP-P-BJDP;BJDP41;JUST DANCE® 2015;16 0005000E-10177600;2;WUP;0001;WUP-U-ADNE;ADNE01;Devil's Third;16 0005000E-10177800;4;WUP;008P;WUP-P-BSSP;BSSP8P;Sonic Boom: Rise of Lyric;16 @@ -229,11 +229,13 @@ 0005000E-1017BE00;1;WUP;0001;WUP-U-BXAJ;BXAJ01;Art Academy: Home Studio;48 0005000E-1017BF00;2;WUP;0001;WUP-U-BXAE;BXAE01;Art Academy: Home Studio;17 0005000E-1017C600;2;WUP;0052;WUP-P-BK7E;BK7E52;Skylanders Trap Team;16 -0005000E-1017CD00;1;WUP;00C8;WUP-U-BWPJ;BWPJC8;Hyrule Warriors;32,49,64,80,98,112,113,128,144,160,176,192,208,224,240 -0005000E-1017D800;2;WUP;0001;WUP-U-BWPE;BWPE01;Hyrule Warriors;16,32,48,64,80,96,112,128,144,160,176 -0005000E-1017D900;4;WUP;0001;WUP-U-BWPP;BWPP01;Hyrule Warriors;16,33,48,64,80,96,112,128,144,160,176 +0005000E-1017CD00;1;WUP;00C8;WUP-U-BWPJ;BWPJC8;Hyrule Warriors;32,49,64,80,98,112,113,128,144,160,176,192,208,224,240,256 +0005000E-1017D800;2;WUP;0001;WUP-U-BWPE;BWPE01;Hyrule Warriors;16,32,48,64,80,96,112,128,144,160,176,192 +0005000E-1017D900;4;WUP;0001;WUP-U-BWPP;BWPP01;Hyrule Warriors;16,33,48,64,80,96,112,128,144,160,176,192 0005000E-1017DA00;2;WUP;011S;WUP-P-ACQE;ACQE1S;Costume Quest 2;16 0005000E-1017E000;4;WUP;00XQ;WUP-P-WK8P;WK8PXQ;Turtle Tale;16 +0005000E-1017E200;4;WUP;0102;WUP-P-WTSP;WTSP02;3Souls;16 +0005000E-1017E700;2;WUP;0102;WUP-P-WTSE;WTSE02;3Souls;16 0005000E-10180500;1;WUP;0001;WUP-P-AKBJ;AKBJ01;Captain Toad: Treasure Tracker;16 0005000E-10180600;2;WUP;0001;WUP-P-AKBE;AKBE01;Captain Toad: Treasure Tracker;16 0005000E-10180700;4;WUP;0001;WUP-P-AKBP;AKBP01;Captain Toad: Treasure Tracker;16 @@ -260,14 +262,14 @@ 0005000E-10192200;1;WUP;00AF;WUP-P-BRSJ;BRSJAF;KAMEN RIDER SUMMON RIDE!;16,33,48,64,80 0005000E-10193300;4;WUP;006V;WUP-P-BLKP;BLKP6V;Legend of Kay Anniversary;16 0005000E-10193400;2;WUP;006V;WUP-P-BLKE;BLKE6V;Legend of Kay Anniversary;16 -0005000E-10194200;2;WUP;00WR;WUP-P-APZE;APZEWR;LEGO® DIMENSIONS™;16,32,48,64,80,96,112,128 -0005000E-10195D00;4;WUP;00WR;WUP-P-APZP;APZPWR;LEGO® DIMENSIONS™;32,48,64,80,96,112,128,144 +0005000E-10194200;2;WUP;00WR;WUP-P-APZE;APZEWR;LEGO® DIMENSIONS™;16,32,48,64,80,96,112,128,144,160 +0005000E-10195D00;4;WUP;00WR;WUP-P-APZP;APZPWR;LEGO® DIMENSIONS™;32,48,64,80,96,112,128,144,160,176,192 0005000E-10197800;4;WUP;011S;WUP-P-ACQP;ACQP1S;Costume Quest 2;16 -0005000E-10198F00;4;WUP;00GT;WUP-P-BTXP;BTXPGT;Terraria;17 +0005000E-10198F00;4;WUP;00GT;WUP-P-BTXP;BTXPGT;Terraria;17,32 0005000E-10199000;1;WUP;0001;WUP-P-AVXJ;AVXJ01;Mario Tennis: Ultra Smash;16,32 0005000E-1019AD00;2;WUP;011A;WUP-P-BEQE;BEQE1A;Elliot Quest;16,32,48,64,80,96,114 0005000E-1019B200;4;WUP;009Y;WUP-P-BTCP;BTCP9Y;Tachyon Project;16 -0005000E-1019C300;2;WUP;00GT;WUP-P-BTXE;BTXEGT;Terraria;16 +0005000E-1019C300;2;WUP;00GT;WUP-P-BTXE;BTXEGT;Terraria;16,32 0005000E-1019C800;1;WUP;0001;WUP-U-AZAJ;AZAJ01;THE LEGEND OF ZELDA Twilight Princess HD;82 0005000E-1019E500;2;WUP;0001;WUP-U-AZAE;AZAE01;THE LEGEND OF ZELDA Twilight Princess HD;81 0005000E-101A1B00;2;WUP;00RG;WUP-U-BS2E;BS2ERG;Swords & Soldiers II;16 @@ -339,23 +341,24 @@ 0005000E-101D3900;4;WUP;017D;WUP-P-AQCP;AQCP7D;The Quiet Collection;16 0005000E-101D4200;2;WUP;00DV;WUP-P-ABPE;ABPEDV;Brunswick Pro Bowling;16 0005000E-101D5100;4;WUP;011F;WUP-P-BSVP;BSVP1F;Stone Shire;32,49,64 -0005000E-101D6000;4;WUP;00JX;WUP-P-WFSP;WFSPJX;FAST Racing NEO;16,34 +0005000E-101D6000;4;WUP;00JX;WUP-P-WFSP;WFSPJX;FAST Racing NEO;16,34,48 0005000E-101D6100;4;WUP;00FV;WUP-U-AGWP;AGWPFV;Gunman Clive HD Collection;16 -0005000E-101D6D00;4;WUP;010P;WUP-P-ARNP;ARNP0P;Runbow;17,33,48 +0005000E-101D6D00;4;WUP;010P;WUP-P-ARNP;ARNP0P;Runbow;17,33,48,65 0005000E-101D7400;4;WUP;010C;WUP-U-ATTP;ATTP0C;Totem Topple;16,33 -0005000E-101D7500;4;WUP;00DU;WUP-P-AUMP;AUMPDU;Minecraft: Wii U Edition;16,32,48,64,80,96,112,128,144,161 +0005000E-101D7500;4;WUP;00DU;WUP-P-AUMP;AUMPDU;Minecraft: Wii U Edition;16,32,48,64,80,96,112,128,144,161,176,192,208 0005000E-101D8300;4;WUP;00TJ;WUP-U-AEJP;AEJPTJ;Electronic Super Joy;16 +0005000E-101D9300;1;WUP;0001;WUP-P-WKNJ;WKNJ01;Shovel Knight;16 0005000E-101D9600;4;WUP;00UP;WUP-U-ARXP;ARXPUP;Rock 'N Racing Off Road DX;16 -0005000E-101D9D00;2;WUP;00DU;WUP-P-AUME;AUMEDU;Minecraft: Wii U Edition;16,32,48,64,80,96,112,128,144,160 -0005000E-101DAA00;4;WUP;00WR;WUP-P-BLGP;BLGPWR;LEGO® STAR WARS™ The Force Awakens;17 -0005000E-101DAB00;2;WUP;00WR;WUP-P-BLGE;BLGEWR;LEGO® STAR WARS™ The Force Awakens;16 +0005000E-101D9D00;2;WUP;00DU;WUP-P-AUME;AUMEDU;Minecraft: Wii U Edition;16,32,48,64,80,96,112,128,144,160,176,192,208 +0005000E-101DAA00;4;WUP;00WR;WUP-P-BLGP;BLGPWR;LEGO® STAR WARS™ The Force Awakens;17,32 +0005000E-101DAB00;2;WUP;00WR;WUP-P-BLGE;BLGEWR;LEGO® STAR WARS™ The Force Awakens;16,32 0005000E-101DB800;2;WUP;017D;WUP-P-AVME;AVME7D;VoxelMaker;17 -0005000E-101DBE00;1;WUP;0188;WUP-P-AUMJ;AUMJ88;Minecraft: Wii U Edition;16,32,48,64,80,96,112,128,144,161 +0005000E-101DBE00;1;WUP;0188;WUP-P-AUMJ;AUMJ88;Minecraft: Wii U Edition;16,32,48,64,80,96,112,128,144,161,176,192,208 0005000E-101DC100;4;WUP;016E;WUP-P-AD5P;AD5P6E;Octodad: Dadliest Catch;16 0005000E-101DCA00;4;WUP;017D;WUP-P-AVMP;AVMP7D;VoxelMaker;16 0005000E-101DCD00;2;WUP;0001;WUP-U-BWGE;BWGE01;Star Fox Guard Special Demo;16 0005000E-101DCE00;4;WUP;0001;WUP-U-BWGP;BWGP01;Star Fox Guard: Special Demo Version;16 -0005000E-101DD700;1;WUP;013P;WUP-P-ARNJ;ARNJ3P;Runbow;16,17,32 +0005000E-101DD700;1;WUP;013P;WUP-P-ARNJ;ARNJ3P;Runbow;16,17,32,49 0005000E-101DD900;1;WUP;0091;WUP-P-AMQJ;AMQJ91;Mighty No. 9;16 0005000E-101DDC00;1;WUP;00AF;WUP-P-BD3J;BD3JAF;ディズニーインフィニティ3.0;17,33,48 0005000E-101DF400;2;WUP;0001;WUP-P-APKE;APKE01;POKKÉN TOURNAMENT;16,32,48,64 @@ -365,11 +368,19 @@ 0005000E-101E3200;2;WUP;0190;WUP-P-AJQE;AJQE90;Jewel Quest;16 0005000E-101E3300;4;WUP;011A;WUP-P-AR7P;AR7P1A;Olympia Rising;16,32,48,64 0005000E-101E3400;2;WUP;011A;WUP-P-AR7E;AR7E1A;Olympia Rising;16 -0005000E-101E4100;1;WUP;00JF;WUP-P-WFSJ;WFSJJF;FAST Racing NEO;33 +0005000E-101E4100;1;WUP;00JF;WUP-P-WFSJ;WFSJJF;FAST Racing NEO;33,49 0005000E-101E4300;1;WUP;00TF;WUP-P-AMPJ;AMPJTF;モモンガ ピンボール アドベンチャー;16 0005000E-101E5300;2;WUP;0001;WUP-U-ABJE;ABJE01;M & S at the Rio 2016 Olympic Games;16 +0005000E-101E9300;2;WUP;010C;WUP-U-BGGE;BGGE0C;Gear Gauntlet;16 +0005000E-101E9400;4;WUP;010C;WUP-U-BGGP;BGGP0C;Gear Gauntlet;16 0005000E-101E9C00;1;WUP;00S6;WUP-U-ACUJ;ACUJS6;Cube Life: Island Survival;17 +0005000E-101EA000;1;WUP;00WR;WUP-P-BLGJ;BLGJWR;LEGO® STAR WARS™ The Force Awakens;16 0005000E-101EA100;1;WUP;00WR;WUP-P-ALRJ;ALRJWR;LEGO® MARVEL's Avengers;18 +0005000E-101EAA00;4;WUP;0041;WUP-P-BJ7P;BJ7P41;JUST DANCE® 2017;16 0005000E-101ED800;2;WUP;0001;WUP-U-ASEE;ASEE01;Tokyo Mirage Sessions #FE;16 -0005000E-101F2700;4;WUP;017P;WUP-P-BY2P;BY2P7P;Star Sky 2;16 +0005000E-101F2700;4;WUP;017P;WUP-P-BY2P;BY2P7P;Star Sky 2;16,32 +0005000E-101F5D00;2;WUP;017D;WUP-P-AHYE;AHYE7D;PixelMaker;16 +0005000E-101F5F00;2;WUP;008V;WUP-P-AHZE;AHZE8V;Hot Rod Racer;16 +0005000E-101F7400;4;WUP;008V;WUP-P-AHZP;AHZP8V;Hot Rod Racer;16 0005000E-101F7700;4;WUP;017D;WUP-P-AHYP;AHYP7D;PixelMaker;16,32 +0005000E-101F9A00;4;WUP;00VA;WUP-P-BECP;BECPVA;Citadale;17 diff --git a/release.zip b/release.zip index 70d63ae..6222dc4 100644 Binary files a/release.zip and b/release.zip differ diff --git a/src/de/mas/jnustool/FST.java b/src/de/mas/jnustool/FST.java index 4e9ade2..42f073c 100644 --- a/src/de/mas/jnustool/FST.java +++ b/src/de/mas/jnustool/FST.java @@ -4,6 +4,8 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import de.mas.jnustool.util.Util; @@ -314,6 +316,21 @@ public class FST { this.tmd = tmd; } + public List getFileEntriesByFilePath(String filepath){ + List newList = new ArrayList<>(); + if(!filepath.startsWith("/")){ + filepath = "/" + filepath; + } + Pattern p = Pattern.compile(filepath); + for(FEntry f : fileEntries){ + Matcher m = p.matcher(f.getFullPath()); + if(m.matches()){ + newList.add(f); + } + } + return newList; + } + } diff --git a/src/de/mas/jnustool/Starter.java b/src/de/mas/jnustool/Starter.java index 6da6cf9..3b5040f 100644 --- a/src/de/mas/jnustool/Starter.java +++ b/src/de/mas/jnustool/Starter.java @@ -25,8 +25,7 @@ public class Starter { private static String updateCSVPath; public static void main(String[] args) { - - Logger.log("JNUSTool 0.0.7 - alpha - by Maschell"); + Logger.log("JNUSTool 0.0.8 - alpha - by Maschell"); Logger.log(""); try { readConfig(); @@ -48,14 +47,25 @@ public class Starter { } if(titleID != 0){ + String path = ""; boolean dl_encrypted = false; + boolean download_file = false; + for(int i =0; i< args.length;i++){ if(args[i].startsWith("v")){ version = Integer.parseInt((args[i].substring(1))); } if(args[i].equals("-dlEncrypted")){ dl_encrypted = true; - } + } + + if(args[i].equals("-file")){ + if(args.length > i){ + i++; + path = args[i]; + } + download_file = true; + } } if(dl_encrypted){ NUSTitle title = new NUSTitle(titleID,version, key); @@ -65,7 +75,14 @@ public class Starter { e.printStackTrace(); } System.exit(0); - } + }else if(download_file){ + NUSTitle title = new NUSTitle(titleID,version, key); + + title.decryptFEntries(title.getFst().getFileEntriesByFilePath(path), null); + + System.exit(0); + } + NUSGUI m = new NUSGUI(new NUSTitle(titleID,version, key)); m.setVisible(true); }