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


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 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 ... 49
91  Programación / .NET / Re: Array de structs duda con los nombres C# en: 2 Junio 2017, 22:50
A ver... debe quedarte claro, que parte corresponde al programador y qué parte al usuario.
Es tarea del programador definir las estructuras de datos que debe tener el programa, y no el usuario. Al usuario debe importarle 4 ëggs, como llames tú a tus variables. Al usuario solo debe importarle que pueda almacenar, usar los datos, que funcione bien y punto.

Y en cuanto a tu duda, simplemente decirte que cuanto menos claro quede el tipo de datos que deba usar el usuario, más abstracta debe ser tu solución.

Hay excepciones obvias, como por ejemplo las bases de datos. Una tabla debe tener un nombre que el usuario (cliente), le indique u oriente que contiene esa tabla.
Ahora bien, en estos casos, el programador se pone codo con codo con el cliente, recogiendo las especificaciones que el cliente quiere que recoja el programa encargado y por tanto desde un inicio quedan claras las cosas.

En general para almacenar datos de cualquier tipo, suele ser útil una colección genérica tipo tabla-hash, junto a los datos a guardar se usa una clave (que si puede elegir el usuario) y que sirve para recoger después esos datos de nuevo.
Si el programa ha de utilizar varios y diferentes tipos de datos, lo adecuado es encapsular cada uno de ellos en una clase concreta que opere con dichos datos. es decir en vez de generar una estructura generas una clase. La clase ha de contener la funcionalidad adecuada para operar con dichos datos.

Por ejemplo: Si tenemos unos datos como: nombre, edad, calle, ciudad, nº identificación, etc... la clase que albergue dichos datos debería tener una propiedad para cada dato, alguno quizás sea de solo lectura, porque se genere internamente o porque puede que se establezca solo al crearse la clase... dicha funcionalidad debería también proveer la interfaz para rellenar un formulario con los datos y para presentarlos, también para buscar si debe haber más de una instancia de esa clase.
En cambio, si hay datos como Imagen, ruta, AnchoImagen, Altoimagen, parece obvio, que debe ser creada otra clase que albergue dichos datos, y la funcionalidad será del tipo, zoom, CargarImagen, SalvarImagen, y seguramente una ventana donde se vea la imagen y contenga Zoom, Brillo, Contraste, etc...
...pero para poder hacer todo esto, lógicamente debe ser desde un principio que quede especificado. No tiene sentido que crees un programa de control de stock de un almacén y que luego te digan que 'no tiene juego' para pasar el tiempo cuando no hay nada que hacer...
92  Foros Generales / Noticias / Re: El hijo de un capo de la mafia italiana mata a su mejor amigo por un 'me gusta' en: 2 Junio 2017, 15:25
Me pregunto que parte de culpa tendrá la propia familia, por eso de ser 'hijo de un capo de la mafia'...
Ya se sabe que los niños, hacen lo que ven y oyen en casa...
93  Foros Generales / Noticias / Re: Pandemic: el malware de la CIA que convierte a tu PC en una máquina de ataque en: 2 Junio 2017, 15:21
Es inaudito, con lo tiquis-miquis que son los estadounidenses (que tienen cosas tan absurdas como la obligación de incluir en manuales de usuarios tonterías como: "no meter la cabeza en el horno"), que la CIA siga tan ancho como pancho, después de todo lo que está saliendo.

A estas alturas es perfectamente claro, no sólo que han podido entrar en casi cualquier equipo, si no que también ellos mismos han podido colocar pruebas falsas en esos mismos equipos... ...cuando les haya salido de los ëggs.
94  Foros Generales / Noticias / Re: Windows 10 Build 16212 Insider convierte móviles en “ladrillos” en: 2 Junio 2017, 15:15
Ya... pero aunque sean versiones en pruebas, digo yo... no la sprueban un mínimo antes, al menos para ver que no 'destruye el mundo'...

