Não entendo!

1. Não entendo!

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 03/11/2016 - 01:46h

Boa noite pessoal, estou a algum tempo criando uma aplicação, e estive pensando em formas de protegê-la, tanto o source quanto a distribuição da mesma e nisso obtive sucesso. O problema é que para fazer isso eu tive que desenvolver uma forma automática de compilação e transmissão em tempo real usando sockets.

---------- 1° método -----------
Para enviar, eu tentei usar a função "sendall" do módulo sockets do Python3. Já para receber os dados eu criei uma função chamada "recvall" da seguinte forma:


def recvall(sockname, size):
buffer = b''
while len(buffer) < size:
temp = sockname.recv(size - len(buffer))
if not temp:
break
buffer += temp
return beffer


Na conversa entre o cliente e o servidor na minha máquina tudo ocorre normalmente os dados são transferidos corretamente, já no ambiente externo (entre minha máquina e um vps), essa transmissão falha e o arquivo fica irrecuperável porém é enviado completamente e. Vi toda a transmissão pelo wireshark e não encontrei erro algum exceto pela ordem dos pacotes, mas acho que o TCP dá conta disso né?

----------- 2° método -------------
A única solução que encontrei foi adaptar meu server para trabalhar com cabeçalhos HTTP na negociação do conteúdo, incluir meu campos personalizados, e usar o wget no lado do cliente para fechar a conexão, segue o modo que está funcionando:


wget header request <--.
|___
GET /watchNet.tar.gz HTTP/1.1
User-Agent: Wget/1.18 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: 127.0.0.1:1020
Connection: Keep-Alive
key: DSAoB63j3UGAd2sg3dImdAvN0WPNQrxp
id: 23injr2323



Server header response__
`.-->
HTTP/1.1 200 -----| Chave Aceita |-----
Server: GNU/Linux
Date: qui nov 3 00:13:38 AMST 2016
Connection: closed
Accept-Ranges: bytes
Content-transfer-encoding: binary
Content-Length: 5579277
Content-Disposition: attachment; filename="watchNet.tar.gz"
Content-Type: gzip compressed data



Saída do wget (cliente)

Digite sua chave de instalação: DSAoB63j3UGAd2sg3dImdAvN0WPNQrxp

--2016-11-03 00:13:28-- http://127.0.0.1:1020/watchNet.tar.gz
Conectando-se a 127.0.0.1:1020... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 -----| Chave Aceita |-----
Tamanho: 5579277 (5,3M) [gzip compressed data]
Salvando em: “watchNet.tar.gz”

watchNet.tar.gz 100%[==================================>] 5,32M --.-KB/s in 0,008s

2016-11-03 00:13:38 (642 MB/s) - “watchNet.tar.gz” salvo [5579277/5579277]


Espero que eu esteja sendo claro, entre a troca dos cabeçalhos eu uso o campo "key" e "id" da 1° requisição do wget para compilar meu código e enviar a versão para o cliente... UFA TERMINEI DE EXPLICAR AGORA VOU PERGUNTAR!

1° Oque está errado no primeiro método?
2° Porque no primeiro método o arquivo fica irrecuperável?
3° Sockets TCP são obrigados a negociar conteúdo como o HTTP ?



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts