tag online mp3tag mp3meta files and windows macos uniqueidentifier

windows - online - tag files and folders



¿Cuál es una buena forma de identificar de manera única una computadora? (15)

Estoy desarrollando software de escritorio para revender a un cliente. El cliente quiere restringir el software para que el código de registro sea específico para una y solo una computadora.

Además de usar el MAC de la tarjeta de red, ¿alguien tiene alguna otra técnica (que funcione tanto en Windows como en Mac OS X) para identificar de manera única una computadora?


¿Qué hay de hash todo lo que tiene un SN quemado, disco duro, proc, ram, etc ... este hash se mantendrá con la computadora hasta que tenga sus partes reemplazadas.


¿Qué hay de usar el número de serie único de Motherboard?


Abre el Registro y navega hacia

HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Criptografía

Busque la clave llamada "MachineGuid", esta clave se genera de forma única durante la instalación de Windows y no cambiará independientemente de cualquier intercambio de hardware (además de reemplazar el disco duro de arranque donde está instalado el sistema operativo). Eso significa que si desea seguir la instalación de seguimiento por sistema operativo esta es otra alternativa. No cambiará a menos que realice una nueva instalación de Windows.


HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Criptografía

La clave "MachineGuid" se genera exclusivamente durante la instalación de Windows y no cambiará independientemente de cualquier intercambio de hardware (además de reemplazar el disco duro de arranque en el que está instalado el sistema operativo). No estoy seguro de esto.

MI SUGERENCIA

Puede usar ese MachineGuid, el número de serie del disco duro, el número de serie de la placa madre y el UUID. Juntos lo usan usando SHA 256 o cualquier otra función HASH.

UUID - wmic csproduct obtiene UUID

MachineGuid - HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Criptografía

Número de serie del disco duro - wmic diskdrive get serialnumber

Número de serie del BIOS : las bios wmic obtienen el número de serie

Número de serie de la placa madre - Baseboard wmic obtiene serial number


La idea con la que estoy jugando es usar unos pocos números de serie o identificadores únicos relacionados con el hardware y unirlos entre sí.

Cosas que se actualizan: -Memory -MACs (pueden ser falsificados, los adaptadores usb se enchufan, etc.)

Cosas que no se actualizan con frecuencia: -CPU -BIOS -Motherboard

Usar WMIC puede ser una excelente manera de obtener información, comenzaría por tomar cosas que no cambian a menudo como la primera y preferida opción, me gustaría poder tomar una huella digital de al menos 2 números de serie o dispositivos para generar una clave de registro.

wmic cpu get DeviceId /format:value

Eso tomará la ID de la CPU, podría ejecutar ese comando para:

1 - CPU (cpu: DeviceID) 2 - Placa base (placa base: número de serie) 3 - BIOS (bios: serialnumber)

si no obtiene al menos 2 valores poblados, entonces tome

4 - Adaptador de red - (nic: MACAddress) 5 - RAM - (memphysical: SerialNumber)

Dependiendo de su lógica comercial, puede usar los dos primeros números de serie disponibles para crear su número de registro, y si siempre sigue el mismo orden y luego vuelve a instalar el número de registro seguirá funcionando, sin embargo, si un dispositivo cambia o un usuario intenta instalar en una computadora secundaria el cambio de la identificación invalidando el número de registro. Para reducir la cantidad de soporte técnico, llama la menor cantidad de hardware que la huella dactilar dará la menor cantidad de dolores de cabeza y si tratas de tomar las huellas dactilares de los elementos menos probables que se actualicen para reducir aún más los dolores de cabeza. Mi preferencia es el orden anterior.

Puede usar un esquema de intercambio de claves Diffie-Hellman para que el usuario genere un par de claves privada / púlica con sus id. De hardware como carga útil, y luego pasar esta información a un servidor de registro donde el servidor de registro usaría una clave pública / privada para descifrar la carga y calcular la clave de registro para regresar al usuario final. Me gusta usar JWT para pasar cosas de un lado a otro con las claves públicas incluidas en la carga del JWT. Espero que ayude.

UUID se mencionó anteriormente y es una gran idea que puede obtenerlo con:

wmic csproduct get UUID /format:vale

