segunda-feira, 15 de fevereiro de 2010

Problema de Upgrade do Windows Vista 64x para Windows 7

Sei que já vou tarde, mas este fim-de-semana decidi fazer o upgrade do meu computador pessoal para o windows 7.
Corri o "Upgrade Advisor" fiz o que este me aconselhou e iniciei a instalação.
Após várias horas a correr, coisa que penso poder ser normal visto ter muitas aplicações instaladas e o upgrade tem de as migrar para a nova versão.

Mais algumas horas e notei que não tinha saído dos 62%.

Mais umas horas e comecei a procurar na net se mais alguém tinha tido o mesmo problema.
Encontrei.

Aparentemente isto é um problema conhecido, reportado pela KB975253.

Seguindo os paços documentados no artigo consegui terminar o meu upgrade ao Windows Vista.

Aqui fica a informação do Artigo:

Para validar se a instalação está mesmo pendurada carregar SHIFT+F10 e verificar se no quadro que aparece a seguinte informação:

Warning [0x080b50] MIG AsyncCallback_ApplyStatus: Progress appears to be stuck. Current progress: 62

Caso esteja visível a mensagem terão de executar os seguintes paços:

1 - Reiniciar o Computador. Quando o computador tiver acabado de restaurar o Windows vista ir para paço 2.
2 - Carregar iniciar, carregar com o botão direito do rato no "Computer", e depois escolher propriedades.
3 - na tab avançadas carregar no botão de Variáveis de ambiente.
4 - Por baixo nas variáveis de ambiente carregar em novo.
5 - Escrever "MIG_UPGRADE_IGNORE_PLUGINS" no campo variável
6 - Escrever "IphlpsvcMigPlugin.dll" no campo valor da variável
7 - Carregar ok até as janelas estarem encerradas reiniciar o computador.
8 - Iniciar o upgrade novamente.

Atenção que mesmo assim depois de todo este trabalho o windows 7 demorou perto de 20 horas a fazer upgrade.
Um pouco irritante porque a instalação do windows e o software que tenho deve demorar no máximo umas 4 horas. :(

sexta-feira, 27 de novembro de 2009

sábado, 1 de agosto de 2009

Ocultar password em asp.net

Uma das coisas que me faz muita confusão é ter a password e o username em texto simples nos ficheiros de web.config.

Isto faz-me confusão porque na realidade em caso de falha de segurança damos muito pouco trabalho aos hackers... :)

Uma das formas de ocultar a informação relativa ao utilizador e à sua password é ocultando a no registo da máquina.

A ferramenta a usar é o aspnet_setreg.exe, uma ferramenta que vem com a Framework da Microsoft. (Microsoft .Net Framework).

Esta ferramenta permite-nos guardar no registo informações como o utilizador e a password de uma ligação como por exemplo ao SQL. Assim escusamos de ter a connection string com user e password no ficheiro web.config.

A ferramenta utiliza internamente 2 funções ou métodos que são locais na máquina, a CryptProtectData e a CryptUnprotectData, uma é o método que usamos para cifrar a nossa ligação a outra é o que usamos para decifrar a nossa ligação.
Atenção que quem tiver acesso à máquina tem acesso a estes métodos e por isso pode ver a informação cifrada.

Ao utilizarmos o aspnet_setreg.exe usamos uma sintaxe do género

aspnet_setreg.exe -k:SOFTWARE\MINHA_APLICACAO_SEGURA\identity -u:"dominio\password" -p:"password"

Este comando cifra o utilizador e a sua password na chave de registo indicada com a flag -k: também gera o output que devemos colocar no nosso web.config ou na nossa machine.config para que o user asp.net possa saber como localizar as chaves no registo e usa-las.

O output que recebemos é semelhante a este:

username="registry:HKLM\SOFTWARE\MINHA_APLICACAO_SEGURA\identity\ASPNET_SETREG,username"
password="registry:HKLM\SOFTWARE\MINHA_APLICACAO_SEGURA\identity\ASPNET_SETREG,password"

O Windows atribui à chave de registry FULL control ao utilizador de system, aos administradores e ao utilizador que a criou.

Se os administradores não tiverem nada a ver com isto podem ser removidos que não fazem falta... Atenção que ao removerem as permissões dos administradores ficam com menos apoio na tentativa de resolução de erros. Deixem sempre o user system e o que criou a chave se esta tiver sido criada com o user que corre o site. Para estas alterações ou adicionar outro utilizador podem usar o regedt32.exe para dar permissões às pastas.

Agora é só alterar a aplicação correspondente no seu web.config ou na suma machinec.config com o retorno do aspnet_setreg para começar a funcionar com as password e users menos visíveis

username="registry:HKLM\SOFTWARE\MINHA_APLICACAO_SEGURA\identity\ASPNET_SETREG,username"
password="registry:HKLM\SOFTWARE\MINHA_APLICACAO_SEGURA\identity\ASPNET_SETREG,password" />



Deixei o nome dos métodos usados internamente para mais tarde num outro texto do blog falar deles.