Neler yeni

Cocos2d oyun lua decrypt (1 Viewer)

Mesajlar
20
Credits
20
Herkese merhabalar iyi forumlar 2 yıldır üzerinde çalıştığım bir konu var Idle Heroes adlı bir oyun hakkında cocos2d oyun motoru ile yapılmış .lua dosyaları xxtea ve xor ile şifrelenmiş *eminim
Herneyse official Idle Heroes çıktıktan sonra birde bu oyunun pvp serveri çıktı .lua dosyalarının şifrelerini buldular ve çözdüler aslında .lua .png .json .plist bu uzantılardaki tüm dosyalar, daha sonra veritabanı ve server side tarafı yazılarak başka bir topluluk platformu üzerinden piyasaya sürerek pvp serverini açtılar.
Aslında şifresini ben çözdüm sadece IDA Pro kullanarak zor değil çünkü büyük birkaç forumda buna dair bir iki konuya rastladım demem o ki koddan fazla anlamadığım için büyük ihtimalle
"XORkey = bytearray" ve byte kısımları ile alakalı çünkü bu python decrypt kodu Idle Heroes pvp için geçerli, tabi official içinde geçerli fakat XORkey ve Byte kısımları official ile aynı değil çünkü xxtea encrypt şifreleri değişik kaynak kod pvp server sahibinde olmadığı için decrypt şifresini değiştiremiyor official ise hemen her güncellemede değiştiriyor ben size python kodunu ve o koda göre şifrelerini vericem ve .lua dosyalarını tabi bu işlerden ülkemizde pek anlayan yok diye düşünüyorum kötü anlamda anlamayın çünkü birkaç yıldır birkaç forumda paylaştım ücretli veya ücretsiz kimse ilgilenmedi herkes luac ile karıştırıyor bunu bu arada ubuntu 18 kullanarak python3 ile bunu kullanabilirsiniz Windows ile denemedim herhalde python cffi kütüphane kurulum hatası veriyordu python kodu içerisinde kütüphane olarak import olmasada cffi kullanıyor tercihim ubuntu ile kullanın umarım anlatabilmişimdir :)


1config-lua-decrypt.zip Idle Heroes Pvp lua
2config-lua-decrypt.zip Idle Heroes Official lua

Not: DOSYALARI SANAL MAKİNADA AÇINIZ

https://www.dosyaupload.com/8cqq https://www.dosyaupload.com/8cqr




1config.lua python şifre çözme


