Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rub'n

#641
Cita de: El_Andaluz en  7 Febrero 2019, 23:32 PM
A mi tampoco me gusta la política pero si mi país lo esta pasando mal y vivo allí me preocuparía bastante la situación de ese país y mas cuando nos afectas a los demás porque al final el conflicto que tenéis en vuestro país se ha vuelto internacional y aquí en España tenemos mucho Venezolanos y nos cuenta lo mal que lo pasan en su país, quieras que no algo nos afecta aunque no seamos de allí.

Si comparto una noticia como que ha llegado la ayuda a tu país lo que menos me preocupa es el casco de la policía que aparece en la foto, lo que me preocuparía es como pasarla a mi país esa ayuda.



Pues si tal cual, cuando llegue a Madrid, me toco muchos meses trabajar en glovo, uber, solo faltaba delivero (y en bicicleta, menos mal que tengo una de ciclismo, mas rápida que una montañera), ese bolso de mi foto es de deliveroo, prestado porque no tenia, que es la que según paga mas el cochino dinero $€  >:D , pero el tema es que, tengo muchisisimos amigos en glovo Venezolanos  :-\ , y pues, muchos de ellos seguirán en eso, y cada ves que los veo, digo mi jodido dios, dale paciencia a esa gente y que lo malo en sus mentes,no se les cuele dog :xD...
#642
Claro, no me niego tampoco a las clases Atómicas, seria ilógico que no me diera cuenta del resultado si en el mensaje puse el output donde se ve clarisimamente el 10

Ese ejemplo lo puse mas bien pensando a futuro en fileteruso, porque estoy 100% que le tocara aplicar un lock  ::)

dog.


#643
Cita de: colcrt en  8 Febrero 2019, 01:14 AM
rub'n muy interesante, una pregunta como hace para detectar ese tipo de malware??

Pues obviamente por el código, siempre y cuando no este ofuscado, cifrado etc, incluso ofuscado algunas veces puedes llegar a interpretar, pero no es lo ideal,

A parte debes conocer el lenguaje de dicho malware, te ayudara mas rápido a su entendimiento.
#644
Cita de: El_Andaluz en  7 Febrero 2019, 23:17 PM
Que fuerte me parece siendo tu de Venezuela que solo te preocupe ver un policía con un casco yo estoy en tu país y me tiro a la calle con una escopeta para matar a ese mamón.

Lo malo que me matarán a mi antes.

:-\

No digas eso, no es tan fácil así nada mas y ya. y listo y solución  :xD, que luego persigan a tu familia, o te den una golpiza en un dia común y corrient tu tomando el sol, por querer ofender a paco, hay presos politicos, por andar en esa, que mueren hasta de hambre,

y quizas el popular PalitroqueZ ya hasta el tema de maduro le aburra, y por eso comenta lo del poli, ha mi me harta la política, por eso casi no me verán mucho leyendo sobre esto. me conformo con trabajar y mandar el mother fucking money a mi familia en Vzla que mas da dog.
#645
Java / Re: método "Put" en la clase Vector
7 Febrero 2019, 07:07 AM
Vector no deberías de usar esta ya deprecated
#646
fileteruso que tal usa geshi, para que en un entorno de concurrencia un recurso compartido se actualize de manera correcta necesitas un lock con synchronized usandolo tanto en el método(no recomendado) y/O forma de bloque.

@ivancea96 con clases Atómicas no basta para que un recurso compartido sea actualizado correctamente por múltiples hilos a la misma ves, tampoco basta con volatile se necesita un lock, para asegurar la correcta sincronización.

Lo podemos ver con un ejemplo simple con 20 Hilos, linea 18, y usando un ExecutorService que es mejor que usar directamente la clase Thread o Runnable.



Código (java) [Seleccionar]

package foro

import java.util.Objects;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Logger;
import java.util.stream.IntStream;

public class UsoSynchronized {

   private static final Logger LOGGER = Logger.getLogger(Principal.class.getSimpleName());
   private ExecutorService executors = null;
   private volatile int count = 0;
   private AtomicInteger atomicInteger = new AtomicInteger(0);

   public UsoSynchronized() {
       try {
           executors = Executors.newFixedThreadPool(20);
           IntStream.rangeClosed(1,10)
                   .forEach(e -> {
                       executors.submit(()-> withAtomicInteger());
                   });
       }finally {
           if(Objects.nonNull(executors)) {
               executors.shutdown(); // ayuda a evitar memory leaks, fugas de memoria
           }
       }
   }

   public void hola() {
       synchronized (this) {
          LOGGER.info("Hola " + (++count));
       }
   }

   public void withAtomicInteger() {
       //synchronized (this) {
           LOGGER.info(""+ atomicInteger.incrementAndGet());
       //}
   }

   public static void main(String... haga) {
       new UsoSynchronized();
   }
}

}



Código (bash) [Seleccionar]

Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 5
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 10
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 9
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 8
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 7
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 6
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 2
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 3
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 4
Feb 06, 2019 10:48:29 PM foro withAtomicInteger
INFORMACIÓN: 1


Ese resultado de arriba es única y llanamente debido por que no se tiene un lock lo comente apropósito al invocar al método withAtomicInteger() en la linea 21, y cada Hilo entra a modificar el recurso count, e incluso lo ideal siempre es un bloque lock, es decir no usar synchronized en el método debido a que hay mas costo en el performance de ejecución, es mejor localizar justo el recurso que se modificara, tarea no tan fácil de hacer la mayoría de las veces



Otro ejemplo con 3 hilos, lo hize por la brevedad, nasty, usando atomic Integer y con lock comentado

Código (java) [Seleccionar]
public class UsoSynchronized2 {

   private int count= 0;
   private AtomicInteger atomicInteger = new AtomicInteger(0);

   public UsoSynchronized2() {

   }

   private void init(final String msg) {
      // synchronized (this) {
           System.out.println(msg + atomicInteger.incrementAndGet());
      // }
   }



