elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 [398] 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 ... 432
3971  Programación / Ejercicios / Re: Ejercicio Bucle While en Python en: 24 Mayo 2017, 04:33 am
Pués a mi me sale... lo complicado es entender correctamente el enunciado.

He puesto como valor para n = 100000 y para a= 350 y la respuesta me da 449.
Probaré con más valores para a...
' a = 350 ' 449
' a = 65  ' 449
' a = 165 ' 446
' a = 43  ' un primo a ver que pasa 449
a = 255 ' 447

- Posiblemente tu valor para n sea tan bajo, que a no tenga oportunidad de encontrarse en ese rango...

- Bueno mirando de nuevo tu código, lo que veo es que fuerzas el while, dentro del primer bucle For, por lo que es incapaz de regresar allí e incrementar x, que siempre valdrá 0. (NOTA: Esto sin embargo, no inutiliza mi comentario previo, sobre un límite demasiado bajo de n).

Reescríbelo así:
Código
  1.    n=int(raw_input("introduce n: "))
  2.    a=int(raw_input("introduce a: "))
  3.    x=0
  4.    sumaintx=0
  5.    sumaintn=0
  6.  
  7.    x=-1
  8.    while(x<n):
  9.        x= (x +1)
  10.        sumaintx=0
  11.        sumaintn=0
  12.        #while(sumaintn-sumaintx!=a):
  13.          i= n-x
  14.          for i in range(n-x,n):
  15.              sumaintn=sumaintn+i
  16.              for j in range(0,x):
  17.                  sumaintx=sumaintx+j
  18.        if(sumaintn-sumaintx==a):
  19.            print x
3972  Programación / ASM / Re: Soluciones para cifrar mi propio codigo fuente en: 24 Mayo 2017, 04:00 am
¿Qué crees que es la protección de procesos????.
- Si un programa en memoria y ejecutándose pudiera modificarse alegremente, los problemas de seguridad serían enormes.

- De todos modos, incluso escribiendo drivers propios, existen límites y complicaciones:

- ¿Puede una báscula pesarse a sí misma?
- ¿..qué si tienes en la pila una serie de retornos y a la vuelta se deben hacer los correspondientes POPs?... tu código cifrado, ahora sería rescrito e indescifrable por tí mismo.
- ¿..qué si el registro IP, está apuntando a la instrucción pongamos 9999, y tu te empeñas en cambiar la dirección 9999?... supongamos que la consigues cambiar... ahora que se ejecutará...? ¿Cómo seguir cifrando el resto del programa cuando el algoritmo de cifrado, ya ha sido sobrescrito, las instrucciones que se encargan de cifrarlo ( y que ya están cifradas)?

- Supongamos que aún así se consiguiera cifrar por completo el programa... hemos dicho que el programa está ejecutando la instrucción 9999, pero el procesador, que como sabes (o deberías saber), tiene una cascada de instrucciones en diferentes estados (esto es, la 9999, se está ejecutando, pero la 10000 y la 10001 y... también, de hecho hay varias instrucciones que mientras una se está ejecutando, están en diferentes fases de la decodificación... incluso hay instrucciones que se ejecutan en paralelo, aunque nosotros las vemos o consideramos que se ejecutan en serie... si hay un salto, desde luego, se rompe la cascada que es despreciada... pero que pasaría con esas instrucciones que ya están fuera de nuestro control?. Bueno, al menos ya te indico que para descartarlas, deberías hacer un salto, para que sean descartadas, pero cómo hacer un salto y a dónde, si el código ha sido rescrito, por un contenido cifrado, quién le da las siguientes órdenes si ya no existen?

- Vamos un paso más allá, y olvidemos también la pipeline... Si hubieras logrado 'cifrar' todo tu programa, y estábamos en que la siguiente instrucción posterior a la 9999, empieza a decodificarse... No crees que no habrá modo de saber que sucederá?. Dando por cierto... que es cifrado y no simplemente remplazo de código 'sano' por otro 'malicioso', es decir si realmente es cifrado, el contenido en memoria para ser ejecutado, será pseudoaleatorio, luego el procesador puede 'volverse loco', impredecible.... podrías incluso borrar el disco sin darte cuenta, lo menos grave es que el cifrado se decodificara curiosamente como un bucle for, con un incremento del contador de 0, es decir un bucle infinito... en fin, aún suponiendo que nada te impidera cifrarlo tal como tu quieres, el resultado sería impredecible...

...y eso que soy generoso y doy por bueno, que solo quieras cifrarlo, y no remplazarlo por código   ::)>:D ::) >:D