import sys import zlib import os import struct import xxtea import binascii from os import walk file = 'waitnet.lua' XORkey = bytearray([0x1C, 0xA3, 0x4B, 0x13, 0x77, 0x84, 0xAA, 0x3B, 0x2B, 0xB2, 0x23, 0x7B, 0xEE, 0xEF, 0xF2, 0xA0, 0x3B, 0x2B, 0xCC]) headerz = ["DHGAMES","DHZAMES"] xxteakey = "cxxwp5tcPIJ0x90r" def zlibdecompress(data): decomp = zlib.decompress(data) return decomp def zlibcompress(data): compress = zlib.compress(data) return compress def remove_header(data,header): return remove_bytes(data,0,len(header)) def remove_bytes(buffer, start, end): fmt = '%ds %dx %ds' % (start, end-start, len(buffer)-end) # 3 way split return b''.join(struct.unpack(fmt, buffer)) def XOR(data, xorkey): xorData = bytearray() x = 0 for datab in data: if x < len(xorkey): xVal = datab ^ xorkey[x] xorData += xVal.to_bytes(1, 'little') x = x + 1 if x==19: x=8 return xorData def XORxxteaKey(xxteaKey): _new_key = bytearray(16) for indexKey in range(len(xxteaKey)): keyByte = ord(xxteaKey[indexKey]) if ((keyByte - 48) & 0xff) > 9: if ((keyByte - 97)& 0xff) > 25: if ((keyByte - 65)& 0xff) <= 25: keyByte = (keyByte - 62) % 26 + 65 else: keyByte = (keyByte - 83) % 26 + 97 else: keyByte = (keyByte - 45) % 10 + 48 _new_key[indexKey] = keyByte v16 = _new_key[12] v17 = _new_key[5] ^ v16 v18 = v16 ^ v17 _new_key[12] = v18 _new_key[5] = v17 ^ v18 v19 = _new_key[6] v20 = _new_key[1] ^ v19 v21 = v19 ^ v20 _new_key[6] = v21 _new_key[1] = v20 ^ v21 v22 = _new_key[7] v23 = _new_key[15] ^ v22 v24 = v22 ^ v23 _new_key[7] = v24 _new_key[15] = v23 ^ v24 return _new_key def finish_encryption(realfile): clean_data = open(realfile, 'rb').read() zlib_data = zlibcompress(clean_data) xor_key = XORxxteaKey(xxteakey) new_data = bytearray(headerz[1], 'utf8') + zlib_data new_data = xxtea.encrypt(bytes(new_data), bytes(xor_key)) xor_data = XOR(new_data, XORkey) new_data = bytearray(headerz[0], 'utf8') + xor_data realfile = realfile.replace('[d]','') open(realfile, 'wb').write(new_data) def finish_decryption(realfile,file): tmpData = open(realfile, 'rb').read() if any(bytes(header, 'utf8') in tmpData for header in headerz): data = remove_header(open(realfile, 'rb').read(), headerz[0]) xor_data = XOR(data, XORkey) xor_key = XORxxteaKey(xxteakey) new_data = remove_header(xxtea.decrypt(bytes(xor_data), bytes(xor_key)), headerz[1]) final_data = zlibdecompress(new_data) open(realfile.replace(file,'[d]'+file), 'wb').write(final_data) def decrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_decryption(realfile) else: #decrypt all for dir, subdir, files in os.walk('assets/'): for file in files: realfile = os.path.join(dir, file) if (not '[d]' in realfile): finish_decryption(realfile,file) def encrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_encryption(realfile) else: #encrypt all for dir, subdir, files in os.walk('modassets/'): for file in files: realfile = os.path.join(dir, file) if ('[d]' in realfile): finish_encryption(realfile) #encrypt_files() decrypt_files()




2config.lua şifre çözme python kodu