   public static void main(String ...blabl) {
       UsoSynchronized2 usoSynchronized2 = new UsoSynchronized2();

       IntStream.rangeClosed(1,100)
               .forEach( e -> {
                   new Thread(() -> usoSynchronized2.init("Hilo 1 ")).start();
                   new Thread(() -> usoSynchronized2.init("Hilo 2 ")).start();
                   new Thread(() -> usoSynchronized2.init("Hilo 3 ")).start();
               });


   }


Código (bash) [Seleccionar]
Hilo 1 1
Hilo 2 2
Hilo 3 3
Hilo 3 4
Hilo 1 5
Hilo 2 6
Hilo 1 7
Hilo 2 8
Hilo 3 9
Hilo 3 10
Hilo 2 11
Hilo 3 12
Hilo 2 13
Hilo 1 14
Hilo 2 15
Hilo 1 16
Hilo 1 17
Hilo 2 18
Hilo 2 19
Hilo 1 20
Hilo 1 21
Hilo 2 22
Hilo 1 23
Hilo 2 24
Hilo 3 25
Hilo 1 26
Hilo 1 27
Hilo 3 28
Hilo 1 29
Hilo 1 30
Hilo 3 31
Hilo 1 32
Hilo 2 33
Hilo 2 34
Hilo 1 35
Hilo 3 36
Hilo 2 43
Hilo 3 42
Hilo 3 41
Hilo 2 40
Hilo 2 39
Hilo 1 38
Hilo 1 37
Hilo 2 44
Hilo 3 45
Hilo 1 46
Hilo 1 47
Hilo 1 48
Hilo 2 49
Hilo 3 50
Hilo 2 51
Hilo 2 52
Hilo 3 53
Hilo 1 54
Hilo 2 55
Hilo 2 56
Hilo 1 57
Hilo 1 60
Hilo 3 61
Hilo 2 59
Hilo 2 62
Hilo 3 58
Hilo 1 65
Hilo 2 66
Hilo 3 64
Hilo 1 63
Hilo 3 67
Hilo 1 68
Hilo 2 69
Hilo 3 70
Hilo 1 71
Hilo 1 72
Hilo 3 73
Hilo 3 75
Hilo 1 76
Hilo 3 77
Hilo 2 78
Hilo 2 74
Hilo 1 80
Hilo 1 81
Hilo 2 82
Hilo 3 79
Hilo 2 83
Hilo 1 84
Hilo 3 85
Hilo 1 88
Hilo 3 87
Hilo 2 86
Hilo 3 98
Hilo 1 104
Hilo 3 97
Hilo 2 96
Hilo 1 95
Hilo 2 109
Hilo 2 94
Hilo 3 93
Hilo 3 92
Hilo 1 91
Hilo 1 113
Hilo 1 114
Hilo 1 90
Hilo 1 89
Hilo 1 123
Hilo 1 132
Hilo 2 133
Hilo 3 121
Hilo 2 120
Hilo 1 119
Hilo 2 118
Hilo 2 117
Hilo 3 115
Hilo 2 116
Hilo 3 112
Hilo 2 111
Hilo 3 110
Hilo 3 108
Hilo 1 107
Hilo 3 106
Hilo 3 105
Hilo 1 163
Hilo 3 103
Hilo 1 101
Hilo 1 102
Hilo 3 100
Hilo 2 99
Hilo 2 164
Hilo 3 162
Hilo 3 165
Hilo 2 161
Hilo 2 167
Hilo 3 160
Hilo 1 159
Hilo 3 158
Hilo 3 169
Hilo 2 157
Hilo 3 156
Hilo 2 155
Hilo 3 173
Hilo 3 154
Hilo 1 153
Hilo 1 152
Hilo 2 151
Hilo 3 150
Hilo 3 149
Hilo 1 148
Hilo 2 147
Hilo 1 146
Hilo 3 145
Hilo 2 144
Hilo 3 177
Hilo 2 179
Hilo 3 143
Hilo 3 142
Hilo 2 141
Hilo 2 140
Hilo 3 139
Hilo 1 138
Hilo 2 137
Hilo 1 182
Hilo 3 136
Hilo 3 183
Hilo 2 135
Hilo 2 134
Hilo 2 131
Hilo 1 130
Hilo 3 129
Hilo 3 128
Hilo 3 127
Hilo 1 188
Hilo 2 126
Hilo 2 125
Hilo 1 124
Hilo 3 122
Hilo 3 190
Hilo 3 189
Hilo 2 187
Hilo 2 186
Hilo 3 185
Hilo 1 184
Hilo 2 181
Hilo 3 180
Hilo 2 178
Hilo 1 176
Hilo 1 175
Hilo 2 174
Hilo 2 172
Hilo 1 171
Hilo 1 170
Hilo 1 168
Hilo 3 166
Hilo 2 191
Hilo 1 192
Hilo 2 193
Hilo 3 194
Hilo 1 195
Hilo 3 196
Hilo 1 197
Hilo 2 198
Hilo 1 199
Hilo 2 200
Hilo 1 201
Hilo 2 202
Hilo 2 203
Hilo 2 204
Hilo 1 205
Hilo 3 206
Hilo 2 207
Hilo 2 208
Hilo 3 209
Hilo 3 210
Hilo 1 211
Hilo 1 212
Hilo 1 213
Hilo 2 214
Hilo 1 215
Hilo 3 216
Hilo 2 217
Hilo 1 218
Hilo 3 219
Hilo 2 220
Hilo 2 221
Hilo 3 222
Hilo 3 223
Hilo 2 224
Hilo 1 225
Hilo 3 226
Hilo 1 227
Hilo 3 228
Hilo 2 229
Hilo 2 230
Hilo 1 231
Hilo 2 232
Hilo 3 233
Hilo 1 234
Hilo 3 235
Hilo 1 236
Hilo 3 237
Hilo 1 238
Hilo 2 239
Hilo 3 240
Hilo 1 241
Hilo 3 242
Hilo 1 243
Hilo 1 244
Hilo 3 245
Hilo 2 246
Hilo 1 247
Hilo 2 248
Hilo 3 249
Hilo 1 250
Hilo 2 251
Hilo 3 252
Hilo 1 253
Hilo 2 254
Hilo 3 255
Hilo 1 256
Hilo 2 257
Hilo 3 258
Hilo 2 259
Hilo 3 260
Hilo 1 261
Hilo 1 262
Hilo 2 263
Hilo 3 264
Hilo 2 265
Hilo 3 266
Hilo 1 267
Hilo 2 268
Hilo 3 269
Hilo 1 270
Hilo 3 271
Hilo 1 272
Hilo 2 273
Hilo 3 274
Hilo 2 275
Hilo 3 276
Hilo 1 277
Hilo 3 278
Hilo 1 279
Hilo 2 280
Hilo 1 281
Hilo 3 282
Hilo 2 283
Hilo 3 284
Hilo 1 285
Hilo 2 286
Hilo 3 287
Hilo 2 288
Hilo 2 289
Hilo 1 290
Hilo 1 291
Hilo 1 292
Hilo 3 294
Hilo 3 293
Hilo 3 296
Hilo 2 295
Hilo 2 297
Hilo 3 298
Hilo 2 299
Hilo 1 300


caso distinto tendriamos si usamos el lock

Código (java) [Seleccionar]
private void init(final String msg) {
       synchronized (this) {
           System.out.println(msg + atomicInteger.incrementAndGet());
       }
   }

Código (bash) [Seleccionar]
Hilo 1 1
Hilo 3 2
Hilo 2 3
Hilo 2 4
Hilo 1 5
Hilo 1 6
Hilo 2 7
Hilo 1 8
Hilo 3 9
Hilo 2 10
Hilo 1 11
Hilo 2 12
Hilo 1 13
Hilo 3 14
Hilo 2 15
Hilo 3 16
Hilo 2 17
Hilo 1 18
Hilo 2 19
Hilo 3 20
Hilo 1 21
Hilo 3 22
Hilo 2 23
Hilo 3 24
Hilo 1 25
Hilo 3 26
Hilo 2 27
Hilo 1 28
Hilo 3 29
Hilo 3 30
Hilo 2 31
Hilo 1 32
Hilo 3 33
Hilo 1 34
Hilo 2 35
Hilo 3 36
Hilo 2 37
Hilo 1 38
Hilo 3 39
Hilo 2 40
Hilo 2 41
Hilo 1 42
Hilo 1 43
Hilo 2 44
Hilo 3 45
Hilo 3 46
Hilo 2 47
Hilo 1 48
Hilo 2 49
Hilo 1 50
Hilo 2 51
Hilo 3 52
Hilo 1 53
Hilo 3 54
Hilo 1 55
Hilo 3 56
Hilo 2 57
Hilo 1 58
Hilo 2 59
Hilo 3 60
Hilo 3 61
Hilo 2 62
Hilo 1 63
Hilo 2 64
Hilo 1 65
Hilo 3 66
Hilo 3 67
Hilo 1 68
Hilo 2 69
Hilo 3 70
Hilo 1 71
Hilo 1 72
Hilo 2 73
Hilo 3 74
Hilo 3 75
Hilo 2 76
Hilo 1 77
Hilo 3 78
Hilo 2 79
Hilo 1 80
Hilo 3 81
Hilo 2 82
Hilo 1 83
Hilo 3 84
Hilo 2 85
Hilo 1 86
Hilo 3 87
Hilo 2 88
Hilo 1 89
Hilo 3 90
Hilo 3 91
Hilo 2 92
Hilo 1 93
Hilo 1 94
Hilo 3 95
Hilo 2 96
Hilo 3 97
Hilo 1 98
Hilo 2 99
Hilo 3 100
Hilo 1 101
Hilo 2 102
Hilo 2 103
Hilo 3 104
Hilo 1 105
Hilo 3 106
Hilo 1 107
Hilo 2 108
Hilo 1 109
Hilo 1 110
Hilo 3 111
Hilo 1 112
Hilo 1 113
Hilo 2 114
Hilo 3 115
Hilo 3 116
Hilo 3 117
Hilo 1 118
Hilo 1 119
Hilo 2 120
Hilo 3 121
Hilo 1 122
Hilo 2 123
Hilo 3 124
Hilo 1 125
Hilo 2 126
Hilo 3 127
Hilo 2 128
Hilo 2 129
Hilo 2 130
Hilo 3 131
Hilo 1 132
Hilo 2 133
Hilo 3 134
Hilo 1 135
Hilo 2 136
Hilo 3 137
Hilo 1 138
Hilo 2 139
Hilo 3 140
Hilo 1 141
Hilo 2 142
Hilo 1 143
Hilo 2 144
Hilo 3 145
Hilo 2 146
Hilo 3 147
Hilo 2 148
Hilo 1 149
Hilo 2 150
Hilo 3 151
Hilo 1 152
Hilo 3 153
Hilo 3 154
Hilo 1 155
Hilo 2 156
Hilo 1 157
Hilo 2 158
Hilo 3 159
Hilo 2 160
Hilo 1 161
Hilo 3 162
Hilo 2 163
Hilo 3 164
Hilo 2 165
Hilo 3 166
Hilo 1 167
Hilo 1 168
Hilo 1 169
Hilo 3 170
Hilo 2 171
Hilo 3 172
Hilo 3 173
Hilo 1 174
Hilo 1 175
Hilo 3 176
Hilo 1 177
Hilo 2 178
Hilo 1 179
Hilo 3 180
Hilo 1 181
Hilo 3 182
Hilo 1 183
Hilo 2 184
Hilo 3 185
Hilo 3 186
Hilo 1 187
Hilo 2 188
Hilo 3 189
Hilo 1 190
Hilo 2 191
Hilo 2 192
Hilo 1 193
Hilo 2 194
Hilo 2 195
Hilo 3 196
Hilo 1 197
Hilo 3 198
Hilo 2 199
Hilo 2 200
Hilo 2 201
Hilo 2 202
Hilo 1 203
Hilo 2 204
Hilo 3 205
Hilo 1 206
Hilo 2 207
Hilo 2 208
Hilo 1 209
Hilo 3 210
Hilo 3 211
Hilo 3 212
Hilo 1 213
Hilo 2 214
Hilo 2 215
Hilo 2 216
Hilo 1 217
Hilo 3 218
Hilo 1 219
Hilo 3 220
Hilo 3 221
Hilo 1 222
Hilo 1 223
Hilo 1 224
Hilo 1 225
Hilo 1 226
Hilo 2 227
Hilo 2 228
Hilo 3 229
Hilo 2 230
Hilo 3 231
Hilo 2 232
Hilo 2 233
Hilo 3 234
Hilo 1 235
Hilo 2 236
Hilo 1 237
Hilo 2 238
Hilo 2 239
Hilo 3 240
Hilo 3 241
Hilo 3 242
Hilo 3 243
Hilo 3 244
Hilo 1 245
Hilo 3 246
Hilo 2 247
Hilo 2 248
Hilo 2 249
Hilo 3 250
Hilo 1 251
Hilo 2 252
Hilo 3 253
Hilo 3 254
Hilo 1 255
Hilo 3 256
Hilo 2 257
Hilo 1 258
Hilo 1 259
Hilo 1 260
Hilo 2 261
Hilo 2 262
Hilo 2 263
Hilo 3 264
Hilo 1 265
Hilo 1 266
Hilo 2 267
Hilo 1 268
Hilo 3 269
Hilo 2 270
Hilo 1 271
Hilo 1 272
Hilo 2 273
Hilo 3 274
Hilo 3 275
Hilo 1 276
Hilo 2 277
Hilo 3 278
Hilo 1 279
Hilo 2 280
Hilo 3 281
Hilo 1 282
Hilo 2 283
Hilo 1 284
Hilo 3 285
Hilo 1 286
Hilo 3 287
Hilo 1 288
Hilo 3 289
Hilo 2 290
Hilo 3 291
Hilo 1 292
Hilo 3 293
Hilo 1 294
Hilo 2 295
Hilo 2 296
Hilo 1 297
Hilo 3 298
Hilo 3 299
Hilo 2 300


la sincronizacion tiene un efecto bastante duro por el abuso del mismo,DEADLOCK, cuando varios hilos necesitan acceso exclusivo al recurso bloqueandolo/manteniendo el bloqueo, siendo también un bug difícil de detectar  >:D
#647
Mmm ya va, el IMEI se sabe que hay herramientas q lo sobreescriben Aka( IMEI repair )generando otro IMEI, pudiendo ser válido un tiempo, dependiendo el terminal, por ejemplo Samsung, ciertos certificados se le reescriben pudiendo bypassear el bloqueo por IMEI, en la mayor parte del mundo se aplica, siendo ilegal en muchas...a menos que se justifique el cambio de este por mal flasheo y/o problemas de software etc...

Muchos Operadores también han creado cierto convenio para compartir sus listas negras de teléfonos bloqueados/reportados por IMEI, pero aún así, se logra burlar eso.


#648
Cita de: fary en 16 Enero 2018, 16:45 PM
Entonces sigue depurando a partir de la línea donde se carga:
Código (java) [Seleccionar]
final JarInputStream input = new JarInputStream(App.class.getClassLoader().getResourceAsStream("stub.dll"));

Y mira que hace con el archivo, quizás te de mas información acerca de su extensión o de  como esta cifrado.

saludos.

Hola Fary que estés bien dog, sabes que en unos de esos días logre solucionar, pues resulta que el stub.dll en realidad es un .jar(pero no funciona con solo renombrarlo a .jar y ya), algún método se uso para comprimir los bytecode dentro de una .dll,  lo desconozco pero si se que hay la forma, el codigo para extraer el stub.dll es el siguiente, lo que hace es leerlo completamente y guardarlo en un .jar

Código (java) [Seleccionar]

public class CrearJar implements ShowData {

