SlideShare uma empresa Scribd logo
SCRIPTING EM PYTHON PARA ANDROID
Rafael Sanches Rocha
Automatizando tarefas
Aprimorando e testando segurança mobile
Agendando execução pelo cron do busybox
Os personagens
Sintaxe simples
Agilidade na codificação
Rápida prototipação
Variedade de módulos
Maturidade em Infosec
Mobilidade
Discrição
> 80% do mercado mobile
> 1.4bi dispositivos
Open Source
Unindo tudo
Passos
1 - Rooting
2 - Instalar SuperSU (Play Store)
3 - Configurar > Segurança > Fontes Desconhecidas
4 - SL4A
https://github.com/kuri65536/sl4a/releases
5 - Python4Android
https://github.com/kuri65536/python-for-
android/releases
Preparando o ambiente
Py4A
Instalar Python
SL4A
Menu > View > Interpreters >
Python 2.7.x
Script 1 – Alarme de Perímetro
Proposta: Disparar um alarme quando o smartphone
sair de uma área pré-determinada
Função que havia anteriormente no Avast Anti-Theft,
mas não há mais
Código e execução: <EMULADOR>
Script 2 – Navegação Segura
Proposta: Simular um módulo de web protection de
alguns antivirus, procurando por links possivelmente
maliciosos na página
Trust me, i´m a good link!
href=“http://phishing.com”
Código e execução: <EMULADOR>
Script 3 – Scanner de Redes Vulneráveis
Proposta: Verificar por redes vulneráveis, armazenando
dados da rede e localização
Código e execução: <EMULADOR>
Automatizar execução dos scripts
Mais interessante seria programar a execução
automática dos scripts, ao invés de depender sempre de
um controle manual
Existem apps para isso, mas, por vezes são pagos
(TASKER), por outras não funcionam bem…
Solução: Ambiente unix rodando agendador de tarefas
(CRON)
Apps necessários
Busybox Terminal Emulator
for Android
Habilitando Python no shell
• Permitir rodar o python diretamente no emulador de terminal
• Configurar variáveis de ambiente necessárias...
Já há um script para isso!
http://forum.xda-
developers.com/showpost.php?p=47607547&postcount=17
• Observações:
-Salve como “python” em /system/bin
-Verifique o diretório correto em seu smartphone (/mnt/sdcard;
/mnt/storage/; etc...)
-Indicar a versão instalada!
$PY4A/lib/python2.7/lib-dynload
-Se o arquivo foi criado no Windows, retirar os “^M” ao final de cada
linha (usar editor vi)
Criando a crontab
• Crie em um diretório permanente:
#touch /data/crontab/root
Ex: 0 0 * * * python bkp.py
Editando a crontab
#vi /data/crontab/root
Tecla I => entra modo de edição Adicione as linhas desejadas
Tecla ESC => volta ao modo de comando
No emulador, pressione o botão VOL+, e depois a letra E
Modo de Comando Modo de Edição
SHIFT + Z + Z => Salva e Sai
:q! => Sai sem salvar
Habilitando o CRON
• Porém, precisaríamos executar isso toda vez
que o sistema reiniciasse
Habilitando o init.d
• Preparando suporte para o init.d, onde scripts
inicializam com o sistema
• Criar diretórios, rodar scripts do sistema, setar
permissões...
-Já há um script para isso!
-http://www.theandroidhow.com/2014/06/how-to-enable-initd-
support-on-android.html
Colocar este script em algum diretório, e executar:
# sh /<caminho>/term-init.sh
Agora, dentro de /system/etc/init.d, é possível colocar um script com
os comandos da etapa anterior, que irá rodar na inicialização
Recapitulando
1-Habilitamos o python para rodar pelo shell do terminal
(para o cron poder executar scripts em python)
2-Vimos como criar uma crontab
3-Criamos os arquivos e diretórios necessários para o cron, e
linkamos com o nosso arquivo crontab
4-Habilitamos o init.d para que essa configuração anterior seja
feita automaticamente em toda inicialização de sistema
Agora podemos colocar scripts .sh para inicializar com o
sistema, ou scripts .py para serem inicializados conforme
determinado na crontab!
Concluindo
Alternativa, rápida, para programação nativa do Android
Pratique as instalações e configurações primeiro em um emulador
(Genymotion – procure a mesma imagem de seu modelo de
smartphone)
Dica: Faça clones pelo VirtualBox!
Muita informação (ideias e soluções) na internet (learn how to
search in english)
StackOverflow FTW!
Infelizmente, não fornece a mesma robustez do que o
desenvolvimento em seu computador
Obrigado
Contato
rafael.si.123456@gmail.com
Github
https://github.com/R4fa/Workshop-PythonAndroid/

