The Forum is up for sale: XeNTaX Forum looking for new owner
longwu online (*.mpk)
-
mappy2012
- advanced
- Posts: 61
- Joined: Sun Jul 03, 2011 4:40 am
- Has thanked: 51 times
- Been thanked: 1 time
longwu online (*.mpk)
Name: longwu online
HP: http://lw.q1.com/
DL page: http://lw.q1.com/download/index.html
Direct link: http://dl.szgla.com/lw/LWSetup_BC_FD_1009.exe
Header: 4D504B1A32303030F6F63B042800000006EA3B04F00C0000DAD93B042C1000006BC73B0400000000314B160000000000000000002BB04DAF4A4A4A4AB2854A4A
Samples: http://www4.zippyshare.com/v/73842851/file.html
Any idea how to unpack .mpk files?Any help is highly appreciated!
HP: http://lw.q1.com/
DL page: http://lw.q1.com/download/index.html
Direct link: http://dl.szgla.com/lw/LWSetup_BC_FD_1009.exe
Header: 4D504B1A32303030F6F63B042800000006EA3B04F00C0000DAD93B042C1000006BC73B0400000000314B160000000000000000002BB04DAF4A4A4A4AB2854A4A
Samples: http://www4.zippyshare.com/v/73842851/file.html
Any idea how to unpack .mpk files?Any help is highly appreciated!
You do not have the required permissions to view the files attached to this post.
-
Ekey
- M-M-M-Monster veteran

