maTih.- escribió:^[GS]^ escribió:Y que ocurre cuando la encriptación da como resultado Char0, que es el carácter de fin de comando
Este es el problema de encriptar TODO... de manera dinámica el error del Char0 siempre estará presentetiene 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.
- Public Sub EventoSockRead(ByVal Slot As Integer, ByRef Datos As String)
- #If UsarQueSocket = 1 Then
- Dim packet As String
- Dim pos As Integer
- Dim originalData As String
- originalData = UserList(Slot).RDBuffer & Datos
- Do While LenB(originalData) > 0
- ' ########## Sumo el contador
- If UserList(Slot).flags.UserLogged Then
- UserList(Slot).security.Count = UserList(Slot).security.Count + 13
- End If
- ' ########## Desencripto!.
- Datos = UnEncryptStr(originalData, CStr(UserList(Slot).security.Count))
- pos = InStr(1, Datos, ENDC)
- If pos > 0 Then
- packet = mid$(Datos, 1, pos - 1)
- If UserList(Slot).ConnID <> -1 Then
- Call HandleData(Slot, packet)
- End If
- originalData = mid$(originalData, pos + 1)
- Else
- ' ########## El paquete no llego completo asi que restamos otra vez...
- If UserList(Slot).flags.UserLogged Then
- UserList(Slot).security.Count = UserList(Slot).security.Count - 13
- End If
- Exit Do
- End If
- Loop
- UserList(Slot).RDBuffer = originalData
- #End If
- 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ó:idemLekasak 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.




327![Destructor de Mentes [4] Destructor de Mentes [4]](./images/ranks/Rango16.gif)
![Oraculo [5] Oraculo [5]](./images/ranks/Rango29.gif)

![Oraculo [1] Oraculo [1]](./images/ranks/Rango25.gif)

![Newbie [4] Newbie [4]](./images/ranks/Rango3.gif)

![Newbie [5] Newbie [5]](./images/ranks/Rango4.gif)