import sys import zlib import os import struct import xxtea import binascii from os import walk file = 'waitnet.lua' XORkey = bytearray([0x1C, 0xA3, 0x4B, 0x13, 0x77, 0x84, 0xAA, 0x3B, 0x2B, 0xB2, 0x23, 0x7B, 0xEE, 0xEF, 0xF2, 0xA0, 0x3B, 0x2B, 0xCC]) headerz = ["DHGAMES","DHZAMES"] xxteakey = "fcjwfJ5Oi4dLsIF1" def zlibdecompress(data): decomp = zlib.decompress(data) return decomp def zlibcompress(data): compress = zlib.compress(data) return compress def remove_header(data,header): return remove_bytes(data,0,len(header)) def remove_bytes(buffer, start, end): fmt = '%ds %dx %ds' % (start, end-start, len(buffer)-end) # 3 way split return b''.join(struct.unpack(fmt, buffer)) def XOR(data, xorkey): xorData = bytearray() x = 0 for datab in data: if x < len(xorkey): xVal = datab ^ xorkey[x] xorData += xVal.to_bytes(1, 'little') x = x + 1 if x==19: x=8 return xorData def XORxxteaKey(xxteaKey): _new_key = bytearray(16) for indexKey in range(len(xxteaKey)): keyByte = ord(xxteaKey[indexKey]) if ((keyByte - 48) & 0xff) > 9: if ((keyByte - 97)& 0xff) > 25: if ((keyByte - 65)& 0xff) <= 25: keyByte = (keyByte - 62) % 26 + 65 else: keyByte = (keyByte - 83) % 26 + 97 else: keyByte = (keyByte - 45) % 10 + 48 _new_key[indexKey] = keyByte v16 = _new_key[12] v17 = _new_key[5] ^ v16 v18 = v16 ^ v17 _new_key[12] = v18 _new_key[5] = v17 ^ v18 v19 = _new_key[6] v20 = _new_key[1] ^ v19 v21 = v19 ^ v20 _new_key[6] = v21 _new_key[1] = v20 ^ v21 v22 = _new_key[7] v23 = _new_key[15] ^ v22 v24 = v22 ^ v23 _new_key[7] = v24 _new_key[15] = v23 ^ v24 return _new_key def finish_encryption(realfile): clean_data = open(realfile, 'rb').read() zlib_data = zlibcompress(clean_data) xor_key = XORxxteaKey(xxteakey) new_data = bytearray(headerz[1], 'utf8') + zlib_data new_data = xxtea.encrypt(bytes(new_data), bytes(xor_key)) xor_data = XOR(new_data, XORkey) new_data = bytearray(headerz[0], 'utf8') + xor_data realfile = realfile.replace('[d]','') open(realfile, 'wb').write(new_data) def finish_decryption(realfile,file): tmpData = open(realfile, 'rb').read() if any(bytes(header, 'utf8') in tmpData for header in headerz): data = remove_header(open(realfile, 'rb').read(), headerz[0]) xor_data = XOR(data, XORkey) xor_key = XORxxteaKey(xxteakey) new_data = remove_header(xxtea.decrypt(bytes(xor_data), bytes(xor_key)), headerz[1]) final_data = zlibdecompress(new_data) open(realfile.replace(file,'[d]'+file), 'wb').write(final_data) def decrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_decryption(realfile) else: #decrypt all for dir, subdir, files in os.walk('assets/'): for file in files: realfile = os.path.join(dir, file) if (not '[d]' in realfile): finish_decryption(realfile,file) def encrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_encryption(realfile) else: #encrypt all for dir, subdir, files in os.walk('modassets/'): for file in files: realfile = os.path.join(dir, file) if ('[d]' in realfile): finish_encryption(realfile) #encrypt_files() decrypt_files()
 
Moderatör tarafında düzenlendi:

W1se

Meee🐏
ez152
Mesajlar
1,131
Credits
20
Herkese merhabalar iyi forumlar 2 yıldır üzerinde çalıştığım bir konu var Idle Heroes adlı bir oyun hakkında cocos2d oyun motoru ile yapılmış .lua dosyaları xxtea ve xor ile şifrelenmiş *eminim
Herneyse official Idle Heroes çıktıktan sonra birde bu oyunun pvp serveri çıktı .lua dosyalarının şifrelerini buldular ve çözdüler aslında .lua .png .json .plist bu uzantılardaki tüm dosyalar, daha sonra veritabanı ve server side tarafı yazılarak başka bir topluluk platformu üzerinden piyasaya sürerek pvp serverini açtılar.
Aslında şifresini ben çözdüm sadece IDA Pro kullanarak zor değil çünkü büyük birkaç forumda buna dair bir iki konuya rastladım demem o ki koddan fazla anlamadığım için büyük ihtimalle
"XORkey = bytearray" ve byte kısımları ile alakalı çünkü bu python decrypt kodu Idle Heroes pvp için geçerli, tabi official içinde geçerli fakat XORkey ve Byte kısımları official ile aynı değil çünkü xxtea encrypt şifreleri değişik kaynak kod pvp server sahibinde olmadığı için decrypt şifresini değiştiremiyor official ise hemen her güncellemede değiştiriyor ben size python kodunu ve o koda göre şifrelerini vericem ve .lua dosyalarını tabi bu işlerden ülkemizde pek anlayan yok diye düşünüyorum kötü anlamda anlamayın çünkü birkaç yıldır birkaç forumda paylaştım ücretli veya ücretsiz kimse ilgilenmedi herkes luac ile karıştırıyor bunu bu arada ubuntu 18 kullanarak python3 ile bunu kullanabilirsiniz Windows ile denemedim herhalde python cffi kütüphane kurulum hatası veriyordu python kodu içerisinde kütüphane olarak import olmasada cffi kullanıyor tercihim ubuntu ile kullanın umarım anlatabilmişimdir :)


