Jump to content
Sign in to follow this  
Luigi

IPC - Pode ser interceptado?

Recommended Posts

https://www.autoitscript.com/forum/topic/118440-send-message-to-a-process/?do=findComment&comment=824201

Neste tópico, tem um exemplo bem legal de IPC (Interprocess Comunication, acho que é isso).

Você faz duas janelas distintas conversarem entre si, trocar informações.

Mas somente dentro da mesma sessão do Windows, quero dizer, na mesma conta.

Até hoje não vi, uma forma de IPC descente, que não seja por TCP/IP.

Tá, e onde usar isso?

Pra que usar uma janela se comunicando com a outra?

Facilitar o desenvolvimento: você tem a sua aplicação principal, clica num botão e aparece uma janela com um relatório.

Você tem duas janelas, com funções distintas entre si, mas fazem parte do mesmo código (estão no mesmo script).

E fazer um código que faça "apenas isso", uma janela principal e uma relatório, já é um belo de um trabalho!

Lógico, tem partes que são apenas da janela A, tem partes que são apenas da janela B, tem partes comum da janela A e B.

Mas e se fosse possível dividir as tarefas?

Exemplo: a janela A, é o aplicativo JanelaA.exe, e um determinado momento, você clica na janela relatório, e ele chama a JanelaB.exe, que recebe todos os dados por IPC, da janela A.

Você se preocupa somente com o desenvolvimento de uma janela por vez, os códigos estão muito bem isolados e um não interfere no outro.

Parece bom né?

Se ficar no pensamento do relatório, maravilha!

Mas então pensei numa simples janelinha de "Alterar senha".

Você já pensou quanto código você tem que desenvolver atrás de uma janela como essa?

Verificar se tem mais de 8 caracteres, se tem uma maiúscula,  se a senha e a confirmação de senha são iguais, etc...

Mas o que me fez escrever esse post é: e a comunicação entre as janelas, não pode ser interceptada?

 

Share this post


Link to post
Share on other sites

Opa Luigi.

   Pelo meu entendimento, o IPC pode ser (em teoria) interceptado sim.

   Por quê em teoria? Porque como existem vários métodos diferentes de IPC (Mailslot, memory sharing, file sharing, registro, TCP, etc) haveria uma possibilidade de interceptar o método em particular, porém acredito que isto na prática não tem sentido em ser feito por 2 (duas) razões):

  1. teria que reconhecer (ou saber) qual método está sendo utilizado para poder vigiá-lo;
  2. mesmo que soubesse qual método (e protocolo) utilizar, qual o objetivo desta interceptação?

   Se for para fins de invasão, testes de penetração por exemplo, tem outras maneiras mais interessantes de abrir um sistema.

   Se for para fins de atacar um determinado processo (ou programa), teria que haver um interesse muito grande a respeito.

   Utilizo atualmente 2 IPCs diferentes (mailslot e registro) nos meus sistemas. Funções diferentes, métodos diferentes.

   Mas interessante o seu levantamento...  ;)

Share this post


Link to post
Share on other sites
On 05/10/2018 at 8:32 AM, Manimal said:

objetivo desta interceptação?

Bem... o AutoIt é apenas uma linguagem de script, para fazer automação de tarefas repetitivas, não é uma Framework grande e maduro de desenvolvimento.

Nesse propósito (automação de tarefas repetitivas), eu acho que ela cumpre muito bem o seu papel.

Mas não é porque não existe bibliotecas  (UDFs) mais "avançadas" que não se possa criá-las... (só que as vezes é chato, por 'n' motivos).

Meu esforço neste momento é de tentar perceber uma forma mais fácil de escrever um script multi janelas sem "massarocar" tanto o código.

Dizendo com outras palavras: ter uma janela principal, e outras janelas de funções especificas (ou filhas) com o seu código muito bem separado da janela principal.

Isso na hora de desenvolver e prestar manutenção facilita muito.

Mas era necessário uma forma de fazer acontecer a comunicação entre as janelas.

IPC foi uma alternativa das opções que vislumbrei, mas quando visualizei uma janela de troca de senha por IPC, eu pensei: xi... Será que é seguro?

Mas algum tempo depois, consegui escrever um código que ainda precisa ser desenvolvido, mas consegue separar muito bem os blocos de cada janela com apenas algumas linhas se misturando com o código principal.

Enfim...

 

Seria muito bom ter um código assim:

#include-once
#include <Array.au3>

#include <main.au3>

#include <main_login.au3>

#include <main_menu.au3>

#include <main_logoff.au3>

#include <main_quit.au3>

While Sleep(25)
    
WEnd

 

Em vez de fazer aquela massaroca de código que eu faço, misturando tudo, de todas as janelas, por todos os lugares, poder fazer tudo por blocos, cada bloco funcional e independente do outro.

E cada bloco só funciona quando é chamado, parece muito bom!

Ao finalizar este bloco, ele libera todos os recursos utilizados no momento de sua inicialização.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×