   private static final Path STUB_PATH =  Paths.get("src/main/resources/stub.dll");
   private static final Path DESTINO_STUB = Paths.get("src/main/resources/clasesStub.jar");

   public CrearJar() {
       init();
   }

   /**
    * lee el path donde esta el stub.dll y volca el contenido en un .jar
    */
   private void init() {

       try(final JarInputStream jarInputStream = new JarInputStream(Files.newInputStream(STUB_PATH ));
           final BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(DESTINO_STUB ));
           final JarOutputStream jarOutputStream = new JarOutputStream(bos, jarInputStream.getManifest())) {

           JarEntry jarEntry;

           while((jarEntry = jarInputStream.getNextJarEntry()) != null) {
               if(predicate(jarEntry)) {
                   getLogger().info(jarEntry.getName());
                   jarOutputStream.putNextEntry(jarEntry);
                   jarOutputStream.write(readAllBytes(jarInputStream));
                   jarOutputStream.flush();
               }
           }
       }catch (IOException ex) {
           getLogger().severe(ex.getMessage(),ex);
       }
   }

   /**
    * Validar el jarEntry
    * @param jarEntry que se le hara el test
    * @return boolean true si son solo clases, y que no sean directorios, ni tengan $
    */
   private boolean predicate(final JarEntry jarEntry) {
       final Predicate<JarEntry> predicate = p -> !jarEntry.isDirectory()
                                                  && jarEntry.getName().endsWith(".class")
                                                  && !jarEntry.getName().contains("$"),
                                                  || jarEntry.getName().contains("_");
       return predicate.test(jarEntry);
   }
   /**
    *
    * @return all bytes from stub
    */
   private byte[] readAllBytes(final InputStream input) {
       try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
           final byte[] bytesread = new byte[1024];
           int dataRead;
           while((dataRead = input.read(bytesread)) != -1) {
               baos.write(bytesread,0,dataRead);
           }
           return baos.toByteArray();
       }catch (IOException ex) {
           getLogger().severe(null,ex);
       }
       return new byte[0];
   }