1config-lua-decrypt.zip Idle Heroes Pvp lua
2config-lua-decrypt.zip Idle Heroes Official lua

Not: DOSYALARI SANAL MAKİNADA AÇINIZ

https://www.dosyaupload.com/8cqq https://www.dosyaupload.com/8cqr




1config.lua python şifre çözme


import sys import zlib import os import struct import xxtea import binascii from os import walk file = 'waitnet.lua' XORkey = bytearray([0x1C, 0xA3, 0x4B, 0x13, 0x77, 0x84, 0xAA, 0x3B, 0x2B, 0xB2, 0x23, 0x7B, 0xEE, 0xEF, 0xF2, 0xA0, 0x3B, 0x2B, 0xCC]) headerz = ["DHGAMES","DHZAMES"] xxteakey = "cxxwp5tcPIJ0x90r" def zlibdecompress(data): decomp = zlib.decompress(data) return decomp def zlibcompress(data): compress = zlib.compress(data) return compress def remove_header(data,header): return remove_bytes(data,0,len(header)) def remove_bytes(buffer, start, end): fmt = '%ds %dx %ds' % (start, end-start, len(buffer)-end) # 3 way split return b''.join(struct.unpack(fmt, buffer)) def XOR(data, xorkey): xorData = bytearray() x = 0 for datab in data: if x < len(xorkey): xVal = datab ^ xorkey[x] xorData += xVal.to_bytes(1, 'little') x = x + 1 if x==19: x=8 return xorData def XORxxteaKey(xxteaKey): _new_key = bytearray(16) for indexKey in range(len(xxteaKey)): keyByte = ord(xxteaKey[indexKey]) if ((keyByte - 48) & 0xff) > 9: if ((keyByte - 97)& 0xff) > 25: if ((keyByte - 65)& 0xff) <= 25: keyByte = (keyByte - 62) % 26 + 65 else: keyByte = (keyByte - 83) % 26 + 97 else: keyByte = (keyByte - 45) % 10 + 48 _new_key[indexKey] = keyByte v16 = _new_key[12] v17 = _new_key[5] ^ v16 v18 = v16 ^ v17 _new_key[12] = v18 _new_key[5] = v17 ^ v18 v19 = _new_key[6] v20 = _new_key[1] ^ v19 v21 = v19 ^ v20 _new_key[6] = v21 _new_key[1] = v20 ^ v21 v22 = _new_key[7] v23 = _new_key[15] ^ v22 v24 = v22 ^ v23 _new_key[7] = v24 _new_key[15] = v23 ^ v24 return _new_key def finish_encryption(realfile): clean_data = open(realfile, 'rb').read() zlib_data = zlibcompress(clean_data) xor_key = XORxxteaKey(xxteakey) new_data = bytearray(headerz[1], 'utf8') + zlib_data new_data = xxtea.encrypt(bytes(new_data), bytes(xor_key)) xor_data = XOR(new_data, XORkey) new_data = bytearray(headerz[0], 'utf8') + xor_data realfile = realfile.replace('[d]','') open(realfile, 'wb').write(new_data) def finish_decryption(realfile,file): tmpData = open(realfile, 'rb').read() if any(bytes(header, 'utf8') in tmpData for header in headerz): data = remove_header(open(realfile, 'rb').read(), headerz[0]) xor_data = XOR(data, XORkey) xor_key = XORxxteaKey(xxteakey) new_data = remove_header(xxtea.decrypt(bytes(xor_data), bytes(xor_key)), headerz[1]) final_data = zlibdecompress(new_data) open(realfile.replace(file,'[d]'+file), 'wb').write(final_data) def decrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_decryption(realfile) else: #decrypt all for dir, subdir, files in os.walk('assets/'): for file in files: realfile = os.path.join(dir, file) if (not '[d]' in realfile): finish_decryption(realfile,file) def encrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_encryption(realfile) else: #encrypt all for dir, subdir, files in os.walk('modassets/'): for file in files: realfile = os.path.join(dir, file) if ('[d]' in realfile): finish_encryption(realfile) #encrypt_files() decrypt_files()




