Jump to content
Sign in to follow this  
gnoo

TCP Handshake com python socket

Recommended Posts

Saudações,

o objetivo deste tópico é consolidar conhecimentos aumentando as minhas competências pessoais, e também deixar alguma informação a outros utilizadores que muito provavelmente fazem uso da biblioteca socket do python, e executam um handshake cada vez que criam uma conexão e muito provavelmente nem dão por isso.... eu não vou aprofundar muito a questão com promenores tecnicos porque não tenho competências nem conhecimentos para tal, mas fica uma explicação bastante genérica e concisa com o pouco que sei que para alguns pode ser um ponto de partida para que possam alargar horizontes.

De uma forma grosseira podemos dizer que um handshake ocorre no protocolo TPC resultado de uma negociação  entre dois dispositivos podendo dar como exemplo um cliente e um servidor, onde ocorre um troca de pacotes entre eles, esses pacotes estão associados a um cabeçalho que contém um campo com informação de uma flag que é enviada, essas flags indicam o inicio de comunicação, a aceitação da comunicação neste caso do cliente com o servidor, e também são definidas flags para que seja terminada essa sessão.

Cabeçalho TCP

cab_flag.png.878ceb4230afb2eac8fb55b557baf6c3.png

 

Os requisitos para este exemplo são a idle do python ou um editor de texto a vossa escolha, e o wireshark para observar essa troca de pacotes com as respetivas flags.

Código python

521703863_Capturadeecr_2018-11-10_14-15-43.png.ff2fed4fac14dadb1b3d834931a045cb.png

 

Em seguida devem iniciar o wireshark e escolher a interface da placa de rede que está em uso, e escolher como filtro o TCP, ele vai capturar apenas os pacotes que se deslocam nesse protocolo.

Quando executam o código anterior podem ver que o wireshark capturou alguns pacotes entre o cliente e o servidor, onde podem ser vistas as flags que foram trocadas entre eles para que a conexão fosse efetuada.

1093787160_Capturadeecr_2018-11-10_14-18-28.png.73152ecb3e91bd6df5bd0fde071c3864.png 

 

O que estas flags nos dizem ...

179039267_Capturadeecr_2018-11-10_15-33-36.thumb.png.07f62d6979c6d5f675ee2df1e856d08a.png

 

O que isto mais ou menos nos diz é que o cliente ao enviar a flag SYN pede para iniciar conexão, o servidor envia resposta SYN+ACK como reconheicmento para que a conexão seja efetuada e o cliente envia finaliza com a flag ACK em que reconhece a  resposta enviada pelo servidor.

 

Isto é um handshake efetuado com python mas poderia ser com outra linguagem qualquer.

Se viste algum erro já sabes o que tens que fazer :)

Cumprimentos.

 

 

 

 

Edited by gnoo
  • Curtir 1
  • l33t 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...