def connect(): ip = nip.get() global tcp, f_config, inj tcp = TCPGecko(ip) x = tcp.readmem(name_ptr, 20) x = str_end(x, 0) print(x) tcp.pokemem(0x1076f7a8, 0x000000FF) temp_vars = [] ShowStats() change_text("^2Connected to NexoCube Mod Injector") inj.config(state=NORMAL) f_config.seek(0, 0) f_config.write(ip) f_config.close()
print( "\nEnter you Wii U IP Address: (Or keep it blank to use your saved one.)" ) else: print("\nEnter you Wii U IP Address:") ip = raw_input(">> ") or sav_ip tcp = TCPGecko(ip) save = open("./SAV_IP", "w") save.write(ip) save.close() diff = 0x0 if hexlify(tcp.readmem(0x12CDADA0, 4)) == "000003f2": #Loadiine and Geckiine diff = 0x0 elif hexlify(tcp.readmem(0x12CDCDA0, 4)) == '000003f2': #Elf TCPGecko w/o codehandler diff = 0x2000 elif hexlify(tcp.readmem( 0x12CE2DA0, 4)) == '000003f2': #Something, it's there but I'm not sure diff = 0x8000 elif hexlify(tcp.readmem(0x12CE3DA0, 4)) == '000003f2': #Codehandler diff = 0x9000 print("codehandler") tcp.pokemem(0x12BA71C8, 0x00000004) tcp.pokemem(0x12BC4EF0, 0x00000004) tcp.pokemem(0x12BD8EF0, 0x00000004) tcp.pokemem(0x12CD2AC0, 0x0000697A)
import sys, os import struct sys.path.append(os.path.abspath('../pygecko')) from tcpgecko import TCPGecko wiiu_addr = '192.168.0.133' print '> Connecting to Wii U...' g = TCPGecko(wiiu_addr) print '> Connected to Wii U' addr_base = 0x1C3B2460 num_equip = 100 num_bytes = num_equip*24 # each equip uses 6 words bytes_raw = g.readmem(addr_base, num_bytes) num_equip_read = len(bytes_raw)/24 for equip_i in xrange(num_equip_read): offset = equip_i*24 addr_curr = addr_base + offset bytes_curr_equip = bytes_raw[offset:(offset+24)] wv = struct.unpack('>IIIIII', bytes_curr_equip) equip_empty = (wv[0] == 0 and wv[1] == 0 and wv[2] == 0) if equip_empty: print '%08X (%03d): EMPTY' % (addr_curr, equip_i+1) else: print '%08X (%03d): %08X %08X %08X %08X %08X %08X' % \ (addr_curr, equip_i+1, wv[0], wv[1], wv[2], wv[3], wv[4], wv[5]) g.s.close() print '> Disconnected from Wii U'
with open('../codes/xcx_item_id_v1.0.1e.txt', 'r') as f: (item_db, item_db_lines, item_types) = parse_item_db(f.read()) print '> Connecting to Wii U...' g = TCPGecko(wiiu_addr) print '> Connected to Wii U' num_items_max = (addr_last_slot - addr_first_slot) / slot_num_bytes num_items_found = 0 for slot_i in xrange(num_items_max): # Read and parse item from memory offset = slot_i * slot_num_bytes addr_curr = addr_first_slot + offset print '0x%08X (Slot %03d):' % (addr_curr, slot_i + 1), word_curr = struct.unpack('>I', g.readmem(addr_curr, 4))[0] type_val, id_val, amount = parse_item_word(word_curr) if type_val == 0: print 'EMPTY' continue elif type_val != item_type_val: print 'UNEXPECTED ITEM TYPE (%02X)' % type_val continue num_items_found += 1 # Look up item in DB item_word_val = form_item_word(type_val, id_val, 0) item = None if item_word_val in item_db: item = item_db[item_word_val]
class MyWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): QtWidgets.QMainWindow.__init__(self, parent) self.ui = gui.Ui_MainWindow() self.ui.setupUi(self) self.ui.pushButton_3.clicked.connect(self.connection) self.ui.pushButton_2.clicked.connect(self.disconnection) self.ui.pushButton_6.clicked.connect(self.getStats) self.ui.pushButton_5.clicked.connect(self.applyStats) def getStats(self): try: # Level self.ui.spinBox.setValue(self.gecko.readkern(0x12CDC1A8) + 1) # XP self.ui.spinBox_2.setValue(self.gecko.readkern(0x12CDC1A4)) # Rank rank = self.gecko.readkern(0x12CDC1AC) if rank == 0: self.ui.comboBox.setCurrentIndex(0) elif rank == 1: self.ui.comboBox.setCurrentIndex(1) elif rank == 2: self.ui.comboBox.setCurrentIndex(2) elif rank == 3: self.ui.comboBox.setCurrentIndex(3) elif rank == 4: self.ui.comboBox.setCurrentIndex(4) elif rank == 5: self.ui.comboBox.setCurrentIndex(5) elif rank == 6: self.ui.comboBox.setCurrentIndex(6) elif rank == 7: self.ui.comboBox.setCurrentIndex(7) elif rank == 8: self.ui.comboBox.setCurrentIndex(8) elif rank == 9: self.ui.comboBox.setCurrentIndex(9) elif rank == 10: self.ui.comboBox.setCurrentIndex(10) # Rank Points self.ui.spinBox_3.setValue(self.gecko.readkern(0x12CDC1B0)) # Gold self.ui.spinBox_4.setValue(self.gecko.readkern(0x12CDC1A0)) # Sea Snails self.ui.spinBox_5.setValue(self.gecko.readkern(0x12CDC1B4)) # Gender gender = self.gecko.readkern(0x12CD1D90) if gender == 0: self.ui.comboBox_2.setCurrentIndex(0) elif gender == 1: self.ui.comboBox_2.setCurrentIndex(1) elif gender == 2: self.ui.comboBox_2.setCurrentIndex(2) # Eyes eyes = self.gecko.readkern(0x12CD1D98) if eyes == 0: self.ui.comboBox_3.setCurrentIndex(0) elif eyes == 1: self.ui.comboBox_3.setCurrentIndex(1) elif eyes == 2: self.ui.comboBox_3.setCurrentIndex(2) elif eyes == 3: self.ui.comboBox_3.setCurrentIndex(3) elif eyes == 4: self.ui.comboBox_3.setCurrentIndex(4) elif eyes == 5: self.ui.comboBox_3.setCurrentIndex(5) elif eyes == 6: self.ui.comboBox_3.setCurrentIndex(6) # Skin skin = self.gecko.readkern(0x12CD1D94) if skin == 0: self.ui.comboBox_4.setCurrentIndex(0) elif skin == 1: self.ui.comboBox_4.setCurrentIndex(1) elif skin == 2: self.ui.comboBox_4.setCurrentIndex(2) elif skin == 3: self.ui.comboBox_4.setCurrentIndex(3) elif skin == 4: self.ui.comboBox_4.setCurrentIndex(4) elif skin == 5: self.ui.comboBox_4.setCurrentIndex(5) elif skin == 6: self.ui.comboBox_4.setCurrentIndex(6) self.ui.comboBox.setEnabled(True) self.ui.comboBox_2.setEnabled(True) self.ui.comboBox_3.setEnabled(True) self.ui.comboBox_4.setEnabled(True) self.ui.spinBox.setEnabled(True) self.ui.spinBox_2.setEnabled(True) self.ui.spinBox_3.setEnabled(True) self.ui.spinBox_4.setEnabled(True) self.ui.spinBox_5.setEnabled(True) self.ui.pushButton_5.setEnabled(True) QMessageBox.information(self, 'SplatStats', "The statistics have been updated!") except: QMessageBox.critical(self, 'SplatStats', "Reading console data failed!") def disconnection(self): try: self.gecko.s.close() self.ui.lineEdit.setEnabled(True) self.ui.pushButton_3.setEnabled(True) self.ui.pushButton_2.setEnabled(False) self.ui.pushButton_5.setEnabled(False) self.ui.pushButton_6.setEnabled(False) self.ui.comboBox.setEnabled(False) self.ui.comboBox_2.setEnabled(False) self.ui.comboBox_3.setEnabled(False) self.ui.comboBox_4.setEnabled(False) self.ui.spinBox.setEnabled(False) self.ui.spinBox_2.setEnabled(False) self.ui.spinBox_3.setEnabled(False) self.ui.spinBox_4.setEnabled(False) self.ui.spinBox_5.setEnabled(False) QMessageBox.information( self, 'SplatStats', "Disconnection of the console was successful!") except: QMessageBox.critical( self, 'SplatStats', "An error occurred when disconnecting the console!") def connection(self): try: ip = self.ui.lineEdit.text() self.gecko = TCPGecko(ip) except: QMessageBox.critical(self, 'SplatStats', "The connection to the console failed!") return firmVer = self.gecko.getversion() if firmVer == 550: loc = 0x10013C10 elif firmVer < 550 and firmVer >= 532: loc = 0x100136D0 elif firmVer < 532 and firmVer >= 500: loc = 0x10013010 elif firmVer == 410: loc = 0x1000ECB0 else: QMessageBox.critical( self, 'SplatStats', "The version of your wiiu is not compatible with the software. Please update it!" ) return titleID = int(hexlify(self.gecko.readmem(loc, 8)), 16) if titleID == TID_EUR or titleID == TID_USA or titleID == TID_JAP: self.ui.lineEdit.setEnabled(False) self.ui.pushButton_3.setEnabled(False) self.ui.pushButton_2.setEnabled(True) self.ui.pushButton_6.setEnabled(True) QMessageBox.information( self, 'SplatStats', "The connection to " + ip + " was successful!") else: self.gecko.s.close() QMessageBox.critical( self, 'SplatStats', "The connection to the console was successful, but was cut because Splatoon was not launched!" ) def applyStats(self): try: # Level self.gecko.pokemem(0x12CDC1A8, self.ui.spinBox.value() - 1) # XP self.gecko.pokemem(0x12CDC1A4, self.ui.spinBox_2.value()) # Rank self.gecko.pokemem(0x12CDC1AC, self.ui.comboBox.currentIndex()) # Rank Points self.gecko.pokemem(0x12CDC1B0, self.ui.spinBox_3.value()) # Money self.gecko.pokemem(0x12CDC1A0, self.ui.spinBox_4.value()) # Sea Snails self.gecko.pokemem(0x12CDC1B4, self.ui.spinBox_5.value()) # Gender self.gecko.pokemem(0x12CD1D90, self.ui.comboBox_2.currentIndex()) # Eyes self.gecko.pokemem(0x12CD1D98, self.ui.comboBox_3.currentIndex()) # Skin self.gecko.pokemem(0x12CD1D94, self.ui.comboBox_4.currentIndex()) QMessageBox.information( self, 'SplatStats', "The statistics have been changed successfully!") except: QMessageBox.critical( self, 'SplatStats', "An error occurred when changing the values!")
with open('../codes/item_id_v1.0.1e.txt', 'r') as f: (item_db, item_db_lines, item_types) = parse_item_db(f.read()) print '> Connecting to Wii U...' g = TCPGecko(wiiu_addr) print '> Connected to Wii U' num_items_max = (addr_last_slot - addr_first_slot) / slot_num_bytes num_items_found = 0 for slot_i in xrange(num_items_max): # Read and parse item from memory offset = slot_i * slot_num_bytes addr_curr = addr_first_slot + offset print '0x%08X (Slot %03d):' % (addr_curr, slot_i + 1), word_curr = struct.unpack('>I', g.readmem(addr_curr, 4))[0] type_val, id_val, amount = parse_item_word(word_curr) if type_val == 0: print 'EMPTY' continue elif type_val != item_type_val: print 'UNEXPECTED ITEM TYPE (%02X)' % type_val continue num_items_found += 1 # Look up item in DB item_word_val = form_item_word(type_val, id_val, 0) item = None if item_word_val in item_db: item = item_db[item_word_val]