Salida linea 23 del método init()

Código (bash) [Seleccionar]

19:08:06.783 [main] INFO CrearJar - Desinstala.class
19:08:06.783 [main] INFO CrearJar - Principal.class
19:08:06.783 [main] INFO CrearJar - extra/ClassLoaderMod.class
19:08:06.783 [main] INFO CrearJar - extra/Constante.class
19:08:06.783 [main] INFO CrearJar - extra/Constantes.class
19:08:06.783 [main] INFO CrearJar - extra/RegistryUtils.class
19:08:06.799 [main] INFO CrearJar - opciones/Archivo.class
19:08:06.799 [main] INFO CrearJar - opciones/DesUAC.class
19:08:06.799 [main] INFO CrearJar - opciones/EnviarFile.class
19:08:06.799 [main] INFO CrearJar - opciones/Informacion.class
19:08:06.799 [main] INFO CrearJar - opciones/Instalador.class
19:08:06.799 [main] INFO CrearJar - opciones/Interface_.class
19:08:06.799 [main] INFO CrearJar - opciones/Kille.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion1.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion10.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion12.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion13.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion14.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion2.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion5.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion6.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion7.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion7b.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion8.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion9.class
19:08:06.799 [main] INFO CrearJar - opciones/Opcion9b.class
19:08:06.799 [main] INFO CrearJar - opciones/OrdenCaptura.class
19:08:06.799 [main] INFO CrearJar - opciones/PassAll.class
19:08:06.799 [main] INFO CrearJar - opciones/Pina.class
19:08:06.799 [main] INFO CrearJar - opciones/WebBot.class
19:08:06.799 [main] INFO CrearJar - opciones/a.class
19:08:06.799 [main] INFO CrearJar - opciones/interfaceInfo.class
19:08:06.799 [main] INFO CrearJar - opciones/passFilezilla.class
19:08:06.799 [main] INFO CrearJar - opciones/passIDM.class
19:08:06.799 [main] INFO CrearJar - opciones/passNoip.class



