[RELEASE] 9Dragons XOR Encoder

12/13/2013 03:37 saweet#16
item_table.bit is no different in terms of encoding than the other files. Other than that is just a binary file.
12/14/2013 19:45 tero20051#17
Quote:
Originally Posted by saweet View Post
item_table.bit is no different in terms of encoding than the other files. Other than that is just a binary file.
Man can you make an software so we can also unpack the ".XPZ" files? :handsdown:
12/15/2013 19:33 saweet#18
Quote:
Originally Posted by tero20051 View Post
Man can you make an software so we can also unpack the ".XPZ" files? :handsdown:
It's a zipped XP file. Unzip it and you'll find the XP and a XPI. The XPI just contains an index of files that are in the XP. Use QuickBMS to open the XP, and you'll find the patch files.
12/16/2013 05:12 mrkenneth#19
._. not much into 9d anymore but awsome to see you saweet, Miss old times.

MrOfficer.
12/17/2013 12:29 sheik_gray#20
Quote:
Originally Posted by saweet View Post
item_table.bit is no different in terms of encoding than the other files. Other than that is just a binary file.
ive asked a R4G3 Z0N3 and found that info, maybe you can understand that better, and can help us to work with that files:

To be honest those files are not encrypted at all at least server side...
they are simply ascii database that require a binary open and to be treated as binary streams...

Let's do an example for itemtable.bit

you need to open it as binary and define a stream

the first 48 bytes contains the tool that as created the itemtable between each byte there is a null so you have to read 48 bytes and remove all the \x00 (null char)
after those 48 bytes there are a set of numbers
Major Version you need to read an Int16
Minor Version you need to read another Int16
UPDATETIME Unsigned int 64

etc etc

is a binary stream that needs to be read line by line.

in python it should be something like that

f = open("item_table.bit", "rb")
#Set the binary stream
stream = BinaryStream(f)
#Reading header from itemtable
TOOLNAME=stream.readBytes(48).replace('\x00', '')
VERSION1=stream.readInt16()
VERSION2=stream.readInt16()
UPDATETIME=stream.readUInt64()
UPDATETIME2=stream.readUInt64()
UPDATETIME3=stream.readUInt64()
UPDATETIME4=stream.readUInt64()
USERNAME=stream.readBytes(20).replace('\x00', '')

after the main header the tables start... and this is the most complicate section, a lot of tables exist and each table have a different structure based on the kind of items it contains

12/17/2013 23:00 saweet#21
Quote:
Originally Posted by sheik_gray View Post
ive asked a R4G3 Z0N3 and found that info, maybe you can understand that better, and can help us to work with that files:

To be honest those files are not encrypted at all at least server side...
they are simply ascii database that require a binary open and to be treated as binary streams...

Let's do an example for itemtable.bit

you need to open it as binary and define a stream

the first 48 bytes contains the tool that as created the itemtable between each byte there is a null so you have to read 48 bytes and remove all the \x00 (null char)
after those 48 bytes there are a set of numbers
Major Version you need to read an Int16
Minor Version you need to read another Int16
UPDATETIME Unsigned int 64

etc etc

is a binary stream that needs to be read line by line.

in python it should be something like that

f = open("item_table.bit", "rb")
#Set the binary stream
stream = BinaryStream(f)
#Reading header from itemtable
TOOLNAME=stream.readBytes(48).replace('\x00', '')
VERSION1=stream.readInt16()
VERSION2=stream.readInt16()
UPDATETIME=stream.readUInt64()
UPDATETIME2=stream.readUInt64()
UPDATETIME3=stream.readUInt64()
UPDATETIME4=stream.readUInt64()
USERNAME=stream.readBytes(20).replace('\x00', '')

after the main header the tables start... and this is the most complicate section, a lot of tables exist and each table have a different structure based on the kind of items it contains

I started a program that reads item_table.bit a long time ago. Whoever wrote the code above is a retard.

Code:
TOOLNAME=stream.readBytes(48).replace('\x00', '')
^ Idiot doesn't know it's in Unicode

Code:
UPDATETIME=stream.readUInt64()
UPDATETIME2=stream.readUInt64()
UPDATETIME3=stream.readUInt64()
UPDATETIME4=stream.readUInt64()
^ Idiot doesn't know it's a system time struct containing year, month, day of weak, day, hour, minute, second, and millisecond.

Code:
USERNAME=stream.readBytes(20).replace('\x00', '')
^ Again it's unicode. Idiot

Quote:
after the main header the tables start... and this is the most complicate section, a lot of tables exist and each table have a different structure based on the kind of items it contains
Should be "I'm too stupid to figure out the rest. So here's some retard code, it's the easiest part of the file and it's not even right so I'm just wasting everyone's time"

Truth is, this file is not complicated at all. It will just take some time to do, and I don't have any time to give it right now.
12/18/2013 10:25 sheik_gray#22
Quote:
Originally Posted by saweet View Post
I started a program that reads item_table.bit a long time ago. Whoever wrote the code above is a retard.

Code:
TOOLNAME=stream.readBytes(48).replace('\x00', '')
^ Idiot doesn't know it's in Unicode

Code:
UPDATETIME=stream.readUInt64()
UPDATETIME2=stream.readUInt64()
UPDATETIME3=stream.readUInt64()
UPDATETIME4=stream.readUInt64()
^ Idiot doesn't know it's a system time struct containing year, month, day of weak, day, hour, minute, second, and millisecond.

Code:
USERNAME=stream.readBytes(20).replace('\x00', '')
^ Again it's unicode. Idiot



Should be "I'm too stupid to figure out the rest. So here's some retard code, it's the easiest part of the file and it's not even right so I'm just wasting everyone's time"

Truth is, this file is not complicated at all. It will just take some time to do, and I don't have any time to give it right now.
ill be really gratefull if you realease a tool to edit that files like item table and skills, monster ref.
01/04/2014 19:57 PeteSauce#23
bump
08/09/2017 18:17 9dragonsGold#24
Can this tool decrypt lump.dat with another key than A5? I've tried severall but no succes. Maybe It just cannot be done this way. I know It's an old topic but this tool is very interesting and worth to speak about. Saweet maybe can give some hint, can this tool decrypt lump.dat or It cannot?
03/05/2019 23:10 [Terror]#25
Guyz im trying to decrypt CharacterCondition.XMS
i tried using both 9DCryptTool0.1 and XOR Encoder
They both wont allow me decrypt this file, plz help !!!
03/06/2019 15:26 madmerlin3009#26
Quote:
Originally Posted by [Terror] View Post
Guyz im trying to decrypt CharacterCondition.XMS
i tried using both 9DCryptTool0.1 and XOR Encoder
They both wont allow me decrypt this file, plz help !!!
if you aim to be using this on eclipse. Expect account bans and IP blocks