Para terminar, ¿podrías decirme cuál es el objetivo de cifrar un ejecutable (en ejecución) en memoria y no en disco????
3973  Programación / Java / Re: Abrir archivo, leer datos y modificarlos en otro archivo. en: 24 Mayo 2017, 03:41 am
No se rompe el ordenador por 'probarlo'...

Si, ese es el sitio exacto donde va.

Yo solo añadiría tras el "write", otro System.out.println(linea); así ves como era la línea a la entrada y tras la conversión... y ahí si observas error, corrige según veas que error arroja... después de todo, siempre cuando se está emepezando es buena práctiva añadir líneas de código extra a modo de debug, para ir probando no solo errores, si no incluso ideas nuevas...

p.d.: de haber sabido antes que era un ejercicio de clase, te lo hubiera dejado para que pensaras un poco más... pero creo sinceramente que lo hubieras hecho, en general la gente es perezosa y no se lo toma demasiado en serio, parece que tú sí...
3974  Foros Generales / Foro Libre / Re: ¿documetacion sobre gramática básica? en: 24 Mayo 2017, 03:08 am
Pero, ¿gramática de qué lenguaje. Del español? o de algún lenguaje de informática?
3975  Foros Generales / Foro Libre / Re: Y con ustedes... Windows 11!!! en: 24 Mayo 2017, 00:05 am
Hummm... Microsoft, se suma a la actualicitis, siguen a la cabeza: Flash-player de adobe, Facebook de Facebook, Firefox de Mozilla, y Android de Google (por ese orden). Curioso, lo encabezan 3Fs.: Flash-Facebook-Firefox

Parece una pelea de gallos a ver quien saca más versiones en menos tiempo. No cuaja la nata, no hay calidad, es un coladero de bugs, que nunca se acaban de resolver, porque... la siguiente versión, está esperando tras cruzar el semáforo... y vuelta a empezar... las cosas cambian de sitio, vuelta aperder tiempo buscando lo que sabías perfectamente donde estaba...

Luego se queja Mocosoft, de que la gente no se actualiza a la siguiente versión... para qué, para volver a reaprender, lo que ya sabías?. Convénceme, haciendo lo mismo, pero mejor y más veloz, con menos fallos y más sencillo, y no cambiando las cosas de sitio, complicándolo todo y para colmo, dejándolo más feo. Lo siento, pero el minimalismo le va a quien le va, a los demás, nos parece horrible... dejad elegir a la gente.
3976  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Es vergonzoso que todos los threads que abro los cerréis ... en: 23 Mayo 2017, 23:41 pm
Interesante la estadística... solo le falta, que ponga  :silbar: :silbar: los hilos que se le han cerrado  :laugh: :laugh: al usuario, para saber el alcance de la queja de Constance  :laugh: :laugh:
3977  Seguridad Informática / Hacking / Re: duda urgente: es posible que una persona haya accedido a mis dispositivos en: 23 Mayo 2017, 23:17 pm
...Aclaro que yo no he recibido en ningún momento archivos maliciosos ni nada por el estilo...
Eso mismo diría el 90% de la gente que tienen un troyano en su equipo.
Una cosa es que tú no hayas advertido nada y otra muy distinta es que no se haya recibido nada.

...de todos modos, si sopsechas, te pregunto, ¿en qué basas la sospecha?... porque dar una cifra de 25km... es poco menos que decir 'sospecho de alguien (que vive a unos 25km.)'.

Piuensa además, que puedes tener un troyano durmiente, y que tras cierto período se activa, así que eso de no sospechar porque no has descargado algo, no sirve de mucho. Una forma de ocultarse cuando algo es exageramente visible, es precisamente hacerlo delante de alguien y dejarlo ahí durmiente 2-3 meses... el troyano, solo envía una notificación cada x días a modo de decir: 'estoy aquí, vivito, y coleando, a la espera', de repente recibe una señal de activación 8o bien programado para tal o cual fecha, o tras x tiempo de la infección, y se activa... así que qien piense que un troyano, se pone como loco a trabajar, nada más entrar por la puerta, no entiende mucho de hasta donde se puede ocultar algo.
3978  Programación / ASM / Re: Funcion equivalente en C en: 23 Mayo 2017, 21:59 pm
RGB To Gray es una función que convierte un byte (o un array de bytes procedente de una imagen), a gris...