Aquí esta la main class, el servidor lee el password contenido en un .xml, para descifrar los bytecodes en runtime y cargarlos en memoria por medio del custom classloader, se ven otras versiones de arabes donde esa contraseña esta alojada en un json


Clase que descifra contenida solo en el servidor, la linea 19, en el método init() se le setea un dos es decir Cipher.DECRYPT_MODE

Código (java) [Seleccionar]
package extra;
import java.io.ByteArrayOutputStream;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class Constante {
   public Constante() {
   }

   public static byte[] Constantino(String contrasena, byte[] input) {
       try {
           ByteArrayOutputStream out = new ByteArrayOutputStream();
           SecretKeyFactory skf = SecretKeyFactory.getInstance(new String(new char[]{'D', 'E', 'S'}));
           DESKeySpec kspec = new DESKeySpec(contrasena.getBytes());
           SecretKey ks = skf.generateSecret(kspec);
           Cipher c = Cipher.getInstance(new String(new char[]{'D', 'E', 'S'}));
           c.init(2, ks);
           byte[] tmp = c.update(input, 0, input.length);
           out.write(tmp);
           tmp = c.doFinal();
           out.write(tmp);
           out.close();
           return out.toByteArray();
       } catch (Exception var8) {
           return null;
       }
   }
}


