[RELEASE] 9Dragons XSD Editor

12/04/2013 05:39 saweet#76
Update
  • Saving uses a temp file to prevent loss of data when an error occurs while writing the XSD. A backup of the original file is also created
  • Fixed an infinite recursion condition in Replace All
  • Saving an encrypted XSD will create an XML file which is loaded next time you open the XSD. No longer have to type in the keys each time

Thanks witek1992 and nervetnova for bug reports.
12/04/2013 10:56 nervetnova#77
Quote:
Originally Posted by saweet View Post
Update
  • Saving uses a temp file to prevent loss of data when an error occurs while writing the XSD. A backup of the original file is also created
  • Fixed an infinite recursion condition in Replace All
  • Saving an encrypted XSD will create an XML file which is loaded next time you open the XSD. No longer have to type in the keys each time

Thanks witek1992 and nervetnova for bug reports.
Saweet, could you recheck the Replace all ? i've test on twice PCs (windows 8 and windows 7) it's still not not responding.
12/04/2013 17:38 saweet#78
Quote:
Originally Posted by nervetnova View Post
Saweet, could you recheck the Replace all ? i've test on twice PCs (windows 8 and windows 7) it's still not not responding.
Check your PMs
12/05/2013 20:06 saweet#79
Update
  • Fixed save issue where you couldn't save across different volumes
  • Rewrote Replace All to work better for large workloads. No longer piggybacks Find mechanics to reduce CPU I/O

Thanks nervetnova for reporting these problems
12/14/2013 00:02 godofsex#80
[Only registered and activated users can see links. Click Here To Register...]

I can't open NDTEXTDB.XSD
what wrong?
12/14/2013 02:18 saweet#81
Update
  • Auto-detects number of languages the XSD supports

Small update, but an important one. The editor will now try to determine the number of languages in the XSD. If it fails it will use defaults and attempt to open it anyway. It is possible for auto-detect to find a false positive, in this case you're currently out of luck.

TLDR; looks the same, acts the same, can open more XSDs than before including GamesCampus's
12/14/2013 09:43 godofsex#82
@Saweet
u know cipher key for TH =Thailand
03/03/2014 19:13 jadovski512#83
is it possible to change the effect of things in game??
03/04/2014 13:21 witek1992#84
Quote:
Originally Posted by jadovski512 View Post
is it possible to change the effect of things in game??
Using XSD editor? No.
03/08/2014 00:52 dudu0014#85
how can i decrypt a xsd file to use in old client?
e.g
newest xsd gc file to use in my p. server
04/11/2014 12:29 matmeoviet#86
you can find the NDTEXTDB_UK.XSD cipher keys?
04/12/2014 12:44 saweet#87
Quote:
Originally Posted by matmeoviet View Post
you can find the NDTEXTDB_UK.XSD cipher keys?
Code:
08 10
04/28/2014 17:58 dudu0014#88
how can i find the cipher key from a xsd?
04/28/2014 22:33 witek1992#89
@dudu0014

Quote:
Originally Posted by saweet View Post
Thanks everyone for sharing keys.



The 2nd key is obvious because it's only used in 2 byte characters and only ever used in the 2nd byte position. They use XOR encryption so it becomes very obvious when null is XOR'd, because 0 XOR N = N. Thus N is the 2nd key.

The 1st key can be learned by knowing the most common character in a string, with that you can guess the possible keys. What I did was grab all the table names in both an unencrypted and an encrypted XSD and compared string length to find matches as possible candidates for the real value. MobModel_XMS was a good choice because we have 3 Ms in a single short string. With that I found ZxuZxsr{HOZD of the same string length in the encrypted file. Notice the pattern, 3 Zs in the same position?

If you know Z (5A) in a string is really M (4D), all we have to do is figure out what possible XORs of 4D will equal 5A to get a list of possible keys. I did this in python and had the key in a fraction of a second:

Code:
>>> [hex(i) for i in range(256) if 0x4d ^ i == 0x5a]
['0x17']
Lets see what happens (ciphertext is "ZxuZxsr{HOZD" in hex)
Code:
>>> ciphertext = bytearray([0x5A, 0x78, 0x75, 0x5A, 0x78, 0x73, 0x72, 0x7B, 0x48, 0x4F, 0x5A, 0x44])
>>> bytearray([ciphertext[i] ^ 0x17 for i in range(len(ciphertext))])
bytearray(b'MobModel_XMS')
>>>
Viola
05/04/2014 07:33 dudu0014#90
can i merge 2 xsd with different cipher keys?
like VN with US?