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 - Skali

#21
Buenas! que tal? Les quería preguntar a qué se debe éste fenómeno que estoy experimentando. Tengo mi amplificador Panasonic del 1200 antes de cristo. Éste modelo específicaemente:




y lo tengo conectado x auxiliar a la salida de audio de mi pc. Suelo enchufar mis auriculares a la salida: "phono" de dicho ampli. A veces mientras tengo la musica en pausa sin otro sonido reproduciendoce desde el pc, se oye la radio haciendo interferencia, muy tenuemente, y parpadea el led de la parte de arriba "quartz lock", que está justo al lado del display en la parte de arriba a la izqueirda del ampli.

A qué se debe éste fenómeno?
#22
Excelente MAFUS! Muchas gracias por desmenuzar la línea parte por parte y analizarla, me ayudaste a entender con éste ejemplo práctico cómo leer una línea compleja teniendo en cuenta la precedencia de operadores. Ahora todo queda bastante más claro. Gracias nuevamente! Saludos.
#23
Buenas! Gracias srWhiteSkull por leer y responder, pero todavía no termino de entender... Si el código fuera asi:

h->original_function[ASM_HOOK_CODE_OFFSET] = h->modified_function;

Podría decir que al campo original_function del registro h en la posición ASM_HOOK_CODE_OFFSET se le asigna el campo modified_function del mismo registro h, pero lo que me hace marear mucho es lo que está antes, es como una conversión de tipos muy extraña, por eso me gustaría si pudieramos dividir la linea parte por parte y analizarla para entenderla bien. Gracias desde ya.

Saludos!
#24
Buenas, estaba analizando el código fuente de un kernel rootkit, y leyendo la documentación de las apis que se utilizan más o menos me estoy dando mania, aunque hay lineas que tal vez me cuestan bastante comprender, como ésta:

*(void **)&((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] = h->modified_function;

Aquí les dejo un fragmento del rootkit para que les sea más facil entender:

// ========== ASM HOOK LIST ==========

#if defined __i386__
   // push 0x00000000, ret
   #define ASM_HOOK_CODE "\x68\x00\x00\x00\x00\xc3"
   #define ASM_HOOK_CODE_OFFSET 1
   // alternativly we could do `mov eax 0x00000000, jmp eax`, but it's a byte longer
   //#define ASM_HOOK_CODE "\xb8\x00\x00\x00\x00\xff\xe0"
#elif defined __x86_64__
   // there is no push that pushes a 64-bit immidiate in x86_64,
   // so we do things a bit differently:
   // mov rax 0x0000000000000000, jmp rax
   #define ASM_HOOK_CODE "\x48\xb8\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe0"
   #define ASM_HOOK_CODE_OFFSET 2
#else
   #error ARCH_ERROR_MESSAGE
#endif

struct asm_hook {
   void *original_function;
   void *modified_function;
   char original_asm[sizeof(ASM_HOOK_CODE)-1];
   struct list_head list;
};

LIST_HEAD(asm_hook_list);

/**
* Patches machine code of the original function to call another function.
* This function should not be called directly.
*/
void _asm_hook_patch(struct asm_hook *h)
{
   DISABLE_W_PROTECTED_MEMORY
   memcpy(h->original_function, ASM_HOOK_CODE, sizeof(ASM_HOOK_CODE)-1);
   *(void **)&((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] = h->modified_function;
   ENABLE_W_PROTECTED_MEMORY
}


Link del rootkit: https://github.com/nurupo/rootkit/blob/master/rootkit.c

no quiero que me expliquen todo el código, solo quiero saber como interpretar la línea que marqué más arriba (sería la línea 36 en éste fragmento).

Muchas gracias desde ya. Saludos

#25
Muchas gracias srWhiteSkull por sacarme la duda y por los links! Me resultó muy útil.

Saludos!
#26
Buenas a todos! Quería saber si estoy acertado en lo que digo o si me estoy equivocando feo. Según lo que leí, el firmware es el software que controla físicamente al hardware y que se suele encontrar en chips ROM/EEPROM. Mi duda es la siguiente. Los progrmas que uno escribe y graba sobre Arduino son considerados firmware? Para mi es asi, ya que sería software que controla a los componentes físicos y se encuentra en la memoria EEPROM de Arduino. Gracias de antemano.

Saludos
#27
Electrónica / Re: Cual UPS/SAI prefieren?
19 Mayo 2018, 09:49 AM
Buenas! Gracias por responder. Estuve mirando los UPS APC y vi que el de 550w me costaría lo mismo que uno y medio de los baratos. No sería demasiado el sacrificio. Vos decis que 550w no alcanzan o no son reales? Porque mi fuente es de 500w y el monitor de 40w, en mi caso aparentemente no me estaría excediendo de watss... Despues el APC de 800w sale como comprar dos y medio de los baratos... Ahi si sería bastante el sacrificio. Igual yo lo haría, pero me gustaría saber por qué pensas que hay que elegir uno de tanta potencia. Si es por el tema escalabilidad, es decir, para cubrir los consumos de una computadora más grande el día que la quiera cambiar,  ese no sería un problema, porque la PC que tengo ahora se la dejaría a algún familiar con ese mismo UPS en caso de que la PC nueva se exceda de watss. El que se quiera sumar para opinar sobre el tema marca y potencias está bienvenido! Gracias PalitroqueZ nuevamente.

Actualizo:
Me confundí con la medida, los 550w/800w eran en VA, y según vi hay que multiplicarlo por 0,65 para tener su valor en watts y daría un valor más chico, 358w/520w respectivamente en ésta caso. Igual también dice que lo que la fuente provee nunca es usado al 100%, asi que debería calcular el consumo total de mi máquina. Y según el ups que me recomendas de 780w para arriba, medido en VA, serían 1200 VA. Y ese ya sale una fortuna jaja


Saludos!
#28
Electrónica / Cual UPS/SAI prefieren?
18 Mayo 2018, 23:45 PM
Buenas! Hace una semana perdí un disco rígido y mi papá una fuente de alimentación (el mismo día), por cortes de luz. Me quiero comprar un UPS/SAI y quería ver que opinaban ustedes. Quiero uno ecónomico, pero quiero que me digan si los que les muestro son buenos o no son tan confiables.

Opción 1:

https://articulo.mercadolibre.com.ar/MLA-621215255-ups-estabilizador-trv-neo-650-650va-4-tomas-2-anos-gtia-_JM

Opción 2:

https://articulo.mercadolibre.com.ar/MLA-613299605-ups-estabilizador-lyonn-ctb-800a-800w-800va-soft-mexx-_JM


El primero es marca Trv, de 650w, muy barato.
El segundo es marca Lyoon de 800w ligeramente más caro.

Mi PC tiene una fuente de 500w y también habría que sumarle el monitor, que es un Samsung VGA de 23'. Quería que me dijeran si me conviene pagar la diferencia de precio para tener 150w, aunque yo creo que con mi PC y mi monitor con 650w estaría bien... Pero por ahí la marca del primero no es tan buena como la del segundo o viceversa... Quiero que me den una recomendación. Y si quieren recomendar otro tambien, pero que sea económico.

Actualizo:

Opción 3:

https://articulo.mercadolibre.com.ar/MLA-619644676-ups-asium-850va-usb-rj11-hogar-oficina-estabilizador-_JM

Éste cuesta lo mismo que el Trv de 650w (el más barato), y es de 850w. Marca Asium. No se que tan confiable sea con esa relación potencia costo...


Gracias!
#29
Hola MAFUS! Gracias nuevamente por tu atención, es muy valorada! Siempre me haces dar cuenta que estoy planteando las cosas bien y que el error esta en otro lugar. Ahora me está funcionando con arreglos de 3 dimensiones. De tanto que toquetié la verdad que no se donde estaba el error, pero seguro me equivoque declarando mal otra variable o algo...

Aprovechando ésta situación, me gustaría preguntarte cuál es la manera más simple para depurar el código cuando crashea. Corregir los errores que devuelve el compilador suele ser facil, pero cuando ocurre algun segmentation fault o crasheos similares, cuál sería el procedimiento mas facil para chequear el código en busca del culpable?

Muchisimas gracias nuevamente.

Saludos!
#30
Buenas, me estoy haciendo un lio barbaro con los tipos en C. Estoy trabajando con strings y MPI. Necesito una variable que almacene un array de textos, en la que cada texto sería un array de strings, en el que cada string es un array de char...

Cada proceso worker necesita encontrar las 5 palabras que más aparecen en un texto. Hasta ahora lo que podría hacer es:

char palabrasQueMasAparecen[5][tamanioPalabra];

o bien:

char *palabrasQueMasAparecen[5];

for(int palabra=0; palabra<5; palabra++) {
     palabrasQueMasAparecen[palabra] = (char *) malloc(sizeof(char) * tamanioPalabra);
}


El asunto es que necesito almacenar en una misma variable, las palabras que más aparecen de cada uno de los procesos. Entonces pensé en algo como:

char palabrasQueMasAparecen[cantProcesos][5][tamanioPalabra];

o bien:

char *palabrasQueMasAparecen[cantProcesos][5];

for(int proceso=0; proceso<5; proceso++) {
for(int palabra=0; palabra<5; palabra++) {
palabrasQueMasAparecen[proceso][palabra] = (char *) malloc(sizeof(char) * tamanioPalabra);
}
}


El problema es que cada proceso tiene que enviar las 5 palabras que más usa al proceso maestro, a través de la función MPI_Send(), cuyo primer parámetro es la dirección de un buffer.

Como cada proceso debería enviar sus 5 palabras, yo pensé que cada uno debería enviar como primer parámetro de ésta función:

&palabrasQueMasAparecen[idProceso];


pero el programa está crasheando cuando lo quiero correr, y estoy seguro de que estoy usando mal los tipos, y estoy enviando mal el primer parámetro a dicha función... Necesitaría que me den una idea de como usar los tipos correctamente para resolver éste problema.

Muchas gracias desde ya!