Update Try/catch con BufferedOutputStream
#649
Cita de: Fox_Neo en  3 Febrero 2019, 17:02 PM
Gracias por la respuesta. Si efectivamente tengo un puerto configurado para que las peticiones que lleguen por ese puerto se envíen  a la ip del ESP8266.Si ya había visto esa posibilidad  pero el problema que veía era para mantener la IP actualizada, porque si es en un PC puedes descargarte la aplicación de NO-IP.
Por lo que he visto es posible realizar la actualización mediante código ya que este dispositivo que se programa con arduino lo hace mediante Dyndns:
https://www.open-electronics.org/arduino-ddns-dynamic-dns/    

Ahora me toca ver como funciona su codigo y adaptarlo, muchas gracias por la orientación ;-)

Bueno, el bombillo es tuyo, y quizas yo sea algo paranoico o aburrido, bueno siempre ando con aburrimiento al maximo, deja tu bombilla no ha plena vista donde alguien la pueda tomar y hacerle modificaciones, por ejemplo,

Quitarla de donde la tengas, cambiarle el firmware y leer el password de tu wifi.(No tan facil como se lee claro)

Un modulo bastante vulnerable por lo visto, dada su flexibilidad. habría que implementar comunicación SSL/TLS entre otras cosas...ya muchos fabricantes an actualizados módulos de bombilla parecidos, añadiendo auntenticación TLS, info sobre POC explotando uno de estos módulos.