- Posts: 1822
- Joined: Wed Mar 31, 2010 6:54 am
- Has thanked: 92 times
- Been thanked: 1056 times
Re: longwu online (*.mpk)
Modified StormLib (MPQ). Here general info
Here simple code for decrypt block and hash table's + modified hash generator (added alphabet table)
For decrypt file data, block and hash tables.
Modified cryptographic initialization and hash function
Load and decrypt tables (example)
File names hashes generated like this:
Decrypt files
Compression used by LZMA with next settings:
Code: Select all
struct MPKHeader
{
DWORD pID; //MPK\x1A
DWORD pVersion; //String 2000
DWORD pArchiveSize;
DWORD pUnknown;
DWORD pHashTableOffset;
DWORD pHashTableSize;
DWORD pBlockTableOffset;
DWORD pBlockTableSize;
};Code: Select all
struct MPKHashTable
{
DWORD pHashA;
DWORD pHashB;
DWORD pHashC;
DWORD pIndex; // Index for block table - pBlockIndex = MPKHashTable.pIndex * 20 & 0xFF
};Code: Select all
struct MPKBlockTable
{
SHORT pCFlag; // 0x1121 - Compressed , 0x1120 - Not compressed
SHORT pFlag; // 0x0001
DWORD pOffset; // File offset
DWORD pSize; // Uncompressed size
DWORD pZSize; // Compressed size
DWORD pUnknown; // 0x86364E6D
};Code: Select all
static unsigned char pKey[512] = {
0x60, 0x20, 0x29, 0xE1, 0x01, 0xCE, 0xAA, 0xFE, 0xA3, 0xAB, 0x8E, 0x30, 0xAF, 0x02, 0xD1, 0x7D,
0x41, 0x24, 0x06, 0xBD, 0xAE, 0xBE, 0x43, 0xC3, 0xBA, 0xB7, 0x08, 0x13, 0x51, 0xCF, 0xF8, 0xF7,
0x25, 0x42, 0xA5, 0x4A, 0xDA, 0x0F, 0x52, 0x1C, 0x90, 0x3B, 0x63, 0x49, 0x36, 0xF6, 0xDD, 0x1B,
0xEA, 0x58, 0xD4, 0x40, 0x70, 0x61, 0x55, 0x09, 0xCD, 0x0B, 0xA2, 0x4B, 0x68, 0x2C, 0x8A, 0xF1,
0x3C, 0x3A, 0x65, 0xBB, 0xA1, 0xA8, 0x23, 0x97, 0xFD, 0x15, 0x00, 0x94, 0x88, 0x33, 0x59, 0xE9,
0xFB, 0x69, 0x21, 0xEF, 0x85, 0x5B, 0x57, 0x6C, 0xFA, 0xB5, 0xEE, 0xB8, 0x71, 0xDC, 0xB1, 0x38,
0x0C, 0x0A, 0x5C, 0x56, 0xC9, 0xB4, 0x84, 0x17, 0x1E, 0xE5, 0xD3, 0x5A, 0xCC, 0xFC, 0x11, 0x86,
0x7F, 0x45, 0x4F, 0x54, 0xC8, 0x8D, 0x73, 0x89, 0x79, 0x5D, 0xB3, 0xBF, 0xB9, 0xE3, 0x93, 0xE4,
0x6F, 0x35, 0x2D, 0x46, 0xF2, 0x76, 0xC5, 0x7E, 0xE2, 0xA4, 0xE6, 0xD9, 0x6E, 0x48, 0x34, 0x2B,
0xC6, 0x5F, 0xBC, 0xA0, 0x6D, 0x0D, 0x47, 0x6B, 0x95, 0x96, 0x92, 0x91, 0xB2, 0x27, 0xEB, 0x9E,
0xEC, 0x8F, 0xDF, 0x9C, 0x74, 0x99, 0x64, 0xF5, 0xFF, 0x28, 0xB6, 0x37, 0xF3, 0x7C, 0x81, 0x03,
0x44, 0x62, 0x1F, 0xDB, 0x04, 0x7B, 0xB0, 0x9B, 0x31, 0xA7, 0xDE, 0x78, 0x9F, 0xAD, 0x0E, 0x3F,
0x3E, 0x4D, 0xC7, 0xD7, 0x39, 0x19, 0x5E, 0xC2, 0xD0, 0xAC, 0xE8, 0x1A, 0x87, 0x8B, 0x07, 0x05,
0x22, 0xED, 0x72, 0x2E, 0x1D, 0xC1, 0xA9, 0xD6, 0xE0, 0x83, 0xD5, 0xD8, 0xCB, 0x80, 0xF0, 0x66,
0x7A, 0x9D, 0x50, 0xF9, 0x10, 0x4E, 0x16, 0x14, 0x77, 0x75, 0x6A, 0x67, 0xD2, 0xC0, 0xA6, 0xC4,
0x53, 0x8C, 0x32, 0xCA, 0x82, 0x2A, 0x18, 0x9A, 0xF4, 0x4C, 0x3D, 0x26, 0x12, 0xE7, 0x98, 0x2F,
0x4A, 0x04, 0x0D, 0xAF, 0xB4, 0xCF, 0x12, 0xCE, 0x1A, 0x37, 0x61, 0x39, 0x60, 0x95, 0xBE, 0x25,
0xE4, 0x6E, 0xFC, 0x1B, 0xE7, 0x49, 0xE6, 0x67, 0xF6, 0xC5, 0xCB, 0x2F, 0x27, 0xD4, 0x68, 0xB2,
0x01, 0x52, 0xD0, 0x46, 0x11, 0x20, 0xFB, 0x9D, 0xA9, 0x02, 0xF5, 0x8F, 0x3D, 0x82, 0xD3, 0xFF,
0x0B, 0xB8, 0xF2, 0x4D, 0x8E, 0x81, 0x2C, 0xAB, 0x5F, 0xC4, 0x41, 0x29, 0x40, 0xFA, 0xC0, 0xBF,
0x33, 0x10, 0x21, 0x16, 0xB0, 0x71, 0x83, 0x96, 0x8D, 0x2B, 0x23, 0x3B, 0xF9, 0xC1, 0xE5, 0x72,
0xE2, 0x1C, 0x26, 0xF0, 0x73, 0x36, 0x63, 0x56, 0x31, 0x4E, 0x6B, 0x55, 0x62, 0x79, 0xC6, 0x91,
0x00, 0x35, 0xB1, 0x2A, 0xA6, 0x42, 0xDF, 0xEB, 0x3C, 0x51, 0xEA, 0x97, 0x57, 0x94, 0x8C, 0x80,
0x34, 0x5C, 0xD2, 0x76, 0xA4, 0xE9, 0x85, 0xE8, 0xBB, 0x78, 0xE0, 0xB5, 0xAD, 0x0F, 0x87, 0x70,
0xDD, 0xAE, 0xF4, 0xD9, 0x66, 0x54, 0x6F, 0xCC, 0x4C, 0x77, 0x3E, 0xCD, 0xF1, 0x75, 0x0A, 0xA1,
0x28, 0x9B, 0x9A, 0x7E, 0x4B, 0x98, 0x99, 0x47, 0xFE, 0xA5, 0xF7, 0xB7, 0xA3, 0xE1, 0x9F, 0xBC,
0x93, 0x44, 0x3A, 0x08, 0x89, 0x22, 0xEE, 0xB9, 0x45, 0xD6, 0x06, 0x09, 0xC9, 0xBD, 0x14, 0x0C,
0xB6, 0x5E, 0x9C, 0x7A, 0x65, 0x59, 0xAA, 0x19, 0x5B, 0x7C, 0x18, 0x43, 0x92, 0x13, 0x15, 0x7B,
0xED, 0xD5, 0xC7, 0x17, 0xEF, 0x86, 0x90, 0xC2, 0x74, 0x64, 0xF3, 0xDC, 0x6C, 0x38, 0x05, 0x1D,
0xC8, 0x0E, 0xEC, 0x6A, 0x32, 0xDA, 0xD7, 0xC3, 0xDB, 0x8B, 0x24, 0xB3, 0x5D, 0x2E, 0xBA, 0xA2,
0xD8, 0x03, 0x88, 0x7D, 0x7F, 0x69, 0x8A, 0xFD, 0xCA, 0x4F, 0x30, 0x9E, 0xA0, 0xD1, 0x5A, 0x53,
0xDE, 0x3F, 0x84, 0xAC, 0xF8, 0xA7, 0x2D, 0x1F, 0x1E, 0xE3, 0x58, 0x50, 0x6D, 0x48, 0x07, 0xA8};
static unsigned long pAlphabetsTable[256] = {
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007,
0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017,
0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027,
0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037,
0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
0x00000040, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067,
0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077,
0x00000078, 0x00000079, 0x0000007A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067,
0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077,
0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087,
0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097,
0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
0x000000A0, 0x000000A1, 0x000000A2, 0x000000A3, 0x000000A4, 0x000000A5, 0x000000A6, 0x000000A7,
0x000000A8, 0x000000A9, 0x000000AA, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000AF,
0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x000000B4, 0x000000B5, 0x000000B6, 0x000000B7,
0x000000B8, 0x000000B9, 0x000000BA, 0x000000BB, 0x000000BC, 0x000000BD, 0x000000BE, 0x000000BF,
0x000000C0, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x000000C7,
0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF,
0x000000D0, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x000000D7,
0x000000D8, 0x000000D9, 0x000000DA, 0x000000DB, 0x000000DC, 0x000000DD, 0x000000DE, 0x000000DF,
0x000000E0, 0x000000E1, 0x000000E2, 0x000000E3, 0x000000E4, 0x000000E5, 0x000000E6, 0x000000E7,
0x000000E8, 0x000000E9, 0x000000EA, 0x000000EB, 0x000000EC, 0x000000ED, 0x000000EE, 0x000000EF,
0x000000F0, 0x000000F1, 0x000000F2, 0x000000F3, 0x000000F4, 0x000000F5, 0x000000F6, 0x000000F7,
0x000000F8, 0x000000F9, 0x000000FA, 0x000000FB, 0x000000FC, 0x000000FD, 0x000000FE, 0x000000FF};
Code: Select all
int MPKDecrypt(unsigned char* pBuffer, unsigned int pSize)
{
int result;
unsigned int i;
for ( i = 0; i < pSize; ++i )
{
pBuffer[i] = pKey[pBuffer[i]];
result = i + 1;
}
return result;
}Code: Select all
static unsigned long StormBuffer[0x1400];
void StormInit()
{
unsigned long seed = 0x00100001;
unsigned long index1 = 0;
unsigned long index2 = 0;
int i;
for (index1 = 0; index1 < 0x100; index1++)
{
for (index2 = index1, i = 0; i < 5; i++, index2 += 0x100)
{
unsigned long temp1, temp2;
seed = (seed * 125 + 3) % 0x2AAAAB;
temp1 = (seed & 0xFFFF) << 0x10;
seed = (seed * 125 + 3) % 0x2AAAAB;
temp2 = (seed & 0xFFFF);
StormBuffer[index2] = (temp1 | temp2);
}
}
}
unsigned long hashString(char *lpszFileName, unsigned long dwHashType)
{
unsigned char *key = (unsigned char *)lpszFileName;
unsigned long seed1 = 0x7FED7FED, seed2 = 0xEEEEEEEE;
int ch;
while( *(BYTE *)key )
{
ch = pAlphabetsTable[*key++];
seed1 = StormBuffer[ch + (dwHashType << 8)] ^ (seed2 + seed1);
seed2 += seed1 + ch + 0x20 * seed2 + 3;
}
return seed1;
}
Code: Select all
DWORD pHashTableHash;
DWORD pBlockTableHash;
MPKHeader pHeader;
StormInit();
fread(&pHeader, sizeof(pHeader), 1, fi);
char *pHashBuffer = new char[pHeader.pHashTableSize];
memset(pHashBuffer, 0, pHeader.pHashTableSize);
fseek(fi, pHeader.pHashTableOffset, SEEK_SET);
fread((char *) pHashBuffer, pHeader.pHashTableSize, 1, fi);
MPKDecrypt(pHashBuffer, pHeader.pHashTableSize);
char *pBlockBuffer = new char[pHeader.pBlockTableSize];
memset(pBlockBuffer, 0, pHeader.pBlockTableSize);
fseek(fi, pHeader.pBlockTableOffset, SEEK_SET);
fread((char *) pBlockBuffer, pHeader.pBlockTableSize, 1, fi);
MPKDecrypt(pBlockBuffer, pHeader.pBlockTableSize);
Code: Select all
StormInit();
DWORD dwHashA = hashString("Shader\Gray.fx", 0);
DWORD dwHashB = hashString("Shader\Gray.fx", 1);
DWORD dwHashC = hashString("Shader\Gray.fx", 2);
Code: Select all
MPKBlockTable pBlockTable;
char *pBuffer = new char[pBlockTable.pZSize];
memset(pBuffer , 0, pBlockTable.pZSize);
fseek(fi, pBlockTable.pOffset, SEEK_SET);
fread((char *) pBuffer , pBlockTable.pZSize, 1, fi);
MPKDecrypt(pBuffer , pBlockTable.pZSize);Code: Select all
#define LZMA_HEADER_SIZE (LZMA_PROPS_SIZE)
Last edited by Ekey on Wed Oct 16, 2013 10:17 pm, edited 6 times in total.
My Github repo
-
Ekey
- M-M-M-Monster veteran

