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 - Eternal Idol

#561
Cita de: huchoko en  6 Julio 2019, 03:56 AM
Ya sabía que solo se iba a leer 512 bytes (y ya lo he arreglado). Lo que aún no logro hacer funcionar es lo que comento en el título del hilo. Tal como me respondió MAFUS con un malloc es fácil, pero podría ser que el archivo:
a) Sea más grande de lo que hemos reservado en memoria para el buffer
b) Sea más pequeño de lo que hemos reservado, gastando memoria (solucionable con realloc?)

El problema que planteas ahora es muy facil de solucionar, la memoria la reserva fat32_open_file (doble puntero, referencia, valor de retorno, etc.) o de alguna manera le pasa al llamador el tamaño del archivo (idem) PERO falla el diseño por todas partes. Una funcion que se llama open no deberia estar leyendo un archivo, ni deberias reservar memoria para todo el archivo asi como asi (podria ocupar varios GB por ejemplo). Ni deberias tratar de terminar un buffer con un 0 terminador como si fuera una cadena ... y si esa parte si es una prueba o un codigo que no sera de produccion mejor abstraenos del mismo, solo consigue confundirnos y hacernos perder el tiempo mientras tratamos de ayudarte.

¿Como funciona un S.O. de verdad? Devuelve una referencia, un HANDLE, para hacer esto bien deberias asociar el archivo a una estructura donde tuvieras la informacion necesaria para poder leer (y escribir, retroceder o avanzar dentro del archivo, retornar el tamaño del mismo, etc.) y otra funcion de lectura separada, posteriormente el llamador y (no el S.O.) decide cuanto y como leer.

PD. Si todavia no conseguiste depurar tu codigo ya es imperativo que lo logres, por ejemplo me equivoque antes, el codigo tiene tantos errores que me perdi, fatbuff se intentara usar siempre que encuentre el archivo asi que esto no funciona bien jamas y es algo que podrias ver al depurarlo.
#562
Cita de: huchoko en  5 Julio 2019, 05:24 AM
Funciona, pero hay un problema. Debo darle un tamaño al buffer:

¿No sera demasiado copy/paste? Cada vez que usa buff es solo para  leer el tamaño de un sector de 512 bytes. fatbuff es un puntero nulo asi que asumiendo que no haya otros errores esto solo puede funcionar con archivos de menos de 512 bytes.
#563
Tenes que depurar tu programa, no se que entorno estas usando, WinDbg es lo mejor pero no lo ideal para empezar (especialmente sin saber ensamblador).

¿Que se supone que hay en esos vectores al ejecutar el primer bucle for? Nada asi que esto no puede ser bueno:
Código (cpp) [Seleccionar]
if(v_aux[random_number] != 1){

Revisa el uso de los vectores en general y en particular:
http://www.cplusplus.com/reference/vector/vector/operator[]/

CitarAccess element
Returns a reference to the element at position n in the vector container.

A similar member function, vector::at, has the same behavior as this operator function, except that vector::at is bound-checked and signals if the requested position is out of range by throwing an out_of_range exception.

Portable programs should never call this function with an argument n that is out of range, since this causes undefined behavior.
#564
Programación C/C++ / Re: Programación en C++
26 Junio 2019, 08:05 AM
No se hacen tareas.
#565
Programación C/C++ / Re: que editor usan
21 Junio 2019, 08:30 AM
Para proyectos a largo plazo Visual Studio, si es solo una prueba o algo de menos de 100 lineas el famoso notepad.exe  ;D
#566
Cita de: CalgaryCorpus en 17 Junio 2019, 17:43 PM
En este programa x en minuscula es el tipo, no es el nombre de una variable, de modo que tiene que haber 2 constructores pues hay 2 objetos distintos creados aqui.


Tal cual esta el fragmento (y sin tener en cuenta el faltante de cabeceras) no compila (la estructura no termina con un };, la sobrecarga si es interna necesita de friend, el valor de retorno de la sobrecarga debe ser una referencia y finalmente x es una estructura y lo que quiere empujar en cout es la variable que acaba de definir) pero segun la descripcion no es el caso, simplemente un typo.
#567
No compila con facilidad ese codigo pero bueno, la clave es que se crea un objeto temporal del tipo x (no ostream, el que tiene el cout en el constructor y destructor no es ostream precisamente) por una razon: estas pasando x por valor. Pasalo como referencia y no se creara mas:

Código (c++) [Seleccionar]
std::ostream &operator <<(std::ostream & _os, const x & _x)
#568
15 de junio de 2019
Opinión
De los barcos como excusa para la guerra
Por Sergio Kiernan


Imagen: El USS Maddox, excusa para la intervención en Vietnam en 1964.

Un incidente naval, una excusa para la guerra, un clásico de la política norteamericana que ya pasó largamente el siglo. Que Donald Trump y sus halcones acusen a Irán de haber atacado a dos petroleros extranjeros que pasaban por aguas que la República Islámica patrulla de cerca no tiene nada de original, excepto en las banderas de los buques afectados. Desde la voladura del Maine en La Habana hasta el enfrentamiento a cañonazos con torpederas norvietnamitas en el incidente del Golfo de Tonkín, los problemas en alta mar le sirvieron a Washington como excusa para empezar guerras que se deseaba empezar.

En 1898, Estados Unidos estaba flexionando sus músculos imperialistas. Ya se había comido y estaba digiriendo la mitad de México –el 55 por ciento, para ser exactos– pero eso era considerado una manera de "completar" el territorio propio. Una nueva generación de políticos y empresarios quería que el país jugara un papel en el escenario mundial, rompiendo la tradición republicana y revolucionaria de mantenerse alejados de los conflictos entre coronas e imperios. La doctrina del Destino Manifiesto cubría moralmente las nuevas ideas imperiales: EE.UU. no iba a llevar la opresión a territorios colonizables sino que iba a liberar pueblos oprimidos, llevándoles los beneficios de un gobierno paternalista, republicano.

El primer objetivo fue el moribundo imperio español que, cosas de nuestras guerras de independencia, todavía conservaba algunas de sus posesiones más antiguas por la simple razón de que eran islas. La guerra de independencia cubana sirvió para preparar a la opinión pública norteamericana a través de ese nuevo instrumento de masas, la prensa amarilla. Así, los mambís cubanos fueron presentados como luchadores por la libertad y los españoles como bestias sedientas de sangre. En ese contexto, el secretario de la Armada Teddy Roosevelt mandó a La Habana al crucero acorazado Maine "para cuidar los intereses norteamericanos".

El Maine tenía apenas tres años de uso, pero ya era anticuado. Estados Unidos todavía no era la potencia industrial que sería pocos años después, con lo que necesitaba estampadoras de acero inglesas, que se demoraron en llegar. Entre el diseño del buque y su botadura pasaron casi diez años, justo en un momento de cambio profundo en la tecnología naval. De todos modos, La todavía escasa armada de EE.UU. lo tenía como una pieza fundamental y para su misión en Cuba bastaba y sobraba. Después de todo, se trataba de intimidar a los locales y el Maine era más fuerte que cualquier cosa con bandera española.

A las 21.40 del 15 de febrero de 1898, después de tres meses amarrado en el puerto habanero, el Maine voló por los aires, matando a casi toda su tripulación que dormía a bordo. Hubo 260 muertos y 89 sobrevivientes, que se salvaron más que nada porque la explosión fue a proa, donde se guardaba carbón y munición, y donde dormía la mayoría de la tripulación. Todavía hoy se discute qué pasó esa noche terrible, con estudiosos afirmando que efectivamente alguien atacó el barco –con una mina o un torpedo– o se trató de un fuego espontáneo causado por el tipo de carbón bituminoso que usaba la nave, muy inestable. Pero la prensa amarilla no lo dudó: habían sido los españoles y tenían que pagarlo. Poco después, Cuba, Puerto Rico y las Filipinas ganaban su "libertad" a manos norteamericanas.

La experiencia resultó tan positiva que se repitió en 1964, cuando el gobierno de Lyndon Johnson andaba buscando cómo vencer la resistencia interna para entrar de lleno en Vietnam. En ese momento todavía se podía negociar y la guerra entre el norte y el sur era más civil que otra cosa. El luego famoso Incidente del Golfo de Tonkín le arregló las cosas al presidente, que hasta logró que el Congreso abandonara su reluctancia y aprobara, por voto cantado, la teoría del dominó, aceptando que toda "agresión comunista" era causa suficiente para una intervención de Estados Unidos.

