Identificação Unica de um Computador

1,565 views
Skip to first unread message

Mário Jorge

unread,
Jul 24, 2009, 7:54:37 AM7/24/09
to jav...@googlegroups.com
Amigos, preciso de uma informação ou várias que possam identificar um computador de forma única. Por exemplo serial do hd ou placa mãe.
 
O que vcs sugerem e como fazer?

--
Mário Jorge R. e Silva
MSN e E-mail: mario...@tumeviu.com
http://www.tumeviu.com

Joao Carlos Sousa do Vale

unread,
Jul 24, 2009, 7:57:01 AM7/24/09
to jav...@googlegroups.com
Eu utilizaria o MAC ADDRESS.

2009/7/24, Mário Jorge <mario...@tumeviu.com>:

Paulo Jr.

unread,
Jul 24, 2009, 8:13:12 AM7/24/09
to jav...@googlegroups.com
Como é a sua aplicação? é Desktop ou Web?

2009/7/24 Joao Carlos Sousa do Vale <jcarlo...@gmail.com>



--
Atenciosamente,

Paulo Alves Júnior (SCJP.5)
Desenvolvedor WEB, JEE
WEB 2.0 (XHTML, CSS, JavaScript, AJAX)
http://www.paulojdev.com.br
Skype: paulojribp

Mário Jorge

unread,
Jul 24, 2009, 8:21:03 AM7/24/09
to jav...@googlegroups.com
desktop

2009/7/24 Paulo Jr. <paulo...@gmail.com>
Desenvolvimento WEB - PHP/MYSQL
Brevemente desenvolvedor JAVA

Paulo Jr.

unread,
Jul 24, 2009, 8:41:44 AM7/24/09
to jav...@googlegroups.com
Ok cara, de JavaDesktop entendo muito pouco, mas conheço um sistema de uma empresa que trabalhei que era desktop (delphi) e os caras pegavam uma identificação do HD e se não me engano algo do registro do windows. Mas só o hd já resolve.

Não sei se o java vai lhe permitir isso diretamente.. talvez via JNI ou algo do tipo. Pelo menos a idéia fica ai de um sistema que já está em produção a muitos anos e funcionava dessa forma.

Abraços,



2009/7/24 Mário Jorge <mario...@tumeviu.com>

Mário Jorge

unread,
Jul 24, 2009, 8:49:42 AM7/24/09
to jav...@googlegroups.com
tenho esse código p obter o serial do hd
 
 public static String getHDSerial(String drive) {
        String result = "";
        try {
            //File file = File.createTempFile("tmp",".vbs");
            File file = File.createTempFile("tmp", ".vbs");
            file.deleteOnExit();
            FileWriter fw = new java.io.FileWriter(file);
 
            String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n" + "Set colDrives = objFSO.Drives\n"
                            + "Set objDrive = colDrives.item(\"" + drive + "\")\n" + "Wscript.Echo objDrive.SerialNumber";
            fw.write(vbs);
            fw.close();
            Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
            BufferedReader input =
                new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while ((line = input.readLine()) != null) {
                result += line;
            }
            input.close();
        } catch (Exception e) {
        }
        if (result.trim().length() < 1  || result == null) {
            result = "NO_DISK_ID";
        }
        return result.trim();
    }


 
2009/7/24 Paulo Jr. <paulo...@gmail.com>

berg.pb .

unread,
Jul 24, 2009, 8:59:54 AM7/24/09
to jav...@googlegroups.com
Op Mário Jorge,
No código passado, faltou identificar quem é DRIVE.
vALEU

2009/7/24 Mário Jorge <mario...@tumeviu.com>



--
Berg Oliveira
----------------------
"Aprendi que não se vive se não busca a Verdade."

berg.pb .

unread,
Jul 24, 2009, 9:11:12 AM7/24/09
to jav...@googlegroups.com
Ops...
lezeira minha
o DRIVE vc coloca a letra do drive q vc quer a idenditificação.

Abraços

2009/7/24 berg.pb . <file...@gmail.com>

Leonardo Eloy

unread,
Jul 24, 2009, 9:40:35 AM7/24/09
to jav...@googlegroups.com
Mac Address é muito fácil de ser alterado, não recomendo.

Esse negócio de identificação única é um saco, uma vez tive que fazer isso e fiz um JNI pra pegar o serial do HD, e se o processador fosse Intel, da CPU tb. A conclusão que tiramos foi que tínhamos que agregar diversas informações, então ficou (somente plataforma Windows): HD + MAC + Chave no Registro + Serial da CPU, se tivesse. A idéia não era travar nada, mas identificar a máquina de origem que iria aplicar uma versão de um sistema.

Vale lembrar que todas as tentativas são passíveis de alteração muito fácil, inclusive via WMI.


2009/7/24 Joao Carlos Sousa do Vale <jcarlo...@gmail.com>

Paulo Jr.

unread,
Jul 24, 2009, 9:54:02 AM7/24/09
to jav...@googlegroups.com
É verdade Leonardo,

Sem falar que além de chato é praticamente impossível ficar inquebrável. Se isso for um requisito primordial do sistema, que essa segurança tem que funcionar quase perfeitamente, então com certeza vai amarrar a aplicação em um SO ou criar aplicação com vários tipos de execultáveis diferentes, um pra cada SO.

Dessa forma que você fez Mário, já garante alguma coisa. Vi que ele pega um número de série mas não é do HD, ou então é um número virtual fornecido pelo SO, pois eu tenho aqui um único HD e 2 partições e em cada uma delas ele mostrou um número diferente.

Abraços,


2009/7/24 Leonardo Eloy <leonar...@gmail.com>

Mário Jorge

unread,
Jul 24, 2009, 10:23:01 AM7/24/09
to jav...@googlegroups.com
Pois é, vi q apesar dele pegar um numero diferente por particao, nao é realmente o serial do HD. de toda forma acho q ja vai me servir.

2009/7/24 Paulo Jr. <paulo...@gmail.com>
Desenvolvimento WEB - PHP/MYSQL
Brevemente desenvolvedor JAVA

berg.pb .

unread,
Jul 24, 2009, 10:23:03 AM7/24/09
to jav...@googlegroups.com
Opa
So ratificando a tua resposta Paulo Júnior
O código q foi mostrado informa corretamente o ID da partição.
Porém, a codificiação que o código mostra está em Decimal.
Qdo se olha direto no prompt do SO, ele mostra o ID em Hexadecimal.

Para conferir, converta o número q mostra no prompt p decimal e vc vai ver que bate.

Agora, voltando a questão, realmente inquebrável nunca vai ser.
Porém, ainda acho melhor fazer essa verificação de alguns dados do hardware (HD, MAC, pra mim pelo menos), ou parte destes.
Uma alternativa seria distribuir com o soft, uma hardware key, que poderia controlar o acesso ao sistema.

Ta ficadno quente a discussão!!

Abraços a todos
Deus abençoe

2009/7/24 Paulo Jr. <paulo...@gmail.com>

berg.pb .

unread,
Jul 24, 2009, 10:28:55 AM7/24/09
to jav...@googlegroups.com
Uma outra questão a ser levantada:
A aplicação pode pegar o MAC ou o ID_Partição.
Sim, estas informações podem sim ser burladas.

Porém, a questão crucial: o usuário não saberá quais são os dados que deverá alterar: HD, MC, os dois.
Por isso q na outra resposta eu coloquei que talvez uma junção dos 2 acima ou ainda de partes deles pudessem resolver.

Abraços

2009/7/24 Mário Jorge <mario...@tumeviu.com>

Rodrigo Galba

unread,
Jul 24, 2009, 10:43:09 AM7/24/09
to jav...@googlegroups.com
tem o serial do HD que pode ser util. E acredito que não é tão facil de ser alterado...

2009/7/24 berg.pb . <file...@gmail.com>



--
--------------------------------------------
Rodrigo Galba
http://rodrigogalba.com.br

Paulo Jr.