Descargo de responsabilidad: estos comandos solo funcionan para Windows, creo que en el año 2000 y posteriores, pero necesitaría verificar, quizás estén disponibles para sistemas por debajo de 2000, pero en ese momento realmente intento no admitir esos dispositivos. Buena suerte.


La mejor forma es tomar el UUID usando C # en Windows

La mejor forma de identificar de manera única una máquina con Windows

public string GetUUID() { var procStartInfo = new ProcessStartInfo("cmd", "/c " + "wmic csproduct get UUID") { RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; var proc = new Process() { StartInfo = procStartInfo }; proc.Start(); return proc.StandardOutput.ReadToEnd().Replace("UUID", string.Empty).Trim().ToUpper(); }


No hay una forma segura de identificar de manera única una computadora, si asume que una computadora está construida con muchas partes que eventualmente pueden ser reemplazadas.

Algunas partes de hardware (dirección MAC, número de serie del disco HDD, incluso serie de la placa base, etc.) son algunas buenas fuentes de "exclusividad", pero como usted sabrá si un cliente decide actualizar la parte de la que depende la licencia ... prepárese para un poco de atención al cliente También hay que tener en cuenta que algunas partes pueden ser falsificadas (el MAC es uno de ellos).

Una verificación de licencia en línea es otra buena forma de hacerlo: puede administrar todo en el servidor e incluso definir sus propias reglas (cuántas licencias por cliente / instalación, concurrencia, etc.) pero lo más importante es lo que sucede cuando conexión no puede ser establecida?


O simplemente no podría tener un código de activación y asegurarse de tener los derechos de auditoría escritos en el EULA y ejercer su derecho de auditar de vez en cuando.

Hace maravillas para Oracle.


Otra solución es usar una tecnología de licencia con un dongle . Este es un pequeño dispositivo que se conecta a USB u otro puerto de E / S en el host, y sirve como una clave física única para activar el software.

Una tercera solución es proporcionar un administrador de licencias . Es decir, cuando el software se inicia, consulta un servidor de la red (ya sea en la LAN del cliente o en su empresa a través de Internet) que valida que el uso del software por parte del cliente es legítimo. Esta es una buena solución para "licencias concurrentes", por lo que los clientes pueden instalar su software en muchos hosts, pero usted lo licencia para usarlo simultáneamente en un número limitado de hosts. FLEXnet Publisher es un ejemplo de una solución de administración de licencias.

La dirección MAC de la tarjeta de red es la solución que utilicé la última vez que trabajé para una empresa que tenía licencia de software para ejecutar en un host específico.

Sin embargo, quiero ofrecer una advertencia: si haces este tipo de licencias, debes anticipar que se convertirá en una tarea administrativa continua para rastrear las licencias de tus clientes. Una vez que tenga unos pocos cientos de clientes, se sorprenderá de la frecuencia con que recibe llamadas telefónicas con solicitudes para cambiar claves.

"Hemos actualizado nuestro servidor a un adaptador de red gigabit, y ahora la licencia no funcionará porque el nuevo adaptador tiene una dirección MAC diferente".

O bien, los clientes pueden reemplazar toda su máquina y necesitan una licencia actualizada para ejecutar su software en la nueva máquina. Recibimos estas llamadas prácticamente todos los días en la empresa para la que trabajaba.

También debe confiar en que el cliente deje de usar su software en la computadora anterior (o adaptador de red) si le da una clave nueva. Si no puedes confiar en que obedezcan la licencia en primer lugar, ¿cómo puedes confiar en que tirarán la vieja llave?

Si no planifica cómo va a respaldar esta actividad administrativa, no licencie su producto de esta manera. Solo le molestará a sus buenos clientes, que de todos modos hubieran cooperado.


Podría considerar una herramienta de licencia de terceros que probablemente obtendrá este "correcto" y también le proporcionará a usted (oa su cliente) opciones adicionales si los requisitos cambian (¿y no siempre?). Mencionaré algunas específicas por nombre, pero realmente no estoy íntimamente familiarizado con ellas.


Solía ​​haber un número de serie impreso en la CPU, por lo que he visto; esta información (PSN, número de serie Pentium) ha quedado obsoleta. La información posiblemente todavía exista, pero al menos en el mundo P3 ya no está. Además, creo que la elección obvia de la dirección MAC en la NIC para la interfaz principal utilizada para el host debe considerarse como una posibilidad real. A menos que su cliente no esté esperando que las interfaces de ethernet estén presentes en los hosts a los que venden.


Solo usaría la dirección MAC para generar una clave de solicitud y luego requeriría que los usuarios se registren con su cliente. Su cliente tendrá una aplicación especial que toma esa clave de solicitud y genera una clave de activación que el usuario puede usar para activar el software. Una vez que se activa, el software funciona, simplemente funciona, sin llamar ocasionalmente a casa para la verificación y tal.

Eso es si fuera un requisito real. Mi primera tarea sería tratar de convencer al cliente de que esta fue una mala idea.

La razón es que estos esquemas prácticamente nunca evitan que su código se descifre. Sin embargo, hacen que las vidas de sus clientes genuinos sean más difíciles. Me resulta difícil pensar en cualquier otra industria que se desvive por molestar a sus clientes genuinos con esquemas que nunca logran sus objetivos (aparte del servicio gubernamental, por supuesto :-).

Si debe hacer esto, simplemente haría un esfuerzo simbólico para cumplir con la obligación contractual (sin embargo, no se lo diga a su cliente). Tomando la dirección MAC (o un número aleatorio si, $DEITY no lo $DEITY , la computadora no tenía una tarjeta de red) como la clave de solicitud y usando un programa para simplemente XOR con una cadena ASCII para obtener la clave de activación, parece una enfoque viable. También almacenaría ambas claves ya que no desea que el software se desactive si solo cambian su tarjeta de red (o incluso la placa base); aún lo ven como la misma computadora y no estarán contentos si el software deja de funcionar.

Su código va a ser resquebrajado independientemente (a menos que el programa sea basura, estoy seguro que no es el caso) - este método le dará a sus clientes genuinos una vía para mover su software a otra máquina si la compañía de su cliente deja de responder de alguna manera , cierra, etc.).

