Ir para conteúdo
Fórum Script Brasil

Thales Pontes Martins

Membros
  • Total de itens

    453
  • Registro em

  • Última visita

Tudo que Thales Pontes Martins postou

  1. Tem razão, como quase ninguém vai usar o programa do Paulo ou outro que alguém faça, nenhum hacker se propuserá a gastar tantos esforços para quebrar o sistema. A não ser que por exemplo, você empresta o programa para um amigo que precisa emprestar o computador a alguém e precisa encriptar dados confidenciais, aí a pessoa que pegou o computador faça de tudo pra ver esses dados... Aconteceu com um amigo meu essa semana. :P Mais aí não protege nada, os dados ainda ficam acessíveis e é a maior moleza quebrar o sistema...
  2. Putz, e eu que costumava deletar ensaios fotográficos de mulheres porque estavam protegidos por senhas, putz. Quando agente pergunta essas coisas pra você, você sai pesquisando pra achar ou você já conhece esses lances maneiros? Ou seja, nada é seguro o bastante. Eu posso fazer meu sistema hoje e amanhão um cara alí na esquina faz um programa que consegue decriptar sem senha? Não importa o quanto eu baguncei o código para que fique mais complicado descobrir o cálculo? E eu que pensei que criptografia fosse o único método 100% seguro de se proteger um arquivo contra leitura. Vejo que o único método é fazer uma formatação de baixo nível no hd mesmo. Aí nem Santo Antonio acessa. Então eu não vou nem terminar o sistema. Tenho minhas dúvidas, as vezes depois de um cálculo, os dados resultantes, ou seja, a senha e o arquivo criptografado, não são suficientes para se recuperar os dados originais. Cheguei a essa conclusão depois de pensar em vários calculos, na tentativa de torná-los o máximo complexos dentro de minhas possibilidades, e me deparar com resultados que não são reversíveis. Ou pelo menos eu não conseguí pensar em um calculo para reverte-los.
  3. É tem razão, são bitmaps mesmo, eu é que tive a forte impressão de não serem. Tudo bem. O link qua não está funcionando é o primeiro do seu penúltimo post Startbutton_blue1.gif. Interessante aquele link sobre o Resource Explorer, então acho que o meu componente tem que fazer é achar esses recursos que aí meu botão vai ficar igualzinho o do Windows, não é? Tem que estudar. Falou.
  4. Então me responda, eu pego um arquivo e compacto ele com senha no WinRar, ou seja, o WinRar vai encriptá-lo. Agora me responda, quem seria capaz de abrir esse arquivo sem saber a senha. Eu nunca soube de nenhum caso, por mais hacker que o cara seja. Pois é de maneira semelhante que eu estou fazendo. Isso é, se é que eu consiga desencriptar, porque por enquanto só conseguí encriptar :P . Já foi metade do caminho. :P
  5. Esse link seu disse que eu não estou autorizado a ver a página. :P . Isso você está falando de como o componente faz ou como o windows faz? Porque se for como o windows faz: O windows desenha os botões em qaulquer tamanho utilizando linhas(você pode observar que as linhas tem sempre a mesma espessura em qualquer tamanho), e o X ou janelinha ou desenho no meio pode ter qualquer tamanho porque depende do tamanho da fonte, não é bitmap. Eu estava pensando em escrever um coponente desses sem utilizar os bitmap, apenas desenhando com linhas e fonte, você acha que é possível? Acho que o difícil é fazer ele acender ou apagar... Porque aí vai requerer rotinas que vão além das que estão no GDI. Talvez tivéssemos que utilizar o GDIPluss, nesse sim tem essas rotinas. Será que não existem API's pra desenhar esses botões assim como existe a função DrawBottonFace para desenhar botões normais?
  6. Pois é, sobre esses programas que o Paulo citou, eles impedem que o usuário leia os arquivos mas eles ainda estão lá bonitinhos, é só o cara saber dar a volta nessa proteção que ele consegue acessá-los. Sempre tem um jeito. Pois é, como eu mencionei num post anterior, eu já usei esse sistema decriptografia, e me pareceu muito bom. Se você criptografa uma pasta, cria um certificado, e possui senha na sua conta de usuário do Windows, acho que é bem seguro. Desse modo somente da sua conta você terá acesso aos dados, qualquer outro usuário será bloqueado. e tudo isso criptografado, certo?! Com certeza, menos o tamanho que será necessário para verificar se a senha está correta no caso de o arquivo ser menor do que um cluster. Eu fiz aqui a rotina que faz a encriptação, funcionou que é uma maravilha. Agora só falta fazer o milagre de escrever uma rotina que converta aquele lixo todo de volta pro que era antes. :P você quer dizer apenas ler um bloco do arquivo e descriptografar em memória, sem atualizar o arquivo, é isso?
  7. Pode parecer mentira mais foi exatamente o que eu pensei em fazer, como eu sugerí num outro post, acho que nem deste tópico. Além do mais eu vou ter que colocar várias coisas depois do EOF, como nome original do arquivo, atributos originais, tamanho... Mais o que é mais seguro, criptografia ou o sistema de proteção do NTFS?
  8. s3c, só uma pergunta: você traduziu esse código de C para Pascal? Digo aquele link que você postou tava em C, a idéia do código é a mesma? Churc, o que aconteceu com o Joey? Tava maneiro. Paulo Nobre, você mencionou o ícone de minimizar para o Tray que tem no link que o Micheus postou-> Esse negócio do botão é interessante. Impressionante o windows não ter uma opção de acrescentar um botão na barra de título. Aí os programas tem que fazer gambiarra. Todo programa que tem um botão desses faz gambiarra. O que que ele faz: Ele tem que pegar o DC da janela incluindo barra de título GetWindowDC(form1.handle), pegar o tamanho dos botões da barra de título GetSystemMetrics(SM_CYSIZE), ter todos os bitmaps dos botões em cada situação e tema do windows XP(vai ver foi por isso que não apareceu, você não tem os bitmaps), desenhar o botão na posição calculada no DC obtido, ter um procedimento que receba a mensagem WM_NCHITTEST para desenhar o bitmap correspondente quando o botão está aceso, pressionado, apagado..., e também nessa mensagem processar as coordenadas do mouse para ver quando o ponteiro está em cima do botão, e verificar quando é clicado para disparar o evento correto. Além de ter que usar API's complicadas do windows para saber se se está usando o estilo XP_THEMES, e se estiver, identificar qual: azul, verde ou prateado. Só é necessário os bitmaps caso esteje usando XP_THEMES, senão usa-se a função DrawButtonFace para se desenhar um botão normal. E o efeito não fica 100% porque quando você aumenta a barra de títulos dá pra ver que se trata de um bitmap redimensionado, diferentemente do outros. No código fonte do emule tem uma unit que faz isso, e tem os bitmaps também. E esse link do Micheus, suporta XP_THEMES? Pergunto isso porque se não suportar fica bem ridículo, um botão cinza normal na barra de título.
  9. Tudo bem, vou tentar. Enquanto isso o pessoal vai dando mais sugestões, pode ser que se encontre um método melhor.
  10. É, realmente para fazer ele pedir senha no momento de abrir a pasta no explorer eu não sei como fazer. Aí teria que ser com aqueles componentes que o Micheus falou mesmo, só que aí se o cara for um pouquinho só hacker ele vai conseguir furar o sistema, e com a criptografia não tem jeito de furar mesmo. Veja se desse jeito te satisfaz-> Ao pedir para proteger arquivo ou pasta, a estrutura da pasta continuará a mesma, somente que todos os nomes de arquivos serão renomeados para um código tipo "00000000001.scr". Pode-se associar essa extensão de arquivo para ser aberta com seu programa (você deve saber como se faz, você entende de registro). Aí ao se clicar no arquivo o seu programa abrirá pedindo uma senha. Se for fornecida senha errada o programa informa, senão o arquivo é transformado e ronomeado para o original. Ainda pode-se colocar uma opção no menu que aparece quando se clica com o botão direito em cima de uma pasta, permitindo desencriptar a pasta toda, que nem o WinRar faz para permitir compactar pasta. Mais uma vez você deve saber como fazer porque você entende de registro. O que acha?
  11. Eu acho que o VirtualAllocEx é para ter acesso a memória mesmo sem ter direitos de leitura ao processo, já que os dados vão ser lidos para dentro da própria memória do processo aberto. Meio difícil de entender mesmo.
  12. Conteúdo que você quer dizer é que você não gostaria que nem os nomes dos arquivos dentro da pasta sejam visíveis?
  13. Só por diverção vou começar a escrever códigos de encriptação. Quando terminar eu mando p/ você. Mas você ainda não me disse se tem problema os arquivos ainda ficarem visíveis pelo explorer.
  14. Conclusão: Depois que a anta aqui percebeu que o código que o Churc postou primeiro funcionava, eu fiz um projeto e mandei pro Paulo. Já estava pegando o retangulo dos ícones certinho e indo direitinho pra cima do primeiro ícone do Tray, que 99% das vezes era o Ícone do próprio programa. Agora com esse último código do s3c matou de vez. 100%. Veja como uma pergunta tão simples como mover o mouse para cima de um ícone pode gerar uma discussão tão grande e envolver tantos conceitos como os presentes no código do s3c. Tem que alocar Handle, alocar memória, abrir processo...
  15. Ninguém aqui tem razão, cada um está propondo uma solução diferente.
  16. Aqueles componentes que o Micheus falou servem, pelo que entendí, para monitorar mudanças em pastas e disparar eventos. Mas confesso que a anta aqui não entendeu como isso poderia impedir o acesso as pastas. Desculpe :( . Seria nos eventos aonde se poderia modificar um parâmetro negando o acesso da pasta? Digo, já que os componentes servem para monitorar pastas, o correto é que eles notifiquem um procedimento para que este então decida conceder ou negar o acesso a pasta. Não é isso?
  17. Muito fera esse código. O cara é fera mesmo. Paulo, coloque a prorpiedade hint do seu ícone para alguma coisa e faça assim-> uses CommCtrl; Procedure MoveToTray(IconHint : String); var HTray,HPid,HTray_Proc:Thandle; i,iBt,xLeft,yTop:Integer; pMem:Pointer; rC:array[0..255] of Char; Bytes_Read:DWord; R:array[0..1] of TPoint; begin HTray := FindWindow('Shell_TrayWnd', nil); HTray := FindWindowEx(HTray, 0, 'TrayNotifyWnd', nil); HTray := FindWindowEx(HTray, 0, 'SysPager', nil); HTray := FindWindowEx(HTray, 0, 'ToolbarWindow32', nil); GetWindowThreadProcessId(HTray, HPid); HTray_Proc := OpenProcess(Process_All_Access, false, HPid); pMem := VirtualAllocEx(HTray_Proc, nil, 512, Mem_Commit, Page_ReadWrite); try iBt := SendMessage(HTray, TB_ButtonCount, 0, 0); for i := 0 to iBt-1 do begin FillChar(rC[0], 256, 0); SendMessage(HTray, TB_GetButtonText, i, LParam(pMem)); ReadProcessMemory(HTray_Proc, pMem, @rC[0], 255, Bytes_Read); if not SameText(IconHint, StrPas(@rC[0])) then Continue; SendMessage(HTray, TB_GetRect, i, LParam(pMem)); ReadProcessMemory(HTray_Proc, pMem, @R[0], SizeOf(R), Bytes_Read); MapWindowPoints(HTray, 0, R, 2); xLeft := R[0].X + (R[1].X - R[0].X) div 2; yTop := R[0].Y + (R[1].Y - R[0].Y) div 2; SetCursorPos(xLeft, yTop); Break; end; finally VirtualFreeEx(HTray_Proc, pMem, 0, Mem_Release); CloseHandle(HTray_Proc); end; end; Aí é só chamar MoveToTray(TrayIcon.Hint);Acho que é isso.
  18. Opa, lembrando que o componente TTrayIcon tem o método ShowBalloonHint que já mostra o balão apontando pro ícone dizendo: "Ei, estou aqui! :) ".
  19. Paulo, caso os componentes mencionados pelo Micheus não sirvam, o que eu poderia fazer pra você seriam funções que recebam como parametro o nome de uma pasta e uma senha, aí a função iria encriptar todos os arquivos desta pasta. O usuário poderia ainda ver e ter acesso aos arquivos, mas estariam encriptados e portanto ninguém nem nenhum programa seria capaz de entender nada dos dados desses arquivos. Aí teria uma função que receberia a senha e a pasta e faria o processo inverso para desencriptar. Só que se for desencriptado com a senha errada, diga adeus pro seu arquivo, nunca mais você vai conseguir ler ele. A não ser que você encripte denovo com a senha errada e por fim desencripte com a senha certa. Ainda não baixei, depois vou dar uma olhada. A propósito, o windows tem um sistema de encriptação de pastas, só que não confio muito. Você tem que mandar encriptar a pasta via propriedades e depois criar um certificado nas opções de internet->conteúdo. Aí se outro usuário tentar acessar a pasta, não vai conseguir. Mas se você estiver logado na conta onde foi feita a encriptação você poderá acessá-la. Ou seja qualquer usuário não autorizado não conseguirá ter acesso a pasta, inclusive crackers pela internet.
  20. var Atributos: Integer; begin Atributos:= FileGetAttr('C:\TesteEsconde'); FileSetAttr('C:\TesteEsconde',Atributos + faHidden) end; var Atributos: Integer; begin Atributos:= FileGetAttr('C:\TesteEsconde'); FileSetAttr('C:\TesteEsconde',Atributos - faHidden) Quero avisa-lo de que fez uma coisa extremamente errada ou subtrair ou somar constantes de um Flags, porque se o flag já estiver no estado desejado ele mudará outros atributos do arquivo. O correto seria -> para setar flag -> Atributos:= FileGetAttr('C:\TesteEsconde'); FileSetAttr('C:\TesteEsconde',Atributos or faHidden); para desligar flag -> Atributos:= FileGetAttr('C:\TesteEsconde'); FileSetAttr('C:\TesteEsconde',Atributos and not(faHidden))
  21. Mas você ainda não disse qual o objetivo. O que você quer esconder do usuário?
  22. Opa, vamos supor que seu CD tenha uma pasta chamada dados, então para abri-la ficaria assim - > procedure TForm1.Button1Click(Sender: TObject); var st : string; begin st:='Explorer "' + ExtractFileDrive(ParamStr(0)) + '\Dados"'; WinExec(PAnsiChar(st),SW_ShowNormal); end; O ExtractFileDrive apenas pega uma string que representa o caminho de um arquivo ou pasta e copia dela apenas a porção que identifica o drive -> ExtractFileDrive('C:\Dados\Mulheres\Ellen Rocche\Ellen.jpg') = 'C:'; Ok?
  23. Que programa é esse, gostaria de dar uma olhada se não for inconveniente. Mas se a barra de tarefas sumiu tente fazer-la aparecer com isso ShowWindow(findwindow('Shell_TrayWnd', nil), SW_SHOW);
  24. Opa Para abrir o explorer numa pasta -> procedure TForm1.Button1Click(Sender: TObject); var st : string; begin st:='Explorer "C:\arquivos de programas"'; WinExec(PAnsiChar(st),SW_ShowNormal) end; Para copiar texto de uma edit para área de transferencia-> Edit1.CopyToClipBoard; Para saber o drive que está o programa-> ExtractFileDrive(paramstr(0)); Tá me testando é? Abraço.
  25. Interessante. Que programas? Nunca ví nenhum. E como eles deixam inacessíveis? Não permitindo que o usuário vaja seu ícone e dizendo que não existe, ou dizendo que está encriptada e necessita de senha? Porque se for encriptação eu posso escrever umas rotinas que pegam um arquivo e embaralham ele todinho ficando impossível ter acesso as suas informações sem o fornecimento de senhas. E qual a finalidade desse recurso? Explica aí.
×
×
  • Criar Novo...