unread,
Jul 24, 2009, 5:43:35 PM7/24/09
to jav...@googlegroups.com
Isso ai é excelente berg.pb, faz uma junção dos dois com algum tipo de criptografia, e então você verifica como sendo um tipo de hardkey para o sistema.

Com o tempo, caso o usuário descubra algo do tipo, ai você vai aprimorando os dados, etc...



2009/7/24 Rodrigo Galba <rodrig...@gmail.com>

Joao Carlos Sousa do Vale

unread,
Jul 24, 2009, 9:33:48 PM7/24/09
to jav...@googlegroups.com
Agora fiquei curioso, é possível quebrar o Mac Address ???

2009/7/24 Paulo Jr. <paulo...@gmail.com>

Joao Carlos Sousa do Vale

unread,
Jul 24, 2009, 9:34:28 PM7/24/09
to jav...@googlegroups.com

berg.pb .

unread,
Jul 25, 2009, 8:17:34 AM7/25/09
to jav...@googlegroups.com
Hehehehe
Felizmente ou não, a informática quase tudo é possível!!

A qustão que eu acho mais crucial neste ponto não é pegar o id do HD ou do MAC.
A questão é proteger o software da pirataria
Se o cliente vai querer querbar, td bem, ele pode tentar....
O que não vai cair bem é vc chegar p cliente ou colocar uma MessageDialog dizendo: "vc não pode copiar pq seu hd ou mac não é o mesmo."

Então, não importa se vai pegar o id do processador, hd, mac ou MB...
Ou se faz algo assim ou usa uma hardware key externa, q ai sim, o cara vai saber exatamente o que tentar hackear.


Abraços a todos
Deus abençoe

Édson Rocha

unread,
Jul 25, 2009, 1:57:19 PM7/25/09
to jav...@googlegroups.com
Depende  muito do grau de segurança que pretendes. MAC é fácil de ser modificado. Serial do HD deve ser avaliado com cuidado. No Windows o serial de volume, que as vezes é confundido com o serial do HD, muda a cada formatação e é passível de fraude tanto quanto o MAC. Não sei no Windows como obter o serial real do HD, no Linux pode ser feito pelo comando hdparm. Uma opção muito profissional é o uso de Hard Keys. Indico fortemente a Provona. O custo de uma Hard Key USB está por volta de R$
70,00.

Uma opção intermediária é o uso do serial de pendrive associado ou não a alguma informação gravada nele. Ainda não ouvi falar de um jeito de alterá-lo. Assim como se for escolhido uma hard key da Pronova ou serial real do HD, terás que usar bibliotecas nativa, de preferência com JNA. JNI é o limite da condição humana. Ainda sobre acesso a código nativo, JRuby tem bons recursos para isso, usando JNA por baixo dos panos.

E não esqueça minha Caloi! :-) Digo, de postar aqui sua experiência.

Édson Rocha Patrício
www.verde.com.br


2009/7/24 Paulo Jr. <paulo...@gmail.com>

Mário Jorge

unread,
Jul 25, 2009, 3:19:29 PM7/25/09
to jav...@googlegroups.com
Tive uma experiência com hard key (UNIKEY), inclusive ainda estou com ela, o custo é de R$ 48,00 p unidade, mas a conclusão a que cheguei é q o uso em conjunto de algumas keys como serial do hd ou pendrive ou mac já teria um bom resultado, pq como foi dito anteriormente, nao se vai dizer ao cliente "Oh! o serial do seu hd é inválido", por isso achei o gasto com o hard key um pouco desnecessário, mas claro que usar ele é na minha opinião a melhor solução neste caso.

E por esse motivo fiz a pergunta a lista de qual id usar. E gostei muito das respostas e da discussão que gerou. Vlw...

2009/7/25 Édson Rocha <edsonp...@gmail.com>
Desenvolvimento WEB e Desktop - JAVA/PHP/MYSQL
MSN e E-mail: mario...@tumeviu.com
http://www.tumeviu.com/mariojorge
Reply all
Reply to author
Forward
0 new messages