Ladinilson Posted April 6, 2022 Report Share Posted April 6, 2022 Bom dia pessoal Sei que o assunto já foi discutido no tópico... Mas a rotina com a DLL não funcionou e a minha preocupação vem de um que nem conhecimento muito em informática e tampouco de um programador, me levantar esta preocupação quanto a segurança de nossos sistemas pois todos sabem que existem vários programas para burlar isso. Alguém teve realmente a preocupação com isso pois SOMENTE COM O SERIAL DE FÁBRICA nos daria essa segurança porque o nSerialHD() muda este serial ao HD ser formatado e me parece que os programas podem quebrar esta segurança feita por ele. Obrigado Quote Link to comment Share on other sites More sharing options...
vailtom Posted April 6, 2022 Report Share Posted April 6, 2022 Olá, O número serial do HD pode ser trocado a qqer momento, existem softwares que permitem alterar isto e nem precisa formatar nada. Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted April 6, 2022 Author Report Share Posted April 6, 2022 5 minutos atrás, vailtom disse: Olá, O número serial do HD pode ser trocado a qqer momento, existem softwares que permitem alterar isto e nem precisa formatar nada. Sei disso, mas segundo alguns sites e até mesmo aqui, o serial de fábrica não muda ou esta informação esta incorreta Vailton? Quote Link to comment Share on other sites More sharing options...
emotta Posted April 6, 2022 Report Share Posted April 6, 2022 Quando eu comercializava a solução em desktop, minha solução para proteger contra pirataria foi gerar uma KEY para o cliente com base na razão social do cadastro de empresa e a data de validade da key. Então o cara até conseguia copiar o sistema porem todos os relatórios sairiam com a razão social liberada e se ele alterasse a razão social, a key se tornaria inválida e ele teria que pedir a nova key ou usar o sistema com a razão social de outro. Se quiser adotar esse modelo me avisa que preparo um exemplo simples e vc mesmo poderá alterar o algoritmo de geração da KEY a seu gosto. Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted April 6, 2022 Author Report Share Posted April 6, 2022 11 minutos atrás, emotta disse: Quando eu comercializava a solução em desktop, minha solução para proteger contra pirataria foi gerar uma KEY para o cliente com base na razão social do cadastro de empresa e a data de validade da key. Então o cara até conseguia copiar o sistema porem todos os relatórios sairiam com a razão social liberada e se ele alterasse a razão social, a key se tornaria inválida e ele teria que pedir a nova key ou usar o sistema com a razão social de outro. Se quiser adotar esse modelo me avisa que preparo um exemplo simples e vc mesmo poderá alterar o algoritmo de geração da KEY a seu gosto. Boa Mota mas como tenho vários sistemas, alguns não se usa dados de empresas em muitos porções do programa. Tenho a rotina também a autorização pela internet através de uma conexão SQL mas essa então é ainda mais fácial para quem pirateia. Li um artigo que em Delphi que tem esta função e também usando comandos do Windows é possível mas em Clipper/Harbour/xHarbour, nada concreto. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 6, 2022 Report Share Posted April 6, 2022 Realmente nesse caso a estratégia de barrar pela razão social não te ajuda Quote Link to comment Share on other sites More sharing options...
vailtom Posted April 7, 2022 Report Share Posted April 7, 2022 Em 06/04/2022 at 09:12, Ladinilson disse: Sei disso, mas segundo alguns sites e até mesmo aqui, o serial de fábrica não muda ou esta informação esta incorreta Vailton? Eu confundi serial do HD com serial de fábrica, coisa de quem já entrou no "enta" (>39 anos). Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 7, 2022 Report Share Posted April 7, 2022 Mira se ayuda: http://forums.fivetechsupport.com/viewtopic.php?f=6&t=25108&sid=bc6eb4bea406003d93eb51a2b20fc629 #include "FiveWin.ch" STATIC cSerialTarj FUNCTION Main() cSerialTarj := "" cSerialTarj := Tarjeta_Madre() ? cSerialTarj RETURN NIL Function Tarjeta_Madre() LOCAL oLoc := CreateObject( "wbemScripting.SwbemLocator" ) LOCAL oSrv := oLoc:ConnectServer(,"root\cimv2") LOCAL aDrives := oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" ) LOCAL oDrive// , cSerialTarj := "" LOCAL aData := {} LOCAL nAt FOR Each oDrive in aDrives AADD( aData, oDrive:SerialNumber ) NEXT FOR nAt := 1 to Len( aData ) cSerialTarj += Upper( AllTrim( cStr( aData[nAt] ) ) ) NEXT nAt // ? cSerialTarj Return( cSerialTarj ) Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 7, 2022 Report Share Posted April 7, 2022 Mira si ayuda: #Include "FiveWin.ch" FUNCTION WMainInfo() LOCAL oDatos, oSrv, oJob, i LOCAL nFree := "" LOCAL oLoc := CreateObject( "wbemScripting.SwbemLocator" ) LOCAL objWMI := oLoc:ConnectServer() LOCAL oSistema := objWMI:ExecQuery( "Select * from Win32_PhysicalMedia" ) LOCAL oDisco := objWMI:ExecQuery( "Select * from Win32_LogicalDisk" ) LOCAL oParti := objWMI:ExecQuery( "Select * from CIM_DiskPartition" ) LOCAL oDisket := objWMI:ExecQuery( "Select * From Win32_LogicalDisk Where DeviceID = 'A:'" ) LOCAL objUnd := objWMI:ExecQuery( "Select * from Win32_MappedLogicalDisk" ) LOCAL oUnd := objWMI:ExecQuery( "Select * from Win32_CDROMDrive" ) LOCAL oResolu := objWMI:ExecQuery( "Select * from Win32_DesktopMonitor" ) LOCAL oSistem := objWMI:ExecQuery( "Select * from Win32_OperatingSystem" ) LOCAL oUsers := objWMI:ExecQuery( "Select * from Win32_Account" ) LOCAL oServ := objWMI:ExecQuery( "Select * from Win32_Service Where Name = 'Themes'" ) LOCAL oTime := objWMI:ExecQuery( "Select * from Win32_LocalTime" ) LOCAL oProc := objWMI:ExecQuery( "Select * from Win32_Processor" ) LOCAL oJbs := objWMI:ExecQuery( "SELECT Product, SerialNumber FROM Win32_BaseBoard" ) LOCAL oIpSet := objWMI:ExecQuery( "SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE" ) LOCAL oList := objWMI:ExecQuery( "Select * from Win32_ComputerSystem" ) // Return(Nil) objWMI := oLoc:ConnectServer() oJbs := objWMI:ExecQuery( "select * from Win32_BaseBoard" ) // oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" ) FOR EACH oDatos In oSistema MsgInfo( "Serial de fabrica: " + AllTrim( cValToChar( oDatos:SerialNumber ) ), "Numero de serie del disco duro" ) NEXT FOR EACH oDatos In oDisco MsgInfo( "Unidad: " + AllTrim( cValToChar( oDatos:Name ) ) + "\ Serial: " + AllTrim( cValToChar( oDatos:VolumeSerialNumber ) ), "Unidad y serial lógico de las unidades de disco" ) NEXT FOR EACH oDatos in oParti MsgInfo( AllTrim( cValToChar( oDatos:Name ) ) + " - Tamaño: " + AllTrim( cValToChar( oDatos:Size ) ) + " En: " + AllTrim( cValToChar( oDatos:SystemName ) ) + " - Tipo: " + AllTrim( cValToChar( oDatos:TYPE ) ), "Particiones disponibles" ) NEXT FOR EACH oDatos in oDisket nFree := oDatos:FreeSpace IF ValType( nFree ) = "U" MsgInfo( "No hay diskete en la unidad A:\", "Aviso del WMI de Windows" ) ELSE MsgStop( "Hay un diskete en la unidad A:\", "Aviso del WMI de Windows" ) ENDIF NEXT FOR EACH oDatos In objUnd MsgInfo( "Device ID: " + oDatos:DeviceID + " Nombre: " + oDatos:Name + " Espacio Libre: " + cValtoChar( oDatos:FreeSpace ) + " Tamaño: " + cValtoChar( oDatos:Size ), "Lista de unidades Mapeadas en Mi PC" ) NEXT FOR EACH oDatos in oUnd MsgInfo( "Unidad: " + oDatos:Drive + " " + "Nombre: " + oDatos:Caption, "Unidades de CD instaladas en el equipo" ) NEXT FOR EACH oDatos in oResolu MsgInfo( "Trabajando a Resolución de Alto: " + cValToChar( oDatos:ScreenHeight ) + " y Ancho: " + cValToChar( oDatos:ScreenWidth ), "Resolucion de Panralla" ) NEXT FOR EACH oDatos In oSistem MsgInfo( oDatos:InstallDate, "Fecha de Instalación de Windows XP" ) NEXT FOR EACH oDatos in oSistem MsgInfo( "Directorio de Windows es: " + oDatos:WindowsDirectory + " Directorio del Sistema es: " + oDatos:SystemDirectory, "Directorio de Windows y del Sistema" ) NEXT /* FOR Each oDatos in oUsers MsgInfo(cValToChar(oDatos:Name) + " - " + cValToChar(oDatos:Caption),"Lista de Usuarios de Windows") NEXT MsgInfo("Deshabilitarndo los Themes en Windows XP") FOR Each oDatos in oServ oDatos:StopService() SysRefresh() NEXT MsgInfo("Habilitando los Themes en Windows XP") FOR Each oDatos in oServ oDatos:StartService() SysRefresh() NEXT */ FOR EACH oDatos in oSistem MsgInfo( oDatos:CAPTION + " " + oDatos:VERSION, "Sistemas operativos instalados en el PC" ) NEXT FOR EACH oDatos in oTime MsgInfo( "Día: " + cValToChar( oDatos:DAY ) + CRLF + ; "Día de la semana: " + cValToChar( oDatos:DayOfWeek ) + CRLF + ; "Hora: " + cValToChar( oDatos:Hour ) + CRLF + ; "Minutos: " + cValToChar( oDatos:Minute ) + CRLF + ; "Mes: " + cValToChar( oDatos:MONTH ) + CRLF + ; "Segundos: " + cValToChar( oDatos:Second ) + CRLF + ; "Semana en el mes: " + cValToChar( oDatos:WeekInMonth ) + CRLF + ; "Año: " + cValToChar( oDatos:YEAR ), "Dia, Hora, Mes y Año desde WMI" ) NEXT FOR EACH oDatos IN oProc MsgInfo( "El Nombre del Procesador es: " + AllTrim( cValtoChar( oDatos:Name ) ), "Desde WMI" ) MsgInfo( "la Velocidad Actual del Procesador es: " + AllTrim( cValtoChar( oDatos:CurrentClockSpeed ) ) + " Mghz", "Desde WMI" ) MsgInfo( "la Velocidad Màxima del Procesador es: " + AllTrim( cValtoChar( oDatos:MaxClockSpeed ) ) + " Mghz", "Desde WMI" ) NEXT FOR EACH oDatos IN oJbs MsgInfo( "El Tipo de la MotherBoard es: " + AllTrim( cValtoChar( oDatos:Product ) ), "Desde WMI" ) MsgInfo( "El Número de Serie de la MotherBoard es: " + AllTrim( cValtoChar( oDatos:SerialNumber ) ), "Desde WMI" ) NEXT FOR EACH oDatos IN oIPSet MsgInfo( "El IPAddress es: " + AllTrim( cValtoChar( oDatos:IPAddress( 0 ) ) ), "Desde WMI" ) MsgInfo( "El MacAddress es: " + AllTrim( cValtoChar( oDatos:IPAddress( 1 ) ) ), "Desde WMI" ) NEXT FOR EACH oDatos IN oList IF oDatos:PartOfDomain MsgInfo( "Dominio: " + oDatos:Domain, "Desde WMI" ) ELSE MsgInfo( "Grupo de Trabajo: " + oDatos:Domain, "Desde WMI" ) ENDIF NEXT RETURN NIL Regards, saludos. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.