2config.lua şifre çözme python kodu

import sys import zlib import os import struct import xxtea import binascii from os import walk file = 'waitnet.lua' XORkey = bytearray([0x1C, 0xA3, 0x4B, 0x13, 0x77, 0x84, 0xAA, 0x3B, 0x2B, 0xB2, 0x23, 0x7B, 0xEE, 0xEF, 0xF2, 0xA0, 0x3B, 0x2B, 0xCC]) headerz = ["DHGAMES","DHZAMES"] xxteakey = "fcjwfJ5Oi4dLsIF1" def zlibdecompress(data): decomp = zlib.decompress(data) return decomp def zlibcompress(data): compress = zlib.compress(data) return compress def remove_header(data,header): return remove_bytes(data,0,len(header)) def remove_bytes(buffer, start, end): fmt = '%ds %dx %ds' % (start, end-start, len(buffer)-end) # 3 way split return b''.join(struct.unpack(fmt, buffer)) def XOR(data, xorkey): xorData = bytearray() x = 0 for datab in data: if x < len(xorkey): xVal = datab ^ xorkey[x] xorData += xVal.to_bytes(1, 'little') x = x + 1 if x==19: x=8 return xorData def XORxxteaKey(xxteaKey): _new_key = bytearray(16) for indexKey in range(len(xxteaKey)): keyByte = ord(xxteaKey[indexKey]) if ((keyByte - 48) & 0xff) > 9: if ((keyByte - 97)& 0xff) > 25: if ((keyByte - 65)& 0xff) <= 25: keyByte = (keyByte - 62) % 26 + 65 else: keyByte = (keyByte - 83) % 26 + 97 else: keyByte = (keyByte - 45) % 10 + 48 _new_key[indexKey] = keyByte v16 = _new_key[12] v17 = _new_key[5] ^ v16 v18 = v16 ^ v17 _new_key[12] = v18 _new_key[5] = v17 ^ v18 v19 = _new_key[6] v20 = _new_key[1] ^ v19 v21 = v19 ^ v20 _new_key[6] = v21 _new_key[1] = v20 ^ v21 v22 = _new_key[7] v23 = _new_key[15] ^ v22 v24 = v22 ^ v23 _new_key[7] = v24 _new_key[15] = v23 ^ v24 return _new_key def finish_encryption(realfile): clean_data = open(realfile, 'rb').read() zlib_data = zlibcompress(clean_data) xor_key = XORxxteaKey(xxteakey) new_data = bytearray(headerz[1], 'utf8') + zlib_data new_data = xxtea.encrypt(bytes(new_data), bytes(xor_key)) xor_data = XOR(new_data, XORkey) new_data = bytearray(headerz[0], 'utf8') + xor_data realfile = realfile.replace('[d]','') open(realfile, 'wb').write(new_data) def finish_decryption(realfile,file): tmpData = open(realfile, 'rb').read() if any(bytes(header, 'utf8') in tmpData for header in headerz): data = remove_header(open(realfile, 'rb').read(), headerz[0]) xor_data = XOR(data, XORkey) xor_key = XORxxteaKey(xxteakey) new_data = remove_header(xxtea.decrypt(bytes(xor_data), bytes(xor_key)), headerz[1]) final_data = zlibdecompress(new_data) open(realfile.replace(file,'[d]'+file), 'wb').write(final_data) def decrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_decryption(realfile) else: #decrypt all for dir, subdir, files in os.walk('assets/'): for file in files: realfile = os.path.join(dir, file) if (not '[d]' in realfile): finish_decryption(realfile,file) def encrypt_files(file = ''): if len(file)>0: realfile = file if os.path.exists(realfile):finish_encryption(realfile) else: #encrypt all for dir, subdir, files in os.walk('modassets/'): for file in files: realfile = os.path.join(dir, file) if ('[d]' in realfile): finish_encryption(realfile) #encrypt_files() decrypt_files()
es
 

Bu konuyu görüntüleyen kullanıcılar