GS-Zone

Encriptación dinámica TODOS los paquetes. Ir al Indice

Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación

22

Nota » 04 Feb 2012 00:21

maTih.- escribió:
^[GS]^ escribió:Y que ocurre cuando la encriptación da como resultado Char0, que es el carácter de fin de comando :P
Este es el problema de encriptar TODO... de manera dinámica el error del Char0 siempre estará presente :( tiene que ser una encriptación inteligente y selectiva.
Si manda 3 o 4 veces el mismo comando, se codifica diferente no?


uh no me percaté del vbnullchar, habría que analizar la cadena y procesarlo distinto , voy a ver como me las ingenio (no tube ningún error cuando lo probé, si alguno sabe cuando se genera el nullChar que me avise), por lo otro, si , siempre es distinto aunquesean 50 veces el mismo paquete.

(se ve en el ejemplo que envia M3 (mover direccion sur) 2 veces y son distintas)

Pato escribió:Es una verga el manejo de paquetes de versiones inferiores a la 12, en un corte patería a todos(Incluidos micro cortes client-side). Cada paquee en el cliente se encripta distinto, sin embargo si al servidor llegan 2 juntos se desencriptan iguales. Y la encriptación esa no alarga ningún paquete :p. Lo que tenés que hacer para procesar los paquetes es desencriptar, buscar el nullchar, copiar hasta ahi y procesarlo, después agarrás lo que te sobró y hacés lo mismo.

Acá lo codee, no testee nada así que no aseguro que funcione, pero estoy casi seguro de que si :p.

  1. Public Sub EventoSockRead(ByVal Slot As Integer, ByRef Datos As String)
  2. #If UsarQueSocket = 1 Then
  3. Dim packet As String
  4. Dim pos As Integer
  5. Dim originalData As String
  6.  
  7. originalData = UserList(Slot).RDBuffer & Datos
  8.  
  9. Do While LenB(originalData) > 0
  10.     ' ########## Sumo el contador
  11.     If UserList(Slot).flags.UserLogged Then
  12.         UserList(Slot).security.Count = UserList(Slot).security.Count + 13
  13.     End If
  14.    
  15.     ' ########## Desencripto!.
  16.     Datos = UnEncryptStr(originalData, CStr(UserList(Slot).security.Count))
  17.    
  18.     pos = InStr(1, Datos, ENDC)
  19.     If pos > 0 Then
  20.         packet = mid$(Datos, 1, pos - 1)
  21.        
  22.         If UserList(Slot).ConnID <> -1 Then
  23.             Call HandleData(Slot, packet)
  24.         End If
  25.        
  26.         originalData = mid$(originalData, pos + 1)
  27.     Else
  28.         ' ########## El paquete no llego completo asi que restamos otra vez...
  29.         If UserList(Slot).flags.UserLogged Then
  30.             UserList(Slot).security.Count = UserList(Slot).security.Count - 13
  31.         End If
  32.        
  33.         Exit Do
  34.     End If
  35. Loop
  36.  
  37. UserList(Slot).RDBuffer = originalData
  38. #End If
  39. End Sub


En el cliente resetea el packageCount cuando establés conexión, porque sino si relogueas se va a romper todo. En el cliente te recomiendo que en el sendData hagas if logged then packagecount=packagecount+1

Porque así como está creo que es re explosivo, jaja


concuerdo en varios puntos, sobre todo en el manejo de paquetes que es una mierda, en el setconnected abría que poner un packageCount = 0.

Luuq escribió:idem
Lekasak escribió:Un modulo del AODefender de Saturos no hacia esto?


la verdad no se como era por que cuando me lo quise bajar me tardaba horas y cancelé todo, esto lo hice yo y por lo que verán ni la encriptación codié por que eran las 5 am.

Mannakia escribió:If Encriptacion = 1 Then
Lag = Lag * 2
Cpu = Cpu - Lag
Else
Lag = Cpu
End If

Espero que lo entiendan y empiecen a ingeniar nuevas cosas

Saludos!


que flashaste? hace algún checkeo de cuanto sube el rendimiento del cpu y cuanto lag te puede causar esto, lag * 2????????????????????????

SaturoS escribió:
Lekasak escribió:Un modulo del AODefender de Saturos no hacia esto?



No, era más completo, encriptada server y cliente siempre distinto, pero como dice gs, tambien se fijada en el nullchar para no causar errores.


esto también es SIEMPRE DISTINTO, no veo la diferencia salvo el del caracter nullchar.

una pregunta para alguno , nullChar es el separator de > 12.x no ?

EDIT: Estube aproximadamente 30 minutos mandando comandos caminando , agarrando , equipando y hasta hora ningun error , voy a seguir a ver si sale el problema del nullchar

En protocolo binario no hay un caracter para separar paquetes.

No vas a tener problemas porque primero desencripta y después splitea, pero poné pausa en el server, mandá un par de paquetes juntos y poné play, vas a ver que explota porque va a desencriptar varios paquetes con la misma key. El método tiene que ser como el que puse yo SI O SI, sino vas a tener problemas.
Usuario Registrado
327
Destructor de Mentes [4]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 670
Aportes: 2

Nota » 04 Feb 2012 01:19

Es verdad pato, lo estube probando y sin ir más lejos razoné rápidamente jajaja, probé de la forma que pusiste vos pero no me convenció mucho, además de que no andaba muy bien, ahora lo miro mejor.

Leiste mal, no puse separaDor, puse SeparaTor, ahora lo corroboré , (separator as string * 1 = vbnullchar) :P

LyRan escribió:Buenos Dias amigos y programadores de Gs Zone, Me gustaria pedirle la amabilidad de una ayuda con un cliente editado para mi Ao casero, Osea me explico, yo juego Ao con varios amigos y ellos todos usan cheat y no me gusta eso me gustaria que alguien me ayudara a crear un cliente editado con auto poteo de ambas potas a la ves ya sea que se alla gastado Mana lanzando algun hechis y comienze a potear solo hasta estar completamente el Mana, igual para la salud y poteo rapido para ambos.
mAnco programEr
799
Oraculo [5]
Registrado: Años de membresíaAños de membresía
Ubicación: Bolivia
Mensajes: 2299
Aportes: 109

Nota » 04 Feb 2012 01:30

maTih.- escribió:Es verdad pato, lo estube probando y sin ir más lejos razoné rápidamente jajaja, probé de la forma que pusiste vos pero no me convenció mucho, además de que no andaba muy bien, ahora lo miro mejor.

Leiste mal, no puse separaDor, puse SeparaTor, ahora lo corroboré , (separator as string * 1 = vbnullchar) :P

Lo que dejé no funciona o come mucho cpu? Si es lo primero debe ser una manqueadita, lo hice rápido y no probé nada. Si es lo segundo, es normal por lo verga que es el algorimo culpa del protocolo berreta de la 11.5. También tené en cuenta los otros cambios que propuse(Los del contador de paquetes del cliente). Respecto al separator ese..igual sólo se usa cuando se mandan listas de cosas como la lista de users o la de npcs del entrenador de bander, no se usa para parsear paquetes ni nada de eso.
Usuario Registrado
327
Destructor de Mentes [4]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 670
Aportes: 2

Nota » 04 Feb 2012 03:00

Ni me molesto en poner esto no?.

Imagen
Intento de Programer
306
Oraculo [1]
Registrado: Años de membresía
Mensajes: 1127
Aportes: 10

Nota » 04 Feb 2012 05:02

no laguea tanto envio de paquetes no? (corriganme porque vieron que no tengo mucha idea sobre la programación, resien empiezo prácticamente :P)

Imagen

Ilaisa
<Aprendiendo a Programar>
227
Newbie [4]
Registrado: Diciembre 2011
Mensajes: 128

Nota » 04 Feb 2012 14:05

Lekasak escribió:Un modulo del AODefender de Saturos no hacia esto?


Se,

Si ahí algo que amo, es ayudar sin recibir nada a cambio.

Imagen
Web master, Foro, Maper
141
Newbie [5]
Registrado: Octubre 2011
Ubicación: DexonAO
Mensajes: 154

Nota » 04 Feb 2012 17:36

Pato escribió:
maTih.- escribió:Es verdad pato, lo estube probando y sin ir más lejos razoné rápidamente jajaja, probé de la forma que pusiste vos pero no me convenció mucho, además de que no andaba muy bien, ahora lo miro mejor.

Leiste mal, no puse separaDor, puse SeparaTor, ahora lo corroboré , (separator as string * 1 = vbnullchar) :P

Lo que dejé no funciona o come mucho cpu? Si es lo primero debe ser una manqueadita, lo hice rápido y no probé nada. Si es lo segundo, es normal por lo verga que es el algorimo culpa del protocolo berreta de la 11.5. También tené en cuenta los otros cambios que propuse(Los del contador de paquetes del cliente). Respecto al separator ese..igual sólo se usa cuando se mandan listas de cosas como la lista de users o la de npcs del entrenador de bander, no se usa para parsear paquetes ni nada de eso.


es lo primero :P , ahora me pongo a mirar el sub que dejaste, (ya lo habia testiado pero no funcionaba)

LyRan escribió:Buenos Dias amigos y programadores de Gs Zone, Me gustaria pedirle la amabilidad de una ayuda con un cliente editado para mi Ao casero, Osea me explico, yo juego Ao con varios amigos y ellos todos usan cheat y no me gusta eso me gustaria que alguien me ayudara a crear un cliente editado con auto poteo de ambas potas a la ves ya sea que se alla gastado Mana lanzando algun hechis y comienze a potear solo hasta estar completamente el Mana, igual para la salud y poteo rapido para ambos.
mAnco programEr
799
Oraculo [5]
Registrado: Años de membresíaAños de membresía
Ubicación: Bolivia
Mensajes: 2299
Aportes: 109

Anterior

Volver a AO 0.11.5

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados