Source Django compilado?

223 views
Skip to first unread message

Júlio César M. Ferreira

unread,
Feb 7, 2017, 1:07:20 PM2/7/17
to Django Brasil
Boa tarde pessoal!

Acredito que o cenário principal de uma aplicação Django seria uma aplicação que roda em um servidor centralizado (um provedor da vida) e os clientes consumindo essa aplicação remotamente.

Mas, quando você tem a necessidade de ter o source da sua aplicação rodando em um servidor local no cliente, como poderíamos proceder para a proteção do código?

Quando pergunto isso, estou tentando abstrair coisas como contratos de uso, leis e etc. Refiro-me especificamente ao código fonte protegido, criptografado ou até mesmo compilado.

Com o Django, existe essa possibilidade?

Em pesquisas na net, encontrei uma forma de converter código Python em byte-code, nesse site -> http://effbot.org/zone/python-compile.htm#compiling-python-modules

Valeu pela força!

Filipe Cifali

unread,
Feb 7, 2017, 1:26:00 PM2/7/17
to django...@googlegroups.com
Coloca dentro de um servidor com discos criptografados que o usuário não tenha a senha, isso é chamado de "caixa".

Porque compilar o código e deixar o usuário quebrar o resto do sistema? Compila o sistema inteito e entrega como uma caixa de ligar e desligar. Simplemente não deixe ele acessar e caso ele acessar isso e construa um contrato onde isso seja uma quebra dele.

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
[ ]'s

Filipe Cifali Stangler

Júlio César M. Ferreira

unread,
Feb 7, 2017, 1:29:46 PM2/7/17
to django...@googlegroups.com
A ideia é até interessante. 

Mas gostaria de incrementar a conversa alegando que a "caixa" não pertence à mim, apenas o sistema. A coisa seria permitir que o sistema, protegido, rodasse na estrutura do cliente.
Atenciosamente,

Júlio César M. Ferreira
CSM, 562964
(81) 99547.6160

Diego Nascimento

unread,
Feb 7, 2017, 1:30:12 PM2/7/17
to django...@googlegroups.com
Acho que django é para servidor fora do cliente, quando vc precisa colocar o servidor dentro da rede do cliente, pode orçar o projeto com o preço do projeto mais o de um PC barato (eu morava no sul e comprava no paraguai baratinho), mas coloca no contrato que o PC é um comodato, eu oferecia o serviço rodando na intranet apenas, assim não precisava mexer no servidor dos kras e não precisava dar acesso ao código.. pode parecer algo bem idiota, eu acho que isso não é prática muito comum, mas eu já fiz algumas vezes no passado.

--

Diego Nascimento

unread,
Feb 7, 2017, 1:31:53 PM2/7/17
to django...@googlegroups.com
se bem que eu fazia em java, mas  mesmo assim, ficava tudo no meu servidor.. agora com python o kra vai exigir acesso a todo o sistema feito.

Diego Nascimento

unread,
Feb 7, 2017, 1:38:51 PM2/7/17
to django...@googlegroups.com
e eu não fazia em comodato, só fazia o sistema e rodava num pc separado, o valor já no orçamento do sistema, mas nunca tomei uma maquina de volta, mas ficava só o sistema compilado lá dentro.

o ultimo sistema que fiz eu não queria disponibilizar o código, mas não consegui, eles exigiram que fosse no servidor deles aih lascou tudo, é complicado trabalhar com linguagem interpretada, não dá para esconder o código muito fácil não... no PHP tem criptografia que ofusca todo o código, o módulo descriptografa no apache, é a forma de disponibilizar sistemas em PHP sem dar o código assim de lambuja, mas tem como descriptografar tbm com engenharia reversa... no caso do python eu não conheço nada que possa funcionar dessa forma.

Júlio César M. Ferreira

unread,
Feb 7, 2017, 1:41:34 PM2/7/17
to django...@googlegroups.com
Diego,

O Python consegue converter o código fonte em byte-code (à exemplo do Java). Mas não vi, em minhas pesquisas, nada nesse caminho para Django. O meu foco seria algo como uma lib ou packages para serem usadas com o Django... mas que elas fossem "compiladas". Fossem em algum formato binário, por exemplo.

Diego Nascimento

unread,
Feb 7, 2017, 1:45:30 PM2/7/17
to django...@googlegroups.com
Até dá para fazer, mas dá uma mão de obra maior, vc faz uma lib e comunica ela por ffi ou qualquer linguagem de cola.

Diego Nascimento

unread,
Feb 7, 2017, 1:48:48 PM2/7/17
to django...@googlegroups.com
mas aí teria que usar outra linguagem que não o python para fazer a lib. pode tbm usar zeromq, nanomsg para comunicar mais de uma linguagem, ou usar qualquer protocolo de comunicação e criar uma interface em python para ela.

Lúcio Corrêa

unread,
Feb 7, 2017, 2:03:03 PM2/7/17
to django...@googlegroups.com
Você pode ofuscar o código e compilá-lo, distribuindo só os arquivos ".pyc". Vai dificultar pra quem quiser fazer engenharia reversa, mas alguém realmente disposto a fazer isso, vai conseguir.



--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Lúcio Flávio Corrêa
@luciocorrea

Júlio César M. Ferreira

unread,
Feb 7, 2017, 2:26:21 PM2/7/17
to django...@googlegroups.com
Lúcio,

Vi alguns comentários sobre isso, sobre o tal .pyc. Mas, como é possível fazer o Django ler isso? Entendeu a minha dificuldade? :)

Fabio C. Barrionuevo da Luz

unread,
Feb 7, 2017, 2:31:32 PM2/7/17
to django...@googlegroups.com

O ideal mesmo é, você não dar acesso ao código, e fazer um bom contrato dizendo que o seu cliente tem somente direito de utilização do código, e não pode modifica-lo sem a sua expressa autorização por escrito.


Dito isto, bom, tem esse dica aqui para gerar os arquivos pyc manualmente:

Fábio C. Barrionuevo da Luz
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Júlio César M. Ferreira

unread,
Feb 7, 2017, 2:37:16 PM2/7/17
to Django Brasil
Pessoal,

Abrindo um pouco o jogo, a ideia é um sistema comercial proprietário. Provavelmente não seja possível desenvolvê-lo 100% web (provavelmente, ok?). Mas o cliente quer utilizar a tecnologia Python/Django.

Pode ser que, de alguma forma, a ideia morra. Mas por enquanto, ainda é Python/Django. Por esse motivo simples, a regra de negócio precisa estar protegida, pois será proprietária do cliente e ele pretende comercializar essa solução, em forma de serviços (não serviço web, API) para seus clientes e prospectos.

Fabio C. Barrionuevo da Luz

unread,
Feb 7, 2017, 2:50:23 PM2/7/17
to django...@googlegroups.com
Não tem magica...

Linguagens interpretadas como Python, Java, Ruby e etc, são inerentemente "fáceis" de descompilar.
Linguagens compiladas como C/C++, Go também podem ser descompiladas, embora é uma tarefa difícil, mas não impossível.


A unica forma do SEU cliente proteger a propriedade intelectual é, via contrato e adicionalmente, somente fornecer o software como um SAAS.

https://pt.wikipedia.org/wiki/Software_como_servi%C3%A7o


links adicionais:

http://www.simonroses.com/2013/10/appsec-myths-about-obfuscation-and-reversing-python/
http://wiki.c2.com/?ObfuscatedPython




--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Júlio César M. Ferreira

unread,
Feb 7, 2017, 2:57:57 PM2/7/17
to Django Brasil
Fábio,

Na verdade, ele não é MEU cliente. Mas agradeço pela dica.


Em terça-feira, 7 de fevereiro de 2017 16:50:23 UTC-3, Fabio Caritas Barrionuevo da Luz escreveu:
Não tem magica...

Linguagens interpretadas como Python, Java, Ruby e etc, são inerentemente "fáceis" de descompilar.
Linguagens compiladas como C/C++, Go também podem ser descompiladas, embora é uma tarefa difícil, mas não impossível.


A unica forma do SEU cliente proteger a propriedade intelectual é, via contrato e adicionalmente, somente fornecer o software como um SAAS.

https://pt.wikipedia.org/wiki/Software_como_servi%C3%A7o


links adicionais:

http://www.simonroses.com/2013/10/appsec-myths-about-obfuscation-and-reversing-python/
http://wiki.c2.com/?ObfuscatedPython



2017-02-07 16:37 GMT-03:00 Júlio César M. Ferreira <julio.m...@gmail.com>:
Pessoal,

Abrindo um pouco o jogo, a ideia é um sistema comercial proprietário. Provavelmente não seja possível desenvolvê-lo 100% web (provavelmente, ok?). Mas o cliente quer utilizar a tecnologia Python/Django.

Pode ser que, de alguma forma, a ideia morra. Mas por enquanto, ainda é Python/Django. Por esse motivo simples, a regra de negócio precisa estar protegida, pois será proprietária do cliente e ele pretende comercializar essa solução, em forma de serviços (não serviço web, API) para seus clientes e prospectos.



Em terça-feira, 7 de fevereiro de 2017 15:07:20 UTC-3, Júlio César M. Ferreira escreveu:
Boa tarde pessoal!

Acredito que o cenário principal de uma aplicação Django seria uma aplicação que roda em um servidor centralizado (um provedor da vida) e os clientes consumindo essa aplicação remotamente.

Mas, quando você tem a necessidade de ter o source da sua aplicação rodando em um servidor local no cliente, como poderíamos proceder para a proteção do código?

Quando pergunto isso, estou tentando abstrair coisas como contratos de uso, leis e etc. Refiro-me especificamente ao código fonte protegido, criptografado ou até mesmo compilado.

Com o Django, existe essa possibilidade?

Em pesquisas na net, encontrei uma forma de converter código Python em byte-code, nesse site -> http://effbot.org/zone/python-compile.htm#compiling-python-modules

Valeu pela força!

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Marlon Luis Petry

unread,
Feb 7, 2017, 3:12:03 PM2/7/17
to django...@googlegroups.com
Uma modalidade de fornecimento é através de appliance onde o cliente, consome o serviço mas não tem acesso a console do servidor.

Pode ser virtual ou físico.



Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.

Lúcio Corrêa

unread,
Feb 7, 2017, 3:13:50 PM2/7/17
to django...@googlegroups.com
2017-02-07 16:37 GMT-03:00 Júlio César M. Ferreira <julio.m...@gmail.com>:
Pode ser que, de alguma forma, a ideia morra. Mas por enquanto, ainda é Python/Django. Por esse motivo simples, a regra de negócio precisa estar protegida, pois será proprietária do cliente e ele pretende comercializar essa solução, em forma de serviços (não serviço web, API) para seus clientes e prospectos.

Então a sugestão que deram antes pode ser uma boa: uma "caixa", fechada, que o cliente só vai plugar na rede e pronto. A caixa pode ser um case próprio, expondo só as portas necessárias e com algum tipo de trava/selo/sensor de abertura.

Kauê Raizer de Jesus

unread,
Feb 7, 2017, 3:14:51 PM2/7/17
to django-brasil

--

Júlio César M. Ferreira

unread,
Feb 7, 2017, 3:24:47 PM2/7/17
to Django Brasil
Kauê,

Uma excelente sugestão. Ao que parece, totalmente compatível com a árvore de projetos do Django.
Pode ser uma!
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.

Lúcio Corrêa

unread,
Feb 7, 2017, 3:32:20 PM2/7/17
to django...@googlegroups.com
Só lembrando que isso só vai empacotar teu código, não vai "protegê-lo". 

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Diego Nascimento

unread,
Feb 7, 2017, 3:37:56 PM2/7/17
to django...@googlegroups.com
não acho uma ferramenta dessas boa para proteger o código, ainda acho mais recomendado separar, a regra do negócio compilado em outra linguagem, e a parte web feita com o django e python e usa uma interface, qualquer protocolo para comunicar dos dois.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.

Júlio César M. Ferreira

unread,
Feb 7, 2017, 3:56:07 PM2/7/17
to Django Brasil
Dando uma olhada no site desse tal PyInstaller, pude ver que existe uma lista de todos os "clientes" que utilizam a ferramenta e lá encontra-se o famoso Kivy. Isso já torna a ferramenta um pouco mais conceituada.



Em terça-feira, 7 de fevereiro de 2017 15:07:20 UTC-3, Júlio César M. Ferreira escreveu:

Mauro Risonho de Paula Assumpção

unread,
Feb 7, 2017, 4:13:48 PM2/7/17
to django...@googlegroups.com
Peguntaram algo similar:


OBS: Fora do escopo da pergunta, talvez você tenha uma opção fora de python e django, que seria Golang. Em Golang você pode compilar seu web app e entregar um binário e executável no ambiente, se ao menos ter golang no ambiente do cliente.

@firebitsbr

--

Mario Augusto Mania

unread,
Feb 7, 2017, 4:23:26 PM2/7/17
to django...@googlegroups.com
Pessoal, vamos lá.

Primeiro: Django é python, e, ponto final.

Python permite compilar .Py em .pyc, ou, melhor ainda, em .Pyo

Com isso, entrega-se um binário ao invés de código fonte.

Pode-se usar engenharia reversa? Claro, e, com qualquer linguagem isso é possível.

Agora, uma opção mais bacana, é entregar uma VM criptografa.

Mario Mania

Mauro Risonho de Paula Assumpção

unread,
Feb 7, 2017, 4:49:58 PM2/7/17
to django...@googlegroups.com
VM criptografa em qual local? No boot? em partições?

Porque depois, de inserir a senha, um user pode simplesmente fazer um DD remoto e já era

Fale mais sobre isso...:)

@firebitsbr

Filipe Cifali

unread,
Feb 7, 2017, 7:54:57 PM2/7/17
to django...@googlegroups.com
@Mauro

Ele pode fazer o DD, mas se as partições estiverem criptografadas e usando um mdcrypt fica bem complicado acontecer esse "já era"

@Júlio

Você pode entregar um container para eles rodarem a aplicação? 

O problema todo é eles terem especificado que querem que seja feito em Python/Django, na minha opinião, as suas melhores alternativas são baseadas no seu cenário:

1) vender o sistema separado online para poder vender para mais de um cliente

2) vender o sistema mais caro do que o preço que você tem atualmente para compensar possíveis plágios

3) vender o acesso ao sistema em forma de caixa / container que o usuário apenas pluga na rede e um proxy faz o resto pra ele 

Me parece que com a sua abordagem atual, você vai mais gastar energia pesquisando para tentar resolver algo que seja complicado de fazer em Python do que decidindo uma alternativa melhor / mais fácil.
[ ]'s

Filipe Cifali Stangler

Sinval Júnior

unread,
Feb 7, 2017, 8:23:52 PM2/7/17
to django...@googlegroups.com
@Julio você pode usar Cython[1] e converter as partes mais importantes do código para uma lib ".so" , ou ".dll", models, views, se tiver usando facade e tiver criado um objeto de services/controller fica mais fácil ainda, estas por sua vez serão binárias - compiladas com gcc - isso irá impedir que alguém veja indevidademente o código fonte. Contudo é possível usar o gdb[1] e fazer engenharia reversa, explots etc... Isto nem mesmo códigos C/C++ ficam a salvos. Acredito que a melhor sólução é a proposta pelo @Filipe Cifali











Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.

#=================================================================+
#!/usr/bin/env python
nome = 'Sinval Júnior'
email = 'sinvalju arroba gmail ponto com'
print nome
print email
#==================================================================+

Nilo Menezes

unread,
Feb 8, 2017, 8:59:56 AM2/8/17
to django...@googlegroups.com
E que tal distribuir uma imagem em uma VM Linux?
Você pode proteger a VM com senha e proteger o acesso pela rede, só você
teria SSH por exemplo.

Tem como configurar o VirtualBox para iniciar uma vm no boot por exemplo.

[]'s

Nilo

--
-------------------
Nilo Menezes (@lskbr)
Livro: http://python.nilo.pro.br/
Libro: https://www.librodepython.com

Júlio César M. Ferreira

unread,
Feb 8, 2017, 10:01:18 AM2/8/17
to Django Brasil
Pessoal,

Descobri uma novidade (antiga, por sinal): é possível compilar nativamente o código fonte .py do Django com o próprio Python usando o comando abaixo:

python -m compileall diretorio_sistema/

Ele cria um arquivo .pyc dentro do diretório __pycache__ de toda a sua aplicação. No site oficial do Python, é possível executar esse arquivo diretamente.

A pergunta agora é: Dá pra rodar esse tipo de arquivo no Django?

Lúcio Corrêa

unread,
Feb 8, 2017, 10:04:13 AM2/8/17
to django...@googlegroups.com

2017-02-08 12:01 GMT-03:00 Júlio César M. Ferreira <julio.m...@gmail.com>:
A pergunta agora é: Dá pra rodar esse tipo de arquivo no Django?

Django é python...

Avraham Serour

unread,
Feb 8, 2017, 10:04:46 AM2/8/17
to Django Brasil
Em último caso você pode distribuir uma imagem do docker, eu pessoalmente não gosto muito dessa ideia mas é uma opção sua.

