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ú

Temas - dxr

#1
Scripting / Threads Mutex perl
19 Diciembre 2005, 12:04 PM
Buenas.

Estoy haciendo una aplicacion que crea unos cuantos procesos hijos y cada proceso hijo lee y modifica una variable local que es un contador.  Por ejemplo entra en el proceso hijo y si hace la funcion que tiene que hacer pues a $Cont  que es la variable global le incrimenta en uno. El problema es que cuando hay 50 procesos hijos leyendo y modificando el dato ala vez pues esto es el kaos, Entonces me entere de q se podian usar semaforos y mutex, y por lo q he estado leyendo creo q me vendria mejor usar mutex, el problema esque nose muy bien como usarlos, ya q nose si crear el mutex justo antes de leer la variable, luego modificarla y luego desblokearla para q otro proceso hijo haga lo mismo... entonces estoy un poco perdio :S

http://perlhelp.web.cern.ch/PerlHelp/site/lib/Win32/Mutex.html
#2
Gospel... bonito taller vas acer lo seguire... peor antes una cosa XDD

ANELKAOS Y YO hemos estado echando un vistazo a tu source y no nos gusta para nada XDDD

1º.... veamos pongo el sopurce y lo analizamos:



#include <stdio.h>
#include <stdlib.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>

int main (int argc, char **argv)
{
      bdaddr_t bdaddr;//Estructura bdaddr_t para almacenar la direccion MAC
      char MAC_dev[248];//Direccion MAC del dispositivo
      char nombre_dev[248];//Nombre del dispositivo
      int id_dev;//Identificador del dispositivo
      int socket;//Socket HCI

      if(argc < 2)
      {
            printf("Sintaxis: %s <direccion MAC>\n",argv[0]);
            exit(1);
      }

      printf("+ BlueResolver por Gospel [elblogdegospel.blogspot.com]\n\n");

      strcpy(MAC_dev,argv[1]);

      printf("Detectando nombre del dispositivo <%s>...\n",MAC_dev);

      baswap(&bdaddr, strtoba(MAC_dev));
                     
      id_dev = hci_get_route(&bdaddr);
      if (id_dev < 0)
      {
            printf("[!] Error. Dispositivo no encontrado.\n");
            exit(1);
      }
                     
      socket = hci_open_dev(id_dev);
      if (socket < 0)
      {
            printf("[!] Error. Fallo al intentar abrir HCI.\n");
            exit(1);
      }
                     
      int timeout = 10000;
      if (hci_read_remote_name(socket,&bdaddr,sizeof(nombre_dev), nombre_dev, timeout) == 0)
      {
            printf("Dispositivo encontrado:\n\tMAC: %s\n\tNombre: %s\n",MAC_dev,nombre_dev);
      }
      else
      {
            printf("[!] Error. No se ha podido obtener el nombre del dispositivo Bluetooth.\n");
      }
             
      close(socket);

      return(0);
}



Citar
      char MAC_dev[248];//Direccion MAC del dispositivo

Yo esto lo ubiera declarado como puntero, asi prebeemos un stack overflow y si tienes el fallo pues kedaria en un heap overflow

y luego esto ya si q si XD:

Citar
strcpy(MAC_dev,argv[1]);

asi a capon? reservas 248 bytes peor si meten 83476593847659324 ale pa dentro pa la pila no? y na menos en un programa que rekiere privilegios de root XD.

yo lo que aria primero seria declarar ese array como punteo y luego antes de hacer el:

strcpy hacer una comprobacion de los bytes que ocupa argv[1] y si supera los q tu kieres saltar un error y esas cosas...

Sigue con el taller que me interesa ;D
#3
Electrónica / BUSCANDO INFORMACION
28 Octubre 2003, 06:58 AM
A ver si alguien sabe donde se pueden encontrar esquemas de circuitos.... y si son piratilla mejor...
y si alguien sabe ALGO sobre las slim card q informe... xq no encuentro nada de eskemas y menos d elas slim card....
#4
Hola tengo un par de dudas referente al registro.
Mi idea es editar copiar y añandir al registro:

Private Sub Command1_Click()
On Error Resume Next
MsgBox "Se creara una clave en el Registro HKEY_CURRENT_USER\Software\RAdmin\v2.xD\Parameters y se llamara lala y su ruta sera c:\lala.txt", vbInformation, "Crear clave al registro"
Set reg = CreateObject("WScript.Shell")
reg.regwrite "HKEY_CURRENT_USER\Software\RAdmin\v2.xD\Parameters", "C:\lala.txt"
End Sub

Private Sub Command2_Click()
On Error Resume Next
MsgBox "Este codigo borrara la clave creada,si existiera", vbInformation, "Borrar clave"
Set borrar = CreateObject("WScript.Shell")
borrar.RegDelete "HKEY_CURRENT_USER\Software\RAdmin\v2.xD"
End Sub

Private Sub Command3_Click()
On Error Resume Next
MsgBox "Se copiara una clave en el Registro HKEY_CURRENT_USER\Software\RAdmin\v2.xD\Parameters y se llamara lala2 y su ruta sera c:\lala2.txt", vbInformation, "Copiar clave al registro"
Set reg = CreateObject("WScript.Shell")
reg.regcopy "HKEY_CURRENT_USER\Software\RAdmin\v2.0\Parameters", "C:\lala2.txt"
End Sub


bueno pos lo unico q consigo con esto es añadir calves al registro y borrarlas pero por ejemplo no se me borra 2.xD solo su interior...

Y como ago para q me cree un archivo con la entrada de una direccion q yo le indico en el registro?? por ejemplo la clave del radmin q me la guarde en un txt. como seria???


Gracias.