- Posts: 1822
- Joined: Wed Mar 31, 2010 6:54 am
- Has thanked: 92 times
- Been thanked: 1056 times
Re: longwu online (*.mpk)
Currently working on it, but have some problems with saving files.
Last edited by Ekey on Wed Oct 16, 2013 10:07 pm, edited 1 time in total.
My Github repo
-
Ekey
- M-M-M-Monster veteran

- Posts: 1822
- Joined: Wed Mar 31, 2010 6:54 am
- Has thanked: 92 times
- Been thanked: 1056 times
Re: longwu online (*.mpk)
Done. Archives dont contain file names (only hashes). If you found file name just add in Projects\FileNames.list
WinXP/7 tested. Enjoy.

WinXP/7 tested. Enjoy.

You do not have the required permissions to view the files attached to this post.
My Github repo
-
Ekey
- M-M-M-Monster veteran

- Posts: 1822
- Joined: Wed Mar 31, 2010 6:54 am
- Has thanked: 92 times
- Been thanked: 1056 times
Re: longwu online (*.mpk)
Added ~7500 file names. Copy in Projects folder
Download: See below.
Download: See below.
Last edited by Ekey on Fri Oct 18, 2013 12:02 pm, edited 1 time in total.
My Github repo
-
Ekey
- M-M-M-Monster veteran

- Posts: 1822
- Joined: Wed Mar 31, 2010 6:54 am
- Has thanked: 92 times
- Been thanked: 1056 times
Re: longwu online (*.mpk)
Np. Here my last updated base list. Added ~7000 file names. Copy in Projects folder.mappy2012 wrote:Thank you so much for getting this ekey!
You do not have the required permissions to view the files attached to this post.
My Github repo
- CriticalError
- double-veteran

- Posts: 678
- Joined: Sun Jul 05, 2009 2:03 am
- Has thanked: 104 times
- Been thanked: 41 times
-
Ekey
- M-M-M-Monster veteran

- Posts: 1822
- Joined: Wed Mar 31, 2010 6:54 am
- Has thanked: 92 times
- Been thanked: 1056 times
- CriticalError
- double-veteran

- Posts: 678
- Joined: Sun Jul 05, 2009 2:03 am
- Has thanked: 104 times
- Been thanked: 41 times
Re: longwu online (*.mpk)
ohh well thats bad newsEkey wrote:Nope. IP Block.
- lumekano
- advanced
- Posts: 59
- Joined: Sat Feb 25, 2012 2:20 pm
- Has thanked: 40 times
- Been thanked: 10 times
