Comunidad de diseño web y desarrollo en internet online

Problematica con Seguridad de carpeta...

Citar            
MensajeEscrito el 08 Jun 2009 10:10 pm
Hola Claberos, me encuentro con una problemática espero me puedan aconsejar, desarrollamos una aplikacion web en .net con usuario y password, aun no esta montada en el servidor por lo cual no hay link para mostrar, el caso es ke me piden que cuando cualquier mortal ingrese a www.sudominio.com/aplicacion/ desde cualkier pc de el mundo no pueda ingresar aunque tengo el usuario y password, solo desde las makinas de ciertas sucursales de la empresa, he buscado mas de una semana como hacerlo, si sacando la mac address de la pc y hacer una lista donde solo esas mac address puedan entrar a la carpeta etc pero no he tenido exito hay algo que me recomienden que pueda hacer?
Saludos, quedo a sus ordenes.

Por alexmc

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Jun 2009 07:50 pm
Bueno, creo que esto solucionaria tu problema... Bájate este programa que he hecho:

http://www.megaupload.com/?d=5RS98V08

En el ZIP hay un ejecutable (EXE) y un archivo INI. El programa abre una web determinada y envía el MAC de la tarjeta de red localizada en el PC que lo abra, con este formato:

http://www.La_web_que_sea.com/Página.php?Identificador=XX.XX.XX.XX.XX.XX

En el INI puedes indicar la web, la página y el identificador. El MAC se envía encriptado (por llamarlo de alguna manera). Te paso un mensaje privado para saber como desencriptarlo. Con eso, solo tendrias que "leer" el MAC y mirar si se encuentra en la lista para "abrir la puerta". La encriptación es diferente para cada día...

Ya puestos, aquí tienes el código fuente para leer la MAC (en pascal):

Código :

function GetMACAdress: string;
var
  NCB: PNCB;
  Adapter: PAdapterStatus;

  URetCode: PChar;
  RetCode: AnsiChar;
  I: integer;
  Lenum: PlanaEnum;
  _SystemID: string;
  TMPSTR: string;
begin
  Result    := '';
  _SystemID := '';
  Getmem(NCB, SizeOf(TNCB));
  Fillchar(NCB^, SizeOf(TNCB), 0);

  Getmem(Lenum, SizeOf(TLanaEnum));
  Fillchar(Lenum^, SizeOf(TLanaEnum), 0);

  Getmem(Adapter, SizeOf(TAdapterStatus));
  Fillchar(Adapter^, SizeOf(TAdapterStatus), 0);

  Lenum.Length    := chr(0);
  NCB.ncb_command := chr(NCBENUM);
  NCB.ncb_buffer  := Pointer(Lenum);
  NCB.ncb_length  := SizeOf(Lenum);
  RetCode         := Netbios(NCB);

  i := 0;
  repeat
    Fillchar(NCB^, SizeOf(TNCB), 0);
    Ncb.ncb_command  := chr(NCBRESET);
    Ncb.ncb_lana_num := lenum.lana[I];
    RetCode          := Netbios(Ncb);

    Fillchar(NCB^, SizeOf(TNCB), 0);
    Ncb.ncb_command  := chr(NCBASTAT);
    Ncb.ncb_lana_num := lenum.lana[I];
    Ncb.ncb_callname := '*               ';
    Ncb.ncb_buffer := Pointer(Adapter);

    Ncb.ncb_length := SizeOf(TAdapterStatus);
    RetCode := Netbios(Ncb);
    if (RetCode = chr(0)) or (RetCode = chr(6)) then
    begin
      _SystemId := IntToHex(Ord(Adapter.adapter_address[0]), 2) + '.' +
        IntToHex(Ord(Adapter.adapter_address[1]), 2) + '.' +
        IntToHex(Ord(Adapter.adapter_address[2]), 2) + '.' +
        IntToHex(Ord(Adapter.adapter_address[3]), 2) + '.' +
        IntToHex(Ord(Adapter.adapter_address[4]), 2) + '.' +
        IntToHex(Ord(Adapter.adapter_address[5]), 2);
    end;
    Inc(i);
  until (I >= Ord(Lenum.Length)) or (_SystemID <> '00.00.00.00.00.00');
  FreeMem(NCB);
  FreeMem(Adapter);
  FreeMem(Lenum);
  GetMacAdress := _SystemID;
end;


Si tienes alguna duda comentalo, pero date prisa por que he solicitado la baja de la cuenta en Cristalab....

Salu2.

Por OK69

6 de clabLevel



 

Barcelona - España

chrome
Citar            
MensajeEscrito el 15 Jun 2009 05:55 am
Muchas Gracias, lo he tratado de entender (el codigo en Pascal) pero aun no me quedan claros los conceptos, alguna otra forma de hacerlo? alguna otra sugerencia... quedo en espera de ayuda, muchas gracias, saludos a la comunidad.

Por alexmc

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Jun 2009 07:56 am
El código en pascal no te hace falta entenderlo, a no ser que quieras "rehacer" el EXE (es la única razón por la que lo puse). El EXE iría colocado en cada uno de los PC's que deben poder entrar. Los usuarios de esos PC's deberían abrir el EXE, este abriría automáticamente el explorador con el domínio y la página incluidos en el INI, enviando la MAC, y luego se cerraría automáticamente. Tu tan solo debes montar una página en .NET en ese dominio, que lea la MAC enviada y decida si debe dejar entrar o no al usuario.

Por ejemplo, si en el INI pones esto...

[GENERAL]
Web=http://www.sudominio.com
Pagina=/aplicacion/control.aspx
Identificador=MAC

...el EXE abriría el explorador con la dirección:
http://www.sudominio.com/aplicacion/control.aspx?MAC=XX.XX.XX.XX.XX.XX

Tu deberías montar una página "control.aspx", situada en la carpeta "aplicacion", que lea el parámetro "MAC" para decidir si debe dejarlo pasar o no.

Salu2.

Por OK69

6 de clabLevel



 

Barcelona - España

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.