Eu usaria alguma coisa com cython provavelmente, como já foi sugerido, mas não precisa cythonizar todo o projeto, libs como django eu não vejo sentido em proteger, é segredo que você usa django? você precisa esconder isso?
Só precisa cythonizar o seu módulo, ou apenas alguns modulos especificos.

fora isso você pode obfuscar o seu codigo, existem diferentes approaches e libs para isso, só buscar no google e no SO

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Nilo Menezes

unread,
Feb 8, 2017, 10:11:16 AM2/8/17
to django...@googlegroups.com
Um container do docker é bem diferente... Um container é desprotegido se você tem acesso root a máquina.
Além disso, é bem fácil extrair o conteúdo e copiar para outro lugar.

Uma VM teria a proteção de um Linux. IP diferente, senha, sistema de arquivos, etc.

[]

Nilo
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Lúcio Corrêa

unread,
Feb 8, 2017, 10:16:44 AM2/8/17
to django...@googlegroups.com

2017-02-08 12:11 GMT-03:00 Nilo Menezes <pytho...@gmail.com>:
Um container do docker é bem diferente... Um container é desprotegido se você tem acesso root a máquina.
Além disso, é bem fácil extrair o conteúdo e copiar para outro lugar.

Uma VM teria a proteção de um Linux. IP diferente, senha, sistema de arquivos, etc.

Se você tem acesso físico a um equipamento, praticamente tudo é inseguro. Sugeriram usar criptografia numa VM, só que isso tem um detalhe: pra executar, seja numa VM ou não, o sistema de arquivos precisa ser descriptografado. 

Nilo Menezes

unread,
Feb 8, 2017, 10:40:48 AM2/8/17
to django...@googlegroups.com
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

100% é impossível, vide outras indústrias (filmes, músicas, etc).

Uma página com métodos interessantes e específicos para Python:

http://bits.citrusbyte.com/protecting-a-python-codebase/

Pode dar algumas boas ideias.

[]

Nilo
-- 
-------------------
Nilo Menezes (@lskbr)
Livro: http://python.nilo.pro.br/
Libro: https://www.librodepython.com

Mauro Risonho de Paula Assumpção

unread,
Feb 8, 2017, 10:53:08 AM2/8/17
to django...@googlegroups.com
O que o Lúcio falou, foi o que quis dizer na minha mensagem anterior.

Acho que neste caso, vale a idéia sobre usar cpython ou até combinar com outras linguagens onde podem ser compiladas com python.

mas também tem uma coisa que já foi falado, quando querem quebrar a segurança, vão descompilar de qualquer forma, ceod ou tarde.

O jeito é firmar um contrato com o cliente.

@firebitsbr

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasil+unsubscribe@googlegroups.com.

Sinval Júnior

unread,
Feb 9, 2017, 6:29:42 AM2/9/17
to django...@googlegroups.com
Júlio isto não irá proteger seu código. Arquivos .pyc são apenas bytecode. Mais sim vai conseguir rodar. Basta remover os arquivos .py e evocar os arquivos .pyc

Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.

#=================================================================+
#!/usr/bin/env python
nome = 'Sinval Júnior'
email = 'sinvalju arroba gmail ponto com'
print nome
print email
#==================================================================+

--

Júlio César M. Ferreira

unread,
Feb 9, 2017, 6:45:28 AM2/9/17
to django...@googlegroups.com
Sinval,

Tenho ciência de que não existe 100% de proteção. A ideia era apenas não deixar o código exposto. Compilar para byte-code é uma solução simples e que já é nativa do Python. Achei que pode ser a saída.

Sobre teu comentário sobre "basta remover os arquivos .py e evocar os arquivos .pyc", como seria isso? Uma vez compilado, por exemplo, o meu views.py de uma app qualquer, bastaria removê-lo e colocar o views.pyc no lugar? Seria isso?

Minha única dúvida atualmente é como usar esses arquivos .pyc no Django.

Sinval Júnior

unread,
Feb 9, 2017, 7:28:31 AM2/9/17
to django...@googlegroups.com
@Júlio o .pyc não é nem 10% gere um exemplo e dê um vim nele. é preferível usar o  Cython, que já citei anteriormente, daria uns 90%. 

Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.

#=================================================================+
#!/usr/bin/env python
nome = 'Sinval Júnior'
email = 'sinvalju arroba gmail ponto com'
print nome
print email
#==================================================================+

Reply all
Reply to author
Forward
0 new messages