https://github.com/ct-Open-Source/tuya-convert





Otra cosa mas ya vi tu aplicación web, yo programe una parecida pero sin el modulo de wifi, solo arduino, de donde el servlet le hace escritura al puerto serial aka (serial port) con una API que implementa internamente el mismo IDE de arduino JSSC(Java Simple Serial Connection) by Alexey Sokolov , uso patrón Observer/Observable(pero con este framework se usa websockets para hacer el push y actualizar desde el server al cliente), para que se refleje el cambio del bombillo y del CheckBox en todas las UI que estén conectadas. créditos a estos dos



Luego continuare con ese mini proyecto me estaba gustando..

Desventajas es que tienes que conectar el arduino directo a la pc que ejecuta la aplicación web siendo una limitante, porque si quiero subir esa app a un hosting, la app puedo hostearla, pero desde un navegador web, no se puede acceder al puerto serial así tal cual(Ejemplo que abras la app desde otro navegador desde internet y escribas en mi puerto serial por medio del arduino, en local si que se puede tranquilamente), según investigue ahí otros protocolos de escritura de puerto serie remotos para estos casos, la gente de Arduino tienen una aplicación propia que maneja bien esto.


Solución potencial, conexion inalámbrica, por medio de una shield, sin hacer conexión vía serial, solo vía sockets, HttpRequest ...



Versión inicial bastante fea la UI , pero funcionaba, use el tipico rele de 5voltios

[youtube=640,360]https://youtu.be/5VOU3GP4DYg[/youtube]

Luego un toque mas de cariño, aunque me pase de capas con inkscape  ;D, aqui cambie el circuito y use un triac bt136 mas un octoacloplador moc3021




#650
Cita de: Fox_Neo en  3 Febrero 2019, 14:00 PM
Gracias por leer mi duda.
Me gustaría saber cómo ciertos dispositivos conectados a una red WIFI doméstica puedes comunicarte con ellos desde un móvil que no esté conectado a la red Wifi doméstica.
Por ejemplo, un robot de limpieza tipo Roomba  que lo puedes controlar desde cualquier sitio. No entiendo cómo se produce la comunicación ya que es de suponer que la IP pública sea dinámica y por tanto no comprendo cómo una aplicación móvil se puede comunicar si la dirección IP cambia :huh:

Mi duda me viene porque estoy programando un módulo ESP8266-01, consigo comunicarme con el fuera de mi red Wifi siempre que conozca mi IP pública (y que tenga cobertura en mi móvil)  pero como cambie  mi IP pública adiós  comunicación.
Muchas gracias.

Un saludo.


Claro, usa un dns dinámico como NO-ip o Dyndns, este lo que hace es que asocia tu dirección ip publica a un subdominio, que cuando tu ip cambie, siempre apuntara a ese dominio creado por ti,teniendo un tiempo de actividad por 1 mes o algo así. dependiendo del servicio que uses dog.

Te tocaría también abrir los puertos en el router, port forwarding... claro esto es opcional, pero es mas cómodo, para que tu ip publica de servicio a tu aplicación por un determinado puerto en especifico.