Mais conteúdo relacionado

Mais procurados

Sokoban com PyS60
Sokoban com PyS60Sokoban com PyS60
Sokoban com PyS60
fabiocerqueira
 
Gnome no FreeBSD
Gnome no FreeBSDGnome no FreeBSD
Gnome no FreeBSD
ramon_montana
 
Ciclo de vida de um componente react
Ciclo de vida de um componente reactCiclo de vida de um componente react
Ciclo de vida de um componente react
Laryssa Magalhães
 
[Curso Java Básico] Aula 11: Variáveis - Tipos Primitivos
[Curso Java Básico] Aula 11: Variáveis - Tipos Primitivos[Curso Java Básico] Aula 11: Variáveis - Tipos Primitivos
[Curso Java Básico] Aula 11: Variáveis - Tipos PrimitivosLoiane Groner
 
Oficina II - RASPBX
Oficina II - RASPBXOficina II - RASPBX
Oficina II - RASPBX
Marcelo Laranjeira Melo
 
Raspberry pi - Dicas e truques
Raspberry pi - Dicas e truquesRaspberry pi - Dicas e truques
Raspberry pi - Dicas e truques
Marcelo Laranjeira Melo
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentes
Roberson Alves
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
Rodrigo Almeida
 
Alterar password linux user pam autentication
Alterar password linux user   pam autenticationAlterar password linux user   pam autentication
Alterar password linux user pam autenticationCarlos Eduardo
 

Mais procurados (11)

Unidade5 roteiro
Unidade5 roteiroUnidade5 roteiro
Unidade5 roteiro
 
Shell script i
Shell script iShell script i
Shell script i
 
Sokoban com PyS60
Sokoban com PyS60Sokoban com PyS60
Sokoban com PyS60
 
Gnome no FreeBSD
Gnome no FreeBSDGnome no FreeBSD
Gnome no FreeBSD
 
Ciclo de vida de um componente react
Ciclo de vida de um componente reactCiclo de vida de um componente react
Ciclo de vida de um componente react
 
[Curso Java Básico] Aula 11: Variáveis - Tipos Primitivos
[Curso Java Básico] Aula 11: Variáveis - Tipos Primitivos[Curso Java Básico] Aula 11: Variáveis - Tipos Primitivos
[Curso Java Básico] Aula 11: Variáveis - Tipos Primitivos
 
Oficina II - RASPBX
Oficina II - RASPBXOficina II - RASPBX
Oficina II - RASPBX
 
Raspberry pi - Dicas e truques
Raspberry pi - Dicas e truquesRaspberry pi - Dicas e truques
Raspberry pi - Dicas e truques
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentes
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
 
Alterar password linux user pam autentication
Alterar password linux user   pam autenticationAlterar password linux user   pam autentication
Alterar password linux user pam autentication
 

Semelhante a Workshop Python para Android

Back track apresentação
Back track   apresentaçãoBack track   apresentação
Back track apresentação
Kleber Santos
 
Remobile
RemobileRemobile
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos cisco
Allan Alencar
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploit
Roberto Soares
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para Symbian
Marcel Caraciolo
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
Leandro Lugaresi
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisconogueira
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
Cristiano Rafael Steffens
 
Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtiva
Álvaro Justen
 
UTools Unite Brasil
UTools Unite BrasilUTools Unite Brasil
UTools Unite Brasil
Alexandre de Sá
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univem
evandrovv
 
Privilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisPrivilégios de processos no OpenSolaris
Privilégios de processos no OpenSolaris
Rafael Barbolo
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
Daniel
 
Cacti
CactiCacti
I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespes
luizfelipemz
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
Edgar Silva
 

Semelhante a Workshop Python para Android (20)

Back track apresentação
Back track   apresentaçãoBack track   apresentação
Back track apresentação
 
Remobile
RemobileRemobile
Remobile
 
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos cisco
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploit
 
Curso Python for S60
Curso Python for S60Curso Python for S60
Curso Python for S60
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para Symbian
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisco
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 
Pentest conisli07
Pentest conisli07Pentest conisli07
Pentest conisli07
 
Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtiva
 
Apresentacao Aula03 So
Apresentacao Aula03 SoApresentacao Aula03 So
Apresentacao Aula03 So
 
UTools Unite Brasil
UTools Unite BrasilUTools Unite Brasil
UTools Unite Brasil
 
Apresentacao sfd-poa
Apresentacao sfd-poaApresentacao sfd-poa
Apresentacao sfd-poa
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univem
 
Privilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisPrivilégios de processos no OpenSolaris
Privilégios de processos no OpenSolaris
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Cacti
CactiCacti
Cacti
 
I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespes
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 

Workshop Python para Android

  • 1. SCRIPTING EM PYTHON PARA ANDROID Rafael Sanches Rocha Automatizando tarefas Aprimorando e testando segurança mobile Agendando execução pelo cron do busybox
  • 2. Os personagens Sintaxe simples Agilidade na codificação Rápida prototipação Variedade de módulos Maturidade em Infosec Mobilidade Discrição > 80% do mercado mobile > 1.4bi dispositivos Open Source
  • 4. Passos 1 - Rooting 2 - Instalar SuperSU (Play Store) 3 - Configurar > Segurança > Fontes Desconhecidas 4 - SL4A https://github.com/kuri65536/sl4a/releases 5 - Python4Android https://github.com/kuri65536/python-for- android/releases
  • 5. Preparando o ambiente Py4A Instalar Python SL4A Menu > View > Interpreters > Python 2.7.x
  • 6. Script 1 – Alarme de Perímetro Proposta: Disparar um alarme quando o smartphone sair de uma área pré-determinada Função que havia anteriormente no Avast Anti-Theft, mas não há mais Código e execução: <EMULADOR>
  • 7. Script 2 – Navegação Segura Proposta: Simular um módulo de web protection de alguns antivirus, procurando por links possivelmente maliciosos na página Trust me, i´m a good link! href=“http://phishing.com” Código e execução: <EMULADOR>
  • 8. Script 3 – Scanner de Redes Vulneráveis Proposta: Verificar por redes vulneráveis, armazenando dados da rede e localização Código e execução: <EMULADOR>
  • 9. Automatizar execução dos scripts Mais interessante seria programar a execução automática dos scripts, ao invés de depender sempre de um controle manual Existem apps para isso, mas, por vezes são pagos (TASKER), por outras não funcionam bem… Solução: Ambiente unix rodando agendador de tarefas (CRON)
  • 10. Apps necessários Busybox Terminal Emulator for Android
  • 11. Habilitando Python no shell • Permitir rodar o python diretamente no emulador de terminal • Configurar variáveis de ambiente necessárias... Já há um script para isso! http://forum.xda- developers.com/showpost.php?p=47607547&postcount=17 • Observações: -Salve como “python” em /system/bin -Verifique o diretório correto em seu smartphone (/mnt/sdcard; /mnt/storage/; etc...) -Indicar a versão instalada! $PY4A/lib/python2.7/lib-dynload -Se o arquivo foi criado no Windows, retirar os “^M” ao final de cada linha (usar editor vi)
  • 12. Criando a crontab • Crie em um diretório permanente: #touch /data/crontab/root Ex: 0 0 * * * python bkp.py
  • 13. Editando a crontab #vi /data/crontab/root Tecla I => entra modo de edição Adicione as linhas desejadas Tecla ESC => volta ao modo de comando No emulador, pressione o botão VOL+, e depois a letra E Modo de Comando Modo de Edição SHIFT + Z + Z => Salva e Sai :q! => Sai sem salvar
  • 14. Habilitando o CRON • Porém, precisaríamos executar isso toda vez que o sistema reiniciasse
  • 15. Habilitando o init.d • Preparando suporte para o init.d, onde scripts inicializam com o sistema • Criar diretórios, rodar scripts do sistema, setar permissões... -Já há um script para isso! -http://www.theandroidhow.com/2014/06/how-to-enable-initd- support-on-android.html Colocar este script em algum diretório, e executar: # sh /<caminho>/term-init.sh Agora, dentro de /system/etc/init.d, é possível colocar um script com os comandos da etapa anterior, que irá rodar na inicialização
  • 16. Recapitulando 1-Habilitamos o python para rodar pelo shell do terminal (para o cron poder executar scripts em python) 2-Vimos como criar uma crontab 3-Criamos os arquivos e diretórios necessários para o cron, e linkamos com o nosso arquivo crontab 4-Habilitamos o init.d para que essa configuração anterior seja feita automaticamente em toda inicialização de sistema Agora podemos colocar scripts .sh para inicializar com o sistema, ou scripts .py para serem inicializados conforme determinado na crontab!
  • 17. Concluindo Alternativa, rápida, para programação nativa do Android Pratique as instalações e configurações primeiro em um emulador (Genymotion – procure a mesma imagem de seu modelo de smartphone) Dica: Faça clones pelo VirtualBox! Muita informação (ideias e soluções) na internet (learn how to search in english) StackOverflow FTW! Infelizmente, não fornece a mesma robustez do que o desenvolvimento em seu computador