Clase PCGuard en Ruby
PC Guard es una excelente herramienta para la protección de software y generación de licencias de usuario en Windows. Uno de sus productos es el Activation suite, que permite desarrollar aplicaciones que generen licencias válidas de PC Guard.
La documentación del Activation suite Web sólo proporciona ejemplos de uso en PHP y ASP. La siguiente es una clase hecha en Ruby para manejar la validación y generación de licencias.
require 'win32ole' class PCGuard # Propiedades de sólo lectura attr_reader :activacion, :remocion, :volumendd, :bios, :cpu, :serialdd, :os, :cd, :red # Propiedades de lectura y escritura attr_accessor :programid, :sitecode, :mid, :features # Valores del "ResponseCode" del PCGuard STATUS_OK = 0 # Success STATUS_BAD_SITE_CODE = 1 # Site code is invalid STATUS_BAD_PROGRAM_ID = 3 # ProgramID is invalid STATUS_BAD_MID_CODE = 6 # Machine ID is invalid STATUS_MID_CODE_ERROR = 7 # Machine ID decryption error # Excepciones que genera la clase class BadSiteCode < StandardError; end class BadProgramID < StandardError; end class BadMID < StandardError; end class MIDCodeError < StandardError; end # Valida y genera todos los códigos de la licencia def initialize(programid = "", sitecode = "", mid = "", features = 0) # Inicializar variables con los códigos de PCGuard @programid, @sitecode, @mid, @features = programid, sitecode, mid, features # Inicializar variables de las propiedades @activacion, @remocion, @volumendd, @bios, @cpu, @serialdd, @os, @cd, @red = "", "", 0, 0, 0, 0, 0, 0, 0 # Generar códigos, si se han pasado todos los campos necesarios al inicializar el objeto self.generar unless @programid.empty? || @sitecode.empty? || @mid.empty? end # Genera todos los códigos def generar # Generar un error si no se han cargado todos los códigos de PCGuard necesarios para generar una licencia raise ArgumentError if @programid.empty? || @sitecode.empty? || @mid.empty? # Crear objeto l = WIN32OLE.new("icgweb.icgen") # Inicializar códigos l.ProgramID = @programid # Generar códigos de ifentificación de la máquina l.SiteCode = @sitecode l.MachineID = @mid l.V5_CheckMachineID() # Validar if l.ResponseCode != STATUS_OK raise BadSiteCode if l.ResponseCode == STATUS_BAD_SITE_CODE raise BadMID if l.ResponseCode == STATUS_BAD_MID_CODE raise MIDCodeError if l.ResponseCode == STATUS_MID_CODE_ERROR end # Generar código de activación y remosión l.SiteCode = @sitecode l.MachineID = @mid l.Features = @features l.V5_CalculateActivationCode() # Validar if l.ResponseCode != STATUS_OK raise BadSiteCode if l.ResponseCode == STATUS_BAD_SITE_CODE raise BadProgramID if l.ResponseCode == STATUS_BAD_PROGRAM_ID raise BadMID if l.ResponseCode == STATUS_BAD_MID_CODE end # Asignar valores a las variables del objeto @activacion = l.ActivationCode # Código de activación @remocion = l.RemoveCode # Código de remosión @volumendd = l.DriveID.to_i # Hard drive volume serial ID @bios = l.BiosID.to_i # Motherboard bios ID @cpu = l.CPUID.to_i # CPU ID @serialdd = l.HDHWID.to_i # Hard drive hardware ID @os = l.OSID.to_i # Operating system ID @cd = l.CDHWID.to_i # CD/DVD hardware ID @red = l.NETID.to_i # Network card ID # Retornar el código de activación de la licencia @activacion end end
Tiene propiedades de lectura/escritura para los códigos principales de PC Guard: ProgramID (programid
), Site Code (sitecode
), MID (mid
) y Features (features
); propiedades de sólo lectura para los resultados de la generación: código de activación (activacion
), código de remoción (remocion
); propiedades de sólo lectura para los código de identificación del equipo: serial de la partición del disco duro (volumendd
), BIOS del equipo (bios
), CPU (cpu
), serial del disco duro (serialdd
), sistema operativo (os
), CD/DVD (cd
), tarjeta de red (red
); y un único método para generar todos los códigos (generar
).
Para usarla, puedes hacer algo como:
require 'PCGuard' licencia = PCGuard.new licencia.programid = "XXXXXXXXXXXXXXXXXXXXXXXX" licencia.sitecode = "YYYYYYYY" licencia.mid = "ZZZZ-ZZZZ-ZZZZ-ZZZZ" licencia.generar # => "ABCD1234-ABCD1234-ABCD1234-ABCD1234"
O, de manera más resumida:
licencia = PCGuard.new("XXXXXXXXXXXXXXXXXXXXXXXX", "YYYYYYYY", "ZZZZ-ZZZZ-ZZZZ-ZZZZ")
Por supuesto, proporcionando códigos válidos para ProgramID, Site Code y MID.
También genera las siguientes excepciones:
- ArgumentError: falta alguno de los códigos necesarios (programid, sitecode o mid)
- BadProgramID: error en el ProgramID (identificador del proveedor de software)
- BadSiteCode: error en el Site Code del equipo
- BadMID: error en el MID del equipo
- MIDCodeError: error en el Site Code y/o el MID.
2 comentarios:
Hola amigo soy nuevo en esto como puedo hacerle para generar dichos codigos algo asi como un keygen no se si me pudieras ayudar gracias.
("Anónimo", no me dejaste donde responderte, así que lo hago aquí por si lo lees luego)
No sabría cómo generar esos códigos. Para eso uso la herramienta PCGuard (www.sofpro.com). Revisa su web a ver si te sirve para lo que lo necesites.
Publicar un comentario