En fin yo siempre aunque sea en fases previas, me gusta probar que un "Hello world", no se convierte en un "Destroy world"... opciones ya remotas, pués serían casos contados. Y más que 'me gusta', considero que es una obligación y responsabilidad de quienes están implicados en el desarrollo del proyecto.

Es absurdo escribir código, y que lo prueben otros y no en primer lugar quienes lo han hecho...
95  Foros Generales / Noticias / Re: EEUU pedirá a los solicitantes de visado su historial en redes sociales y ... en: 2 Junio 2017, 15:09
El título del artículo, como tantas otras veces es inexacto...

Si lees el artículo, verás que dice que se ciñe sobre quienes caiga una sospecha de terrorismo... y no sobre todo el mundo.
96  Foros Generales / Dudas Generales / Re: cambiar clave de archivo pfx en: 2 Junio 2017, 15:02
Y lo tienes "jodido" por fuerza bruta.
Bueno, eso en general es cierto, pero cuando es la contraseña de uno mismo, la cosa puede cambiar radicalmente...

En general cundo uno dice haber olvidado la contraseña, lo que de verdad suele suceder es que uno puede no recordar la contraseña ...con exactitud... pero es probable que si recuerde partes y como está hecha la contraseña... pongamos que uno tuviera una contraseña como: Aguila2473NewYork

Puede que lo qye haya olvidado sea la parte del número 2473, pero posiblemente recuerde que son 4 cifras y que le sigue a 'Aguila', luego le basta con 10000 intentos,con fuerza bruta, pero tremendamente cansino para hacerlo manualmente.
O puede que recuerde el número, pero no la ciudad tras él, puede que lo recuerde todo, pero no donde eran mayúsculas y minúsculas, etc...

En fin, no es lo mismo usar fuerza bruta contra contraseñas de otros, que contra contraseñas tuyas, que es más que posible que tengas idea de por donde va, porque sabes como generas tus contraseñas...
97  Foros Generales / Noticias / Re: Internet al servicio de los 'gurús' de las pseudociencias... hasta ahora en: 1 Junio 2017, 23:00
Muchas cosas se pueden decir, lo entiendo, pero esto... es lo más estúpido que pueden alegar, como si las farmaceúticas ofrecieran gratis sus productos y tratamientos...

 
Citar
decide sobre la vida de las personas, normalmente enfermas, a cambio, claro está, de una buena cantidad económica.

Por otro lado, lo habitual es que quien acude a estas situaciones son gente a las que ya la medicina les ha dado con las puertas en las narices y por ello, no se puede pedir a nadie que no busque algo alternativo, que la ciencia ni se molesta en investigar... mal que al final caiga en un simple sacadinero, que por supuesto abundan.

Si se van a poner a perseguir a estos estafadores,  cual caza de brujas, espero con el mismo esmero persigan la cantidad impresionante de medicamentos, y los psedumedicamentos, como los adelagazantes, cremas revitalizantes, y demás patochadas (que se VENDEN en FARMACIAS), que no sirven absolutamente para nada excepto para lo que señalaba al inicio... sacar dinero.
98  Programación / Java / Re: ayuda!! infijo a postfijo con 1 o mas digitos. en: 1 Junio 2017, 16:39
modificar un codigo de infijo a postfijo con pilas. son 2 cosas que necesito hacer:
1.-ejemplo  : Entrada : (100+5.75) + 100 -> salida : 100 5.75 + 100 +.
el problema es que solo acepta caracteres de 1 solo digito.
El primer fallo, es que pretendes operar con 1 dígito... eso esta bien en la fase de análisis léxico, para determinar correctamente los identificadores.
Pero en una etapa superior (cuando tratas la semántica), ya debe existir una separación clara, y aunque para un sencillo problema quizás pueda no parecer adecuado tener una tabla de símbolos, lo cierto es que resuelve el problema. simplemente para casos sencillos la tabla de símbolos puede ser un simple array.