El incidente en sí ocurrió el 2 de agosto de 1964, cuando el buque de guerra liviano Maddox realizaba tareas de inteligencia electrónica cerca de las aguas territoriales de Vietnam del Norte. El Maddox era una de las naves asignadas a la operación Desoto, que interceptaba y analizaba las comunicaciones radiales vietnamitas, mapeando posiciones y equipos. El recorrido del Maddox por la costa norte de Vietnam había comenzado el 31 de julio, y cada día torpederas vietnamitas lo habían seguido. Pero el dos de agosto, tres torpederas P4, apenas más que lanchas armadas, convergieron sobre la nave americana y su comandante ordenó disparar tres cañonazos de advertencia. Los vietnamitas contestaron el fuego con torpedos y ametralladoras, un combate de pocos minutos que terminó con una torpederas seriamente dañada y bajas. El único daño que informaron los norteamericanos fue un agujero de bala en la obra muerta del Maddox.

Pero el entonces secretario de Defensa Robert McNamara no le contó esta secuencia de eventos a su presidente, sino que le informó que los vietnamitas habían abierto fuego directamente. Como admitió años después, McNamara prefirió mentirle a Johnson para "ayudarlo a decidirse". Lo mismo ocurrió dos días después con el segundo "incidente", cuando el Maddox abrió fuego "de radar" contra varios blancos que se acercaban en el mismo Golfo de Tonkín. Fuego de radar es una expresión que indica que uno no ve el blanco, debido al clima o a que está por abajo del horizonte, pero que puede atacarlo por detección electrónica. En este caso, todo indica, incluyendo los mismos informes de la Armada, que el Maddox no fue atacado. Los contactos de radar eran producto del mal tiempo en la zona. Pero esta segunda "agresión" sirvió para convencer al Congreso de que el peligro comunista era tan tangible como en Corea, lo que permitió enviar tropas en serio a Vietnam. Once años y muchísimos muertos después, Estados Unidos se retiraba derrotado del sudeste asiático.

La herramienta del incidente naval, parece, se guardó en un archivo para uso futuro. Un problema es que en la época del Maine casi no había cámaras y las andanzas del Maddox fueron en el mar, lejos de ojos indiscretos. Esta vez, el gobierno de Trump tuvo que acercar un videíto de baja definición en blanco y negro, tomado desde un dron, que muestra una lancha iraní haciendo algo junto al enorme casco del petrolero japonés. Según los iraníes, sus marinos estaban retirando una mina magnética, salvando de hecho el buque. Según Washington, eso prueba que Teherán estuvo involucrado en el ataque. Con lo que la ambigüedad queda a salvo.
#569
Cita de: Machacador en 15 Junio 2019, 14:41 PM
El ser humano es incapaz de hacer algo que sea inviolable por el propio ser humano por la sencilla razón de que le es familiar, lo conoce, o lo conocerá porque no es extraño a el... por mas inviolable que se suponga sea un sistema, si hay la intención de violarlo se violará... solo es seguro un sistema si nadie tiene interés en incursionar en el, pero el caso es que así no funciona el ser humano, porque cada vez que se presenta un reto sobrará quien intente vencerlo...

Seguro, nada es infalible, pero Stuxnet (o un pendrive comun y silvestre) no es suficiente con un DC configurado solo para dispositivos autorizados.
#570
Cita de: Machacador en 15 Junio 2019, 14:05 PM
Todo lo que es factible de contaminación en cualquier momento se contaminará... y lo que no también... el sistema de control de los centrifugadores de Plutonio de la planta nuclear iraní aquella estaban totalmente aislados de la red, pero aún así le entro  el "stuxnet" y la inutilizó irremediablemente...

Mientras haya gente programando malwares, siempre habrán contaminaciones, esa es una ley de vida... no importa los sistemas de protección que se implementen, siempre encontraran la manera de saltarlos...

Nada es infalible y siempre hay varios vectores de ataque pero Stuxnet no hubiera infectado un Windows con Device Control si estaba configurado para que no pudiera leer el ejecutable infectado en el pendrive.

Windows infection
Stuxnet attacked Windows systems using an unprecedented four zero-day attacks (plus the CPLINK vulnerability and a vulnerability used by the Conficker worm). It is initially spread using infected removable drives such as USB flash drives, which contain Windows shortcut files to initiate executable code.