Jump to content
Fivewin Brasil

SERIAL DE FÁBRICA DO HD (PIRATARIA)


Ladinilson

Recommended Posts

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

 

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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).

:D

Link to comment
Share on other sites

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.
 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...