En resumen (  :silbar: :silbar: :silbar: :silbar: ) :
- 1º Añade una etapa a modo de analizador léxico, donde reconoces y separas convenientemente cada identificador, y donde
- 2º Añadas luego el identificador a un array. Como hablamos de que es un problema sencillo, y que por ello nos basta con un usar un array, no es descabellado en estos casos, proveer un array estático, lo suficientemente grande, como albergar la expresión más compleja que pueda esperarse tratar... quizás un tamaño de 64 sea suficiente, tú decides ese tamaño.
- 0º Para simplificar el analizador léxico, es adecuado anotar (crear el minilenguaje admitido) las diferentes producciones que pueden darse... es bastante sencillo, si usas BNF o alguna modificación particular.
Básicamente describe que es un número, (que SIEMPRE empieza por un dígito y que está formado por 1 o más digitos y el número acaba cuando aparece un carácter distinto de dígito, dígito, operador, identificador, char, etc...
numero = digito | digito || numero     <--- las dos barras juntas '||' indica concatenación
digito = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"    <---- la barra '|' indica opcion.
operador = " + "|" - "|" * "|" / "|" $ "  
 

En este ejemplo: digito es cualquiera de los números (caracteres) en el rango 0-9
y número es un digito, o un digito + un número (esto expresa recusividad, ya que número puede expresarse nuevamente con cualquiera de las dos opciones previas, esto es un digito, o un digito + otro número, etc...).

Y operador es cualquiera de los caracteres indicados (inclusído tu 'raíz cuadrada'). fíjate la obligación de estar separado por espacios, es decir un operador son 3 caracteres, el que se reconoce + un espacio acada lado. Así tu analizador léxico, puede indicar error cuando no tenga un espacio a cada lado. El número no exige espacio, gracias a la última producción que falta por definir... expresión, y se define como:


expresion = numero || operador || numero | numero || operador || expresion
id = char | char || id  <---- identificador
char = "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"| ... |"y"|"z"|
 <---- carácter, ojo, veáse que son minúsculas, por tanto debiera generarse error en el analizador léxico, si aparece mayúsculas, ya que no se ha definido su uso en para generar los identificadores...

formula =  id || " = " || expresion <---- una producción sería la fórmula entera (la expresión entera, más la asignación a un identificador).

A veces la 'formula' es fácil confundirlo con las producciones, debido al '=', en realidad para las producciones suele usarse el símbolo: ":=" o también "::=", yo los he usado indistintamente " = ", para explicar una producción (cualquier combinación del 'lenguaje' como una formula (una combinación específica del lenguaje que hemos llamado 'formula', espero que se sepa distinguir cuando hablo de una cosa y cuando de otra.

Claramente se ve, que a una 'formula' se le asigna una expresión y es reconocida por un identificador.
Por su parte una expresión consiste de una lista de números separados por un operador. Igual que número tiene 2 opciones de ser definido, se podría decir que una expresión es simple si consta de solo dos números y un operador, y una expresión es compleja si consta de una lista de números (mayor de 2), donde siempre empieza con un número y a cada número excepto al último le sigue un operador.

Tu analizador léxico puede optar por indicar fallo cuando falta espacios a ambos lados del operador, o dada la simplicidad de la expresión, puedes modificarlo y añadirlo tú mismo por código (autocorreción).

Nota como id (un identificador) es uno o más caracteres y que una 'formula' requiere el identificador y luego el símbolo "=", también con espacios a ambos lados.

Nota que hay otra forma de expresar opciones (de una producción). Y es, usar varias líneas en vez de reunirlas en solo una, para los dígitos, los operadores y los caracteres es bastante claro el modelo de una sola línea, pero para otras, a veces queda más entendible si se usa como varias líneas, donde en cada línea se pone una sola de las opciones posibles. Un ejemplo para número (que valdría igualmente para expresión)

Producción multilínea para número y expresion (es idéntico al anterior)
numero = digito <--- ejemplo: 5
numero = digito || numero   <---- ejemplo: 53456

expresion = numero || operador || numero <---- ejemplo: x = 5 + 3
expresion = numero || operador || expresion
<---- ejemplo: y = 7 + ( 3 - 1 ) <---no hemos definido los paréntesis (en el ejemplo) como operadores, pero los he puesto para diferenciar la parte 'expresión' de esta producción.

Otro ejemplo: valor = 9 - 2 + 16
Estos ejemplos en cambio actualmente darían error:
valor = 44
suma = valor + 12 - 7
...porque no hemos definido lo siguiente para formula:

formula = id | id ||" = "|| expresion <--- --->ejemplos:
valor = 5
h = valor
total = h * cantidad
total = (total + 21)
preciolatas = 12
preciounitario = 32
total = total + (preciolatas * preciounitario)

Este otro ejemplo daría error léxico:
Valor = 5   <---- identificador no admite mayúsculas, tal como está actualmente descrito identificador.
valor = 5H  <---- número solo lleva dígitos, no se ha previsto diferencia de números decimales, hexadecimales, octales, binarios,etc...
valor10 = 23  <--- identificador secompone solo de caracteres en el rango a-z, no puede llevar números (ni menos empezar por él), tal como está actualmente definido identificador.


Hasta aquí el analizador léxico. Éste si debe operar con caracteres hasta ir formando los números (no dígitos), que deben ser añadidos a la tabla de símbolos (un array para algo sencillo basta).

Si quieres profundizar en el asunto, vuelve a leer todo lo previo las veces que haga falta, si solo quieres 'aprobar el examen', te bastaba con leer este párrafo que sigue (y aplicalro bien, obviamente)  :laugh: :laugh: :laugh: :laugh:
Luego en la siguiente fase de análisis se puede operar ya con los tokens que contiene la tabla de símbolos. Pero ahora ya, no opera con 'chars' si no con 'strings'... sólo así, puedes hacer: valor = 534 + 723

Te recuerdo, que una de las ventajas de la notación postfija es que no exige el uso de paréntesis. y por si al final has profundizado, y le has leído varias veces, te aclaro que puede simplificarse mucho, cuando uno acaba por entender que una expresión (como la descrita, básicamente matemática) es una lista, ya que se alternan números y operadores... ..y ahí lo dejo.

Te he dejado como ejercicio optimizar: expresion, formula, numero ...una de ellas es redundante, pero es ideal para ayudar a entenderlo, y una vez entendido puede ser suprimido.

2.- la segunda modificacion es evaluar la raiz cuadra representado por el caracter '$' con un prioridad maxima. ejemplo Entrada : $(10*10) -30 ->salida 1 :  10 10 * $ 30 -  salida2 : -20 que es el resultado de la evalucacion.
Como puedes ver, en ese mismo problema, usando la notación de postfijo (polaca inversa), no requiere el uso de paréntesis, ya que el orden en que se usan los operadores no da lugar a dudas.

Ayuda mucho construir un árbol de análisis sintáctico, no es obligado, pero sí para acabar de entenderlo bien.

p.d.: Nota: Se deja como ejercicio, dónde colocarías (que producción debería llevar los paréntesis y cómo sería esa producción), los paréntesis. En los operadores no se incluye paréntesis... para indicar prioridad/precedencia. Aunque la notación postfija, no requiere de paréntesis, si el analizador léxico.
99  Programación / Programación C/C++ / Re: Compro trabajo, al que sepa hacer lo siguiente en: 1 Junio 2017, 14:46
Lamentable... Si no quieres programar, no programes, nadie te obliga, dedícate a otra cosa que te guste y listo.

No hay mayor intrusismo que el que hace algo obligado y sin ganas.

Si fuera moderador, te eliminaba el mensaje, por que es vergonzoso.
100  Seguridad Informática / Seguridad / Re: saber destino de correo en: 31 Mayo 2017, 22:32
De entrada, puedes filtrar todos los correos que te vengan de determinados remitentes, o que cumplan cierto criterios y enviarlos directamente a la papelera.

Pero, si te escriben correos, es porque conocen tu correo. Créate una cuenta nueva y listo. Luego, si te escriben a la nueva nueva, considera que tienes un troyano en tu equipo que te espía...
Páginas: 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 ... 49
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines