View previous topic :: View next topic |
Author |
Message |
thepoop555
Joined: 16 Sep 2007 Posts: 316 Location: Austin, TX
|
Posted: Sat Dec 12, 2009 7:27 am Post subject: |
|
|
This is saying that you don't have Java runtime installed. Go to www.java.com and download the latest version. _________________
SUPPORT GH: AVENGED SEVENFOLD
Arandomguy1 on YouTube
TrevorTheGreat wrote: | Oh my god I've never seen a bunch of bitching children like this before.
OMG I got perma-rockered! /world
So fucking what. Play your plastic guitar and get over it. |
|
|
Back to top |
|
|
Gyuszi999
Joined: 06 Aug 2009 Posts: 9
|
Posted: Mon Dec 14, 2009 1:50 am Post subject: XENdecrypt |
|
|
Hello everyone...
I'm trying to extract the music from GH5, and I found something interesting... I don't really understand the XEN encrypting algorythm, but I think there is a little bug in the decrypter...
I'vebeen looking for informations about multi-channel XMA files for days, and I've noticed something...
After I decode the XEN to FSB, the FSB has byte errors: there are places where continuous "ff ff ff ff" should be, but instead of it, every 31th bit is "df" at me...
so I think XEN decrypter has a little bug, maybe it need a checking (I don't understand Java :S)
BTW, in the decoding of XMA-s there is no success so far...
but I'm not giving up |
|
Back to top |
|
|
Gyuszi999
Joined: 06 Aug 2009 Posts: 9
|
Posted: Mon Dec 14, 2009 1:37 pm Post subject: success |
|
|
hi everyone
I have great news:
1. I modified an earlier version of XENDecrypt, and now it works perfectly for me
I wrote a new algorythm for key finding (however, it can only find keys with length from 5 to 50, but I think, that's enough for now)
EXE: http://www.mediafire.com/file/jryutynme0z/XENDecryptNew.exe
Source: http://www.mediafire.com/file/gnvymqdzzgy/XENDecryptNew.cpp
2. I managed to extract PCM WAV files associated with All Along The Wathtower (from GH5, multichannel XMA)
But I couldn't do it without the XMA-parser, and a lot of help
So, many thanks to AlphaTwentyThree and hcs!
If anybody is interested in extracting music from those XMA-s, write PM to me
Have a nice day, everyone! |
|
Back to top |
|
|
Gyuszi999
Joined: 06 Aug 2009 Posts: 9
|
Posted: Tue Dec 15, 2009 10:00 pm Post subject: XEN-decrypt |
|
|
Meanwhile, I found out that my algorithm doesn't work on some FSB.XEN files, so I corrected the pervious one, in Java...
It was just a little mistake, in the constants
The source is here: http://www.mediafire.com/file/ztmntc51zni/xendecrypt.java
Maybe someone could compile it (I'm not very professional in Java), and test it, and if it's good, it could be added to ghwt_tools as an update |
|
Back to top |
|
|
dogg21
Joined: 02 Jan 2008 Posts: 31
|
Posted: Thu Dec 17, 2009 7:56 pm Post subject: |
|
|
hey Gyuszi I compiled your java code, it seems to work fine. It also works where the last version failed.(FF DF FF)
I'll pm you a link so you can test it out. |
|
Back to top |
|
|
Gyuszi999
Joined: 06 Aug 2009 Posts: 9
|
Posted: Fri Dec 18, 2009 12:53 am Post subject: xenFinal |
|
|
Hello everyone
Personally, I think, the C++ version xendecrypter was better at speed, and java version was better at platform-independence, and precision, so with one day work (1 hour coding, 23 hours debugging xD) I managed to write the java version in C++, but using input buffers, not streams, so it's fast, and effective, but it's EXE, so it's only good for PC-s. And, it doesn't write keyfile.bin, because I wrote it for decryption only. However, it can be easily modified to write that .bin file. Code is here:
Code: |
#include <stdlib>
#include <stdio>
#include <sys>
#include <sys>
#include <string>
#include <math>
#define PC 0
#define XBOX 1
char SwapByteBits(unsigned char cInput);
void KeySearch (unsigned char *cpKey, unsigned char *pBuffer, int nBufferSize, int *KEY_LEN, int Platform, int* nError) {
int KeyFound = 0;
int KeyLen = 1;
/*
byte[] id = {70, 83, 66, 52}; //"FSB"
byte[] numsamples = {1, 0, 0, 0 }; //Num Samples is always 1
byte[] shdrsize = {80, 0, 0, 0 }; //Always 80 bytes long.
byte[] datasize = new byte[4]; //Don't know this yet, the number is the file size - 128 (the size of the headers) laid out in little-endian.
byte[] version = {0, 0, 4, 0 }; //Always 0x00000400 for FSB4.
byte[] mode = {32, 0, 0, 0 }; //I think this is always 0x20000000 mode 0.
byte[] zero = {0, 0, 0, 0, 0, 0, 0, 0 }; //Just 8 bytes of zeroes. Nothing special
*/
//Look for repeated stuff. 0000's or 1111's.
//Set datasize byte array
if (Platform == PC){
unsigned char datasize [4];
unsigned char headerPCCheck [] =
{
'\x46', '\x53', '\x42', '\x34', //"FSB4"
'\x01', '\x00', '\x00', '\x00', //Num Samples
'\x50', '\x00', '\x00', '\x00', //80 bytes long
'\x00', '\x00', '\x00', '\x00', //DataSize - still unknown: (filesize -128)
'\x00', '\x00', '\x04', '\x00', //Version
'\x20', '\x00', '\x00', '\x00', //Mode
'\x00', '\x00', '\x00', '\x00', //4 zero
'\x00', '\x00', '\x00', '\x00', //4 zero again
};
int encryptedDataSize = nBufferSize-128;
int datacarry = encryptedDataSize;
//lay out data in little-endian format.
for(int i=3; i>-1; i--)
{
datasize[i] = (unsigned char) (datacarry / (pow(16.0, i*2)));
datacarry -= ((datacarry / (int) (pow(16.0, i*2)))* (int) pow(16.0, i*2));
}
for(int i=0; i<3> (swap) 36
//2A xor 48 = 62 (01100010) -> (swap) 46 (01000110)
//62 xor 48 = 2A
//Swap byte bits of headerCheck, then xor with encrypteddata to get key.
for(int i=0; i<=KeyLen; i++)
{
if (i<KeyLen) cpKey[i] = (unsigned char) (SwapByteBits(headerPCCheck[i])^pBuffer[i]);
else cpKey[i]=(unsigned char) 0;
}
//Now we can procede and examine if this key is valid.
int checkMax;
if (KeyLen < (32 - KeyLen))
{
checkMax = KeyLen;
}
else
checkMax = (32-KeyLen);
for(int i=0; i<checkMax; i++)
{
if (headerPCCheck[i+KeyLen] != SwapByteBits((unsigned char) (pBuffer[i+KeyLen] ^ cpKey[i%KeyLen])))
{
KeyLen++;
break;
}
if (i == (checkMax-1))
{
KeyFound = 1;
*KEY_LEN=KeyLen+1;
*nError = 0;
return;
}
}
//if it gets through the error checking routine, we have a working key!
}
}
else //platform == XBOX
{
unsigned char datasize[4];
unsigned char headerXBCheck1[] =
{
'\x46', '\x53', '\x42', '\x34', //"FSB4"
'\x01', '\x00', '\x00', '\x00', //Num Samples
'\x00', '\x00', '\x00', '\x00', //Still don't know this part at all
'\x00', '\x00', '\x00', '\x00', //This is filesize-lastpart
'\x00', '\x00', '\x04', '\x00', //Version
'\x20', '\x00', '\x00', '\x00', //Mode
'\x00', '\x00', '\x00', '\x00', //Zeros
'\x00', '\x00', '\x00', '\x00', //Again, zeros...
};
unsigned char headerXBCheck2[] =
{
'\x6d', '\x75',
'\x6c', '\x74', '\x69', '\x63',
'\x68', '\x61', '\x6e', '\x6e',
'\x65', '\x6c', '\x20', '\x73',
'\x6f', '\x75', '\x6e', '\x64',
'\x00', '\x00', '\x00', '\x00',
'\x00', '\x00', '\x00', '\x00',
'\x00', '\x00', '\x00', '\x00',
};
//set encryptedDataSize...
while(!KeyFound)
{
if (KeyLen == 32)
{
*nError = 9;
return;
}
//Copy missing bytes into headerCheck...
//Indexes 50-79...
int header2index = ((50/KeyLen)*KeyLen + 8);
if (header2index < 50)
{
header2index += KeyLen;
}
for(int i=8; i<12; i++)
{
headerXBCheck1[i] = (unsigned char) SwapByteBits((unsigned char) ((SwapByteBits(headerXBCheck2[header2index-50])^(pBuffer[header2index+i-8]))^(pBuffer[i])));
}
//swap((swap(plain) xor cipher) xor cipher) = plain.
unsigned char dataOffset [4];
for(int i=0; i<4>-1; i--)
{
int getByte = dataOffset[i];
if (getByte <0>-1; i--)
{
int cursub = (datacarry / (int) (pow(16.0, i*2)));
datasize[i] = (unsigned char) cursub;
datacarry -= (cursub* (int) pow(16.0, i*2));
}
for(int i=0; i<4; i++)
{
headerXBCheck1[i+12] = datasize[i];
}
for(int i=0; i<KeyLen; i++)
{
cpKey[i] = (unsigned char) (SwapByteBits(headerXBCheck1[i])^pBuffer[i]);
}
//Now we can procede and examine if this key is valid.
int checkMax;
if (KeyLen < (32 - KeyLen))
{
checkMax = KeyLen;
}
else checkMax = (32-KeyLen);
for(int i=0; i<checkMax; i++)
{
if (headerXBCheck1[i+KeyLen] != SwapByteBits((unsigned char) (pBuffer[i+KeyLen] ^ cpKey[i%KeyLen])))
{
KeyLen++;
break;
}
if (i == (checkMax-1))
{
KeyFound = 1;
*KEY_LEN=KeyLen+1;
*nError = 0;
return;
}
}
//if it gets through the error checking routine, we have a working key!
}
*nError = 9;
return;
}
}
char SwapByteBits(unsigned char cInput)
{
unsigned char nResult=0;
for(int i=0; i<8; i++)
{
nResult = nResult <<1>> 1;
}
return (nResult);
}
int main(int argc, char* argv[])
{
int KEY_LEN;
int nError = 0;
int nLoopIdx = 0;
int i = 0;
int nBufferSize = 0;
int Platform;
struct _stat fileStat;
FILE* inFile = NULL;
FILE* outFile = NULL;
unsigned char* pBuffer;
unsigned char* pInput;
unsigned char cpKey[34];
printf ("Guitar Hero Series XEN Drcryptor)\n");
printf ("--------------------------------\n");
printf ("\n");
// Check params
if ((argc != 4)||((argv[1][1]!='x')&&(argv[1][1]!='p')))
{
printf ("Usage: %s <Option> <Input> <Output>\n", argv[0]);
printf ("\n\nWhere option is:\n\n-p for PC\n\n-x for Xbox\n\n");
printf ("Watch out, option is case sensitive!!\n");
return (1);
}
// Set Platform
if(argv[1][1]=='x') Platform=XBOX;
else Platform=PC;
// Get the file size
nError = _stat(argv[2], &fileStat);
if (nError != 0)
{
printf ("Failed to get the input file size!\n");
return (1);
}
nBufferSize = fileStat.st_size;
// Allocate buffer
pBuffer = (unsigned char*)malloc(nBufferSize);
if (pBuffer == NULL)
{
printf ("Failed to allocate input buffer!\n");
return (1);
}
// Open and read the input
inFile = fopen(argv[2], "rb");
if (inFile == NULL)
{
printf ("Failed to open the input file!\n");
return (1);
}
printf ("Reading file (%d Bytes)... ", nBufferSize);
fread(pBuffer, 1, nBufferSize, inFile);
fclose(inFile);
printf ("Done!\n");
// Search for key
printf("Searching for key... \n\n");
KeySearch(cpKey, pBuffer, nBufferSize, &KEY_LEN, Platform, &nError);
if (nError != 0)
{
printf("Failed to get the key!! File cannot be decrypted now...\n");
return -1;
}
else printf("Key found!\n");
// Decrypt
printf ("Decrypting... ");
pInput = pBuffer;
for (nLoopIdx=0; nLoopIdx<nBufferSize; nLoopIdx++)
{
*pInput = SwapByteBits(*pInput ^ cpKey[nLoopIdx % (KEY_LEN-1)]);
pInput++;
}
printf ("Done!\n");
// Open and write the output
outFile = fopen(argv[3], "wb");
if (outFile == NULL)
{
printf ("Failed to open the output file!\n");
return (1);
}
printf ("Writing file... ");
fwrite(pBuffer, 1, nBufferSize, outFile);
fclose (outFile);
printf ("Done!\n");
// The end...
return (0);
free(pBuffer);
}
|
EXE is here: http://www.mediafire.com/file/mtwnfmzeyn3/XENFinal.exe |
|
Back to top |
|
|
Gyuszi999
Joined: 06 Aug 2009 Posts: 9
|
Posted: Fri Dec 18, 2009 1:08 am Post subject: correction |
|
|
LOL... the forum doesn't show correctly my code:
#include <sys>
#include <sys>
that's the correct, I don't know why isn't it showing the same...
Meanwhile, I found a XEN (rockshow_1.fsb.xen) that none of the XEN decryptors work with :S:S |
|
Back to top |
|
|
Enet4
Joined: 10 Sep 2009 Posts: 29
|
Posted: Wed Dec 23, 2009 12:27 pm Post subject: |
|
|
Now that GHWT PC was cancelled for a North American release, do you think there's still a chance to have a fully functional custom song system? We'll barely have any help from them. |
|
Back to top |
|
|
az.ajay
Joined: 04 Jun 2009 Posts: 26 Location: Mandvi-Kutch, India
|
Posted: Sat Dec 26, 2009 5:32 pm Post subject: |
|
|
Hello everyone. Please excuse for my poor English.
I have Band hero's songs, and every song has 4 tracks and 1 midi file. Means drums, guitar, rhythm and vocals, 4 separate tracks for 1 song and 1 midi file. But I don't know how to add them in game.
I'm success in adding 1 song file, but here are 4 tracks.
Please help me how did I add these files in game? |
|
Back to top |
|
|
danman2626
Joined: 19 Dec 2009 Posts: 51
|
Posted: Fri Mar 12, 2010 1:03 am Post subject: |
|
|
customs for GH WT? fuckin sweet*thumbs up*complicated as all hell procces tho :O _________________
ta hell with the warranty |
|
Back to top |
|
|
TheKaleb0228
Joined: 21 Mar 2010 Posts: 13
|
Posted: Sat May 08, 2010 1:28 pm Post subject: |
|
|
Could you use RB1 midis with RawkTour? |
|
Back to top |
|
|
HunterXyron1134
Joined: 06 Dec 2008 Posts: 326 Location: Hiding in a taco.
|
Posted: Sun May 30, 2010 1:46 am Post subject: |
|
|
Enet4 wrote: | Now that GHWT PC was cancelled for a North American release, do you think there's still a chance to have a fully functional custom song system? We'll barely have any help from them. |
???? Amazon says its In stock and shipping for PC version. If I didnt import my copy like a year ago, I would buy it from here. _________________
My Youtube | iPhone RockBand Customs Research | My Twitter, with my GH/RB updates!
SThorpe wrote: |
so did anyone get to touch Matt's Banstick? O_o
EviLize wrote: |
Yeah, while he was playing pop'n I was playing around with it for a little bit. |
|
|
|
Back to top |
|
|
ddavid007
Joined: 31 Aug 2008 Posts: 26
|
Posted: Mon May 31, 2010 12:37 am Post subject: |
|
|
So, I can convert any DLC RockBand 2 song into GH:WT for PC?
If yes, then it's great. I would play any DLC I like without J-Tag my Xbox360 |
|
Back to top |
|
|
adstermoore
Joined: 11 Oct 2009 Posts: 117 Location: Isle of Wight, UK
|
Posted: Thu Jun 03, 2010 12:29 pm Post subject: |
|
|
Edit: not to worry I've worked it out now
Last edited by adstermoore on Thu Sep 02, 2010 8:55 am; edited 1 time in total |
|
Back to top |
|
|
sab999
Joined: 29 Nov 2009 Posts: 3
|
Posted: Wed Jul 28, 2010 9:58 am Post subject: |
|
|
I've got a problem:
How to fix it?? |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Copyright © 2006-2024 ScoreHero, LLC
|
Powered by phpBB
|