-
Notifications
You must be signed in to change notification settings - Fork 0
/
Main.py
186 lines (151 loc) · 5 KB
/
Main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# Import
from os import close
from tcpgecko import TCPGecko
# Def
def dump():
# Crée le fichier binaire
f = open("dumpshex.hex", "wb")
# Demande les infos pour le dump
print("---Dump :---")
print("Start address :")
startAddressDump = str(input())
print("End address :")
endAddressDump = str(input())
print("")
print("The dump will start. Please wait")
# Récupère les valeurs de la ram à l'endroit séléctionné
dumpValue = tcp.readmem(int(startAddressDump, 16), int(endAddressDump, 16) - int(startAddressDump, 16) +0x4)
# Écrit les valeurs
f.write(dumpValue)
# Ferme le fichier pour sauvegarder les valeurs
f.close()
# Indique que ça à marcher
print("")
print("Dump finish !")
print("You can open your file with a hex editor (for example with HxD).")
def clear():
# Demande les infos pour le clear
print("---Clear :---")
print("Start address :")
startAddressClear = str(input())
print("End address :")
endAddressClear = str(input())
print("")
print("The clear will start. Please wait")
# Mettre à 0 les valeurs de la ram à l'endroit séléctionné
i = int(int(endAddressClear, 16) - int(startAddressClear, 16) +0x4)
for i in range(i):
tcp.pokemem(int(startAddressClear, 16) + i, 0x00000000)
i = i - 4
# Indique que ça à marcher
print("")
print("Clear finish !")
def dumpAndClear():
# Crée le fichier binaire
f = open("dumpshex.hex", "wb")
# Demande les infos pour le dump
print("---Dump and clear :---")
print("Start address :")
startAddress = str(input())
print("End address :")
endAddress = str(input())
print("")
print("The dump will start. Please wait")
# Récupère les valeurs de la ram à l'endroit séléctionné
dumpValue = tcp.readmem(int(startAddress, 16), int(endAddress, 16) - int(startAddress, 16) +0x4)
# Écrit les valeurs
f.write(dumpValue)
# Ferme le fichier pour sauvegarder les valeurs
f.close()
# Indique que ça à marcher
print("")
print("Dump finish !")
print("You can open your file with a hex editor (for example with HxD).")
# Commence le clear
print("")
print("The clear will start. Please wait")
# Mettre à 0 les valeurs de la ram à l'endroit séléctionné
i = int(int(endAddress, 16) - int(startAddress, 16) +0x4)
for i in range(i):
tcp.pokemem(int(startAddress, 16) + i, 0x00000000)
i = i - 4
# Indique que ça à marcher
print("")
print("Clear finish !")
print("")
print("The dump and the clear are finish !")
# Affiche le message de bienvenue
print("Welcome in Wii U Ram dump and clear by VCoding and nt games.")
print("")
# Enregistre l'ip
print("Enter your IP please :")
ip = str(input())
# Essaye de se connecter à tcpgecko
print("")
print("The application will try to connect, you will be notified when you are connected.")
tcp = TCPGecko(ip)
connected = bool(True)
print("")
print("You are well connected !")
# Propose les choix
print("")
print("")
print("")
while connected == True:
print("You now have 3 choices :")
print("1 - Dump : Allows you to download all the values from one address to another in an .hex file")
print("2 - Clear : Allows you to delete (set to 0) all values from one address to another")
print("3 - Dump and clear : Allows to dump the values from one address to another, then to clear the values from one address to another")
print("")
print("Write the number or the name of the choice.")
# Enregistre le choice
choice = str(input())
print("")
# Si le choix est dump, sa lance le dump
if choice == "1":
dump()
if choice == "Dump":
dump()
if choice == "dump":
dump()
# Si le choix est clear, sa lance le clear
if choice == "2":
clear()
if choice == "Clear":
clear()
if choice == "clear":
clear()
# Si le choix est dump, sa lance le dump
if choice == "3":
dumpAndClear()
if choice == "Dump and clear":
dumpAndClear()
if choice == "dump and clear":
dumpAndClear()
## Si la commande n'existe pas ou qu'il y a une erreur
#else:
# print("Error on the choice of the command !")
# Demande si il veut continuer
print("")
print("Do you want to continue ?")
print("Yes or No")
# Enregistre le choice
continueChoice = str(input())
print("")
# Si le choix est non
if continueChoice == "No":
# Se deconnecte
tcp.s.close()
# Ferme le program
print("You are disconnected. Thanks for using Wii U Ram dump and clear.")
print("Goodbye...")
close()
# Si le choix est non
if continueChoice == "no":
# Se deconnecte
tcp.s.close()
# Ferme le program
print("You are disconnected. Thanks for using Wii U Ram dump and clear.")
print("Goodbye...")
exit()
# Sinon la boucle recommence