El principal problema con todos los esquemas que se basan en la singularidad de un poco de hardware es que el cliente puede elegir cambiar ese poco de hardware:

  • Al copiar el contenido de su disco en un disco duro más grande, los números de serie HD cambian.
  • el uso de números de serie de la CPU significa que la actualización a la última CPU Intel bigmutha matará a su software.
  • usar la dirección MAC significa que no pueden cambiar su NIC.

Todo esto se puede arreglar usando esos valores para crear una clave en el momento de la instalación y solo verificar contra esa clave, no el valor modificado seis meses después de la pista. Significa que debe almacenar los valores de solicitud y activación, pero las actualizaciones no requerirán que los usuarios realicen el proceso de reactivación de su software. Créeme, te despreciarán por tener que hacer eso.


Tengo algo de experiencia en esto. En mi solución, emitimos clave de servicio cuando vendemos el producto al cliente.

En el momento en que el cliente instala la aplicación genera una clave leyendo la serie de la placa base de la máquina cliente. Se supone que el cliente debe enviar por correo electrónico la clave de servicio y la clave generada en la instalación a nuestra organización para activar el producto.

Mantenemos una aplicación de administrador en las claves de activación de la organización en cuestión. Ofrecemos solo una clave de activación para la clave de una clave de servicio en particular.

Vendimos una cantidad de copias y funciona sin problemas. Pero luego descubrimos algunas computadoras que no proporcionan un número de serie de la placa base. Esas máquinas devuelven valor nulo como el número de serie de la placa base. todavía estamos tratando de solucionar este problema.


Uno puede crear una clave de serie que el usuario debe ingresar una vez. Debe incluir la dirección de correo electrónico del usuario (algo así como [email protected]). Esto evitará que muchas personas intenten alterarlo o dárselo a otras personas. Durante la activación, el software debe verificar contra un DB en línea si existe la clave de serie.


Voy a hacer de abogado del diablo aquí y decirte que algo como esto probablemente no sea lo mejor para discutir en "público".

Dicho esto, mira lo que otros pudieron haber hecho y posiblemente mejorar (o tomar una parte de). La dirección MAC, como dijiste, posiblemente esté bien de usar. He oído que Windows y otros programas usan información del disco duro (número de serie). Según este sitio , la Activación de Windows comprueba 10 elementos diferentes y los convierte en una clave única.