el gris, como sabrás tiene un solo canal (8bits), pero si se amplía a 3 canales (24 bits), lo que se hace es repetir ese valor en los 3 canales.

Sea el color hexadecimal: FF54AB. Bueno, pués lo primero es decomponer el valor de 32 bits en los 3 canales sueltos, para tener los valores individuales de cada canal:

Código:
Valor = Valor and 16777215 // borramso un posible valor sobre el canal alfa.
Rojo= (Valor and 255)
Verde = ((Valor\256) and 255)
Azul = ((Valor\65536) )
Ya tenemos cada valor de canal suelto, ahora podemos recurrir a dos modos, el más rápido es sumar y dividir entre 3, es decir concedemos la misma importancia a cada canal (esto es más rápido pero puede no ser muy preciso)

Código:
Gris = ((rojo + verde + azul) \3)
//             azul                verde       rojo
Valor = ((Gris * 65536) or (Gris * 256) or Gris)

Puedes usar la fórmula más lenta de usar parcialmente cada valor en partes no iguales (LUMA):
Código:
 
Gris = ((Azul * 0.11) + (Verde * 0.59) + (Rojo * 0.3)) //  0'11+0'59+0'3=1'00
//             azul                verde       rojo
Valor = ((Gris * 65536) or (Gris * 256) or Gris)

Entonces la función pelada, queda así:
Código:
Funcion RGBaGrisLUMA(valor)
    Rojo= (Valor and 255)
    Verde = ((Valor\256) and 255)
    Azul = ((Valor\65536) and 255) // borramos un posible valor sobre el canal alfa.

    Gris = ((Azul * 0.11) + (Verde * 0.59) + (Rojo * 0.3))
    Valor = ((Gris * 65536) or (Gris * 256) or Gris)
Fin Funcion

// La versión rápida: Prueba ambas, a veces no se nota demasiada diferencia de calidad.
Código:
Funcion RGBaGris(valor)
    Rojo= (Valor and 255)
    Verde = ((Valor\256) and 255)
    Azul = ((Valor\65536) and 255) // borramos un posible valor sobre el canal alfa.

    Gris = ((Azul + Verde + Rojo) \ 3)
    Valor = ((Gris * 65536) or (Gris * 256) or Gris)
Fin Funcion

Se admiten ligeras variaciaciones sobre los coeficientes de LUMA, pero lo que no varía es que la suma de los 3 deber ser siempre igual a 1.

NOTA: Si se hacen desplazamientos, en vez de divisiones y multiplicaciones ( >>, <<), las operaciones serán mucho más rápido.
3979  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con un string en: 23 Mayo 2017, 18:13 pm
Quería decir que te asegures que tiene contenido, que no ha quedado desierto. Si es un vector, que su contenido tiene al menos un índice, etc...

Como se puede saber cual es el contenido de cada variable con Visual Studio?
Cuando ejecutas el código en vez de ejecutarlo con F5, lo ejecutas con F11 (paso a paso)... para no extenderme:
https://msdn.microsoft.com/es-es/library/y740d9d3.aspx


El ejecutarlo paso a paso funciona tambien con los formularios? O se para cuando se termina de cargar los controles?
Sí... Hay una carga inicial, donde se ejecuta sin pararse, típicamente si lo has puesto en modo Release, o Debug, antes lo compilará, por si hay errores que impidan la ejecución, luego irá al punto de entrada del proyecto y ahí, se para la ejecución. en un formulario, por ejemplo si no hay código en el LOAD, entonces saltará toda la interfaz de golpe (porque no hay código (del usuario) antes, donde pueda pararse, en ese caso, se parará cuando pulses algo de la interfaz (teclado, ratón, etc...)... por ejemplo en un botón (si tiene código asociado tal botón, claro). Incluso si tienes código asociado un evento MOUSEMOVE de un control o un evento Resize del formulario y tu estás cambiando el tamaño, salta a dicho evento y ahí para..
Con cada pulsación de la tecla F11, ejecuta una línea de código (en realidad una sentencia, ya que la misma puede estar partida en varias líneas (o como en el caso de VB, haber varias en una sola línea separadas por ':'.

Una vez que el depurador está parado en un punto, puedes seleccionar una variable (del tipo que sea, incluso un objeto o un array), y dejando un tiempito el cursor sobre la selección, muestra un iconito para desplegar y ver propiedades y valores. También pinchando con el otro botón del ratón, emerge un menú con opciones puedes desde ir a la definición de dicha variable, hasta pedirle que muestre el valor actual, o pedirle que quieres hacer un punto de interrupción de esa variable cuando se cumpla tal condición (abriría una ventana para indicar la condición, por ejemplo: V = 25, ó V = K, etc...)

...pero esto no es nuevo, esto viene de lejos, ni siquiera de Visual Studio 6.0, esto viene de los años 80... cuando Visual Studio ni siquiera estaba en la mente de nadie, cuando aún se tiraba de por ejemplo QuickBasic... y no ha cambiado significativamente, desde entonces... es mucho más completo, pero en esencia sigue siendo casi igual.

Un punto de interrupción incondicional se establece sobre una línea, del siguiente modo: lleva el cursor a la línea deseada, pulsa la tecla F9, verás que cambia el color de la línea que queda resaltada y a su derecha un puntito, marca lo que es (un punto de interrupción), pulsando en dicho punto, tiene el mismo objeto, quitar/poner el punto de interrupción. Estos puntos de interrupción son adecuados cuando no quieres estar paso a paso, si no sólo hasta llegar a ese punto, entonces ejecutas el código con F5, y cuando llegue a esa línea se detiene, luego para avanzar entre líneas, pulsas F11... cuando hayas resuleto dudas, continuas con F5, hasta que llegues a otro punto que desees detenerte y probar bien.  Se puede incluso ver la pila de llamadas en curso...

Hay mucho que explorar, mírate el menú DEBUG.... en profundidad...experimenta, hasta que tengas dominio de ello.

Te busco un vídeo, a ver si encuentro alguno, será más sencillo que escribir aquí 300 líneas de explicaciones.

Otro enlace:
https://msdn.microsoft.com/es-es/library/ms173083(v=vs.90).aspx
Vídeos:
https://www.youtube.com/watch?v=C0vDKXIq_9A
https://www.youtube.com/watch?v=QCPt9aOcd98
https://www.youtube.com/watch?v=u-HdLtqEOog
https://www.youtube.com/watch?v=rsfi68hR6vw
Estos están en inglés, no importa que si no lo entiendes, basta con que observes, ...aunque bueno, veo de buscarte alguno en español, también, solo que se enrrollan demasiado en explicaciones peregrinas en vez de ir al grano:
https://www.youtube.com/watch?v=KUhJmtgrk3k
https://www.youtube.com/watch?v=Ew5XAAJbGKI
https://www.youtube.com/watch?v=ayAv-EPCfk0
Tras ver un vídeo, a la derecha en la página siempre en las sugerencias salen muchos más relacionado con lo mismo... date un baño de vídeos, pierde 4 ó 5 horas viéndolos y ponlos en pausa, y prteactica tú mismo en tu equipo...

No te preocupes si en el vídeo sale un VS de una versión de VS distinta a la que tu tengas instalada, ya te digo que no ha cambiado sustancialemtne en los últimos 30 años... con decirte que para mí el 'asombro' más grande es que antes la ejecución paso a paso era con F8 (en VS 6.0) y ahora (desde NET) es con F11  :laugh: :laugh:
3980  Seguridad Informática / Análisis y Diseño de Malware / Re: Hay alguna manera de meter un virus espía a una foto para enviarselo a alguien? en: 23 Mayo 2017, 17:36 pm
Un virus puede esconderse en cualquier parte... pero eso no debe llevar a la creencia de que 'desde ahí', pueda ejecutarse.
Sólo puede ejecutarse si algo ejecutable lo hace. Si está oculto dentro de datos, no hace nada, los datos por si sólo son 'materia muerta, inactiva'. Los datos nunca 'tienen el control', siempre son 'usados'...
Páginas: 1 ... 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 [398] 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 ... 432
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines