Vous êtes sur la page 1sur 136

Hackeando o

Facebook com
Python 3
Fernando Masanori
FATEC
Centro Paula Souza
@fmasanori

Agenda

Python 3 (nestes slides)


Facebook
Material para aprofundamento
Disclaimer: code for fun (no
password hacking)

Obs: se preferir: slides para Python 2.7


Obs: em junho de 2013 a API aberta do Twitter foi
aposentada, veja nos slides finais como autenticar e
acessar os dados

Conhecendo os assistentes

Estudantes
Professores
Profissionais de TI
Sabem programar
Sabem programar em Python

Prof old notebook

Prof new notebook

CV Resumido

Graduado IME USP


Mestrado ITA
Software Express
Credicard Mastercard
PriceWaterhouseCoopers
ITAU BankBoston
Fundador Hacker Clube SJC
FATEC SJC (amo dar aulas)
Nota dada para minhas aulas: 9,7

Adicione / Siga o Prof

Fernando Masanori (Massa)


facebook.com/fmasanori
twitter.com/fmasanori
about.me/fmasanori
Interesses: Algoritmos, Estrutura
de Dados, Python, NoSQL,
Business Intelligence, Google
Technology, Facebook, Twitter

Palestras em eventos de TI

Porto Alegre, Brasil - 04/07/2013 - FISL14 - Palestra Fernando Masanori -Python for Zombies - Foto: Guilherme Dias

Algumas palestras

PyCon Uruguay 2013 (em espanhol)


DevDay2013 Belo Horizonte - MG
Python para Zumbis RuPy Conference 2013
Para gostar de Python Python Nordeste 2013 e TDC
2013
Hoje sou um professor FELIZ FISL 2013
Python for Zombies FISL 2013
MongoDB e Python Python Nordeste 2013
NoSQL e Python RuPy Conference 2012
I Love JSON Module Python Brasil 2012
Pentaho: suite para BI JUG Vale 2012
Cassandra NoSQL JUG Vale 2012
Benchmark LucidDB x MySQL NoSQL(br)/v2

CEDET Decolar

Casdinho

We Love Python

We Love Python
Permite focar no problema, sem
perder tempo na sintaxe
Interativa
Alta produtividade
Baterias inclusas
Comunidade livre, forte, diversificada,
alegre e acolhedora
Orientada a objetos, funcional,
estruturada
Uso geral vs nichos
Simples de iniciar, sem esgotar

Eu domino uma linguagem corporativa e o


mercado meu, quero vocs fora daqui.

O mercado enorme, no tem sentido que


existam s linguagens corporativas

We Love Python

http://www.python.org/psf/diversity/

We Love Python

Meta: 20 % de presena feminina em 2015


Fato: 20% dos congressistas PyConUS 2013!
Fato: Um tero dos palestrantes da PyConUS 2014!

We Love Python

http://pyladies.com/

We Love Python

Meta: 25% no americanos em 2015

First pt-br programming MOOC

http://pycursos.com/python-para-zumbis/

Small interactive videos, no


more blackboard and chalk

A lot of fun exercises

Edx MIT
Coursera Interactive Python
IME-USP
Codingbat
Google Python Class
Cracking Code Interview

7200 inscriptions! and growing...

We Love Python Hello World

We Love Python Hello World

Origem do nome Python

Python como um diferencial

The Python Paradox, Paul Graham

Python: quem usa

1h video/s 4 billion views

Python: quem usa

Python: quem usa

Python: quem usa

Python: quem usa

Python: quem usa

Python: quem usa

Python: quem usa

Python: quem usa

Voc sabia que o Pi do nome se origina de Python?

Python: quem usa

Popularidade Github e
StackOverflow

JobTrends Indeed.com

Linguagem do ano TIOBE em


2007 e 2010

Linguagem Favorita do
LinuxJournal: 2009 a 2013

Linguagem do ano TIOBE em


2007 e 2010

O que falam de Python

Se o Voldemort quisesse ser realmente imortal, ele teria


programado uma horcrux recursiva em Python. Harry Potter.

O que falam de Python

A vida melhor sem chaves.


A vida curta! Voc precisa de Python.
Python me ajuda a focar nos meus conceitos
em vez de ficar brigando com a linguagem.
Eu no preciso digitar muito. Mas o que eu digito certo.
Bruce Eckel, autor do best seller Thinking in Java.

O que falam de Python

Entre todas as linguagens que eu aprendi, Python a que menos interfere entre
mim e o problema. a mais efetiva para traduzir pensamentos em aes.
Eric Raymond, Autor A catedral e o Bazar.
Contribuidor do GNU Emac, Linux, Fetchmail.
Mantm o Jargonfile, mais conhecido como Dicionrio dos Hackers

O que falam de Python

Python tem sido uma parte importante do Google desde o incio, e permanece
assim conforme o sistema cresce e evolui... estamos procurando por mais
pessoas com conhecimento nessa linguagem.
Peter Norvig, diretor de qualidade de busca do Google Inc.

O que falam de Python

[] nossa filosofia aqui Python sempre que pudermos, C++ se


necessrio". Alex Martelli, Lder Tcnico, Sistemas de Produo, Google.

O que falam de Python

Python rpido o suficiente para o nosso site e nos permite produzir


caractersticas de fcil manuteno em tempos recordes, com um mnimo de
desenvolvedores. Cuong Do, Software Architect, YouTube.com

O que falam de Python

Python uma das cinco mais importantes linguagens que todo programador
deve conhecer Bjarne Stroustrup, criador de C++

O que falam de Python

O que falam de Python

"Only ugly languages become popular. Python is the one exception"


Don Knuth, walking to dinner after Alan Turing's Centenary Celebration
(from @ivanov on Twitter)

O que falam de Python

"Python poised to become the de facto engine for modern science"


Joshua Bloom, Berkeley Astronomy Department,
at SciPy2012

Linguagem poderosa, mas


simples de aprender

Neil Ibata, 15 anos, foi aprender a programar em


Python com o pai e virou capa da revista Nature.

Python for Kids

Antonio: concluiu comigo o


Coursera Interactive Python
with Games
Naomi: gosta de Justin Bieber e
est estudando Python

Linguagem poderosa, mas


simples de aprender

Programa de uma menina de 12


anos do Projeto CEDET Decolar

Doze calouros no Google


Developer Day 2011

1 lugar fase regional maratona


ACM- ICPC12

Twitter e Facebook nas aulas

Melhora da Auto Estima do Aluno

olha eu
aiiii... kkk

Melhora da Auto Estima do Aluno

Tempo Para Ser Produtivo

C
2 anos
Java
6 meses
Python
1 mes

Expressive Power

Language
C
Java
Python

Statements
1
2.5
6

Lines
1
1.5
6.5

Talk is cheap.
Show me the code.
Linus Torvalds

Check List

Conta no Facebook
Internet
Python 3
IDLE ou semelhante
Vamos fazer um aquecimento
Tutorial 1h em Python for Zombies
(Video no YouTube)
Curso completo free: Python para
Zumbis

Aquecimento: Install Python 3


Windows
download
executar > next > next...

Linux
sudo apt-get install idle-python3.3

Mac OS X
sudo port install python32

Aquecimento: Using Python 3


Windows
Iniciar > Programas > Python3.3 >
IDLE (Python GUI)

Linux (terminal)
idle-python3.3 &

Mac OS X (terminal)
IDLE3.3 &

Aquecimento: hello world

No modo interativo voc recebe a resposta para cada comando executado

Aquecimento: modo interativo

2**100000
dir(abacate)
help(abacate.upper)
abacate.upper()
a = abacate
b = 42
a, b = b, a
print (a, b)

Aquecimento: modo interativo

import random
random.randint(1, 100)
random.randint(1, 100)
random.choice(42, 13, 24, 7, 3, 10)
print (chr(33000))
import this
import antigravity

Aquecimento: errando

No Python os espaos iniciais so importantes

Aquecimento: errando

String diferente de inteiro

Aquecimento: edition mode

No modo edio voc precisa rodar o programa (Run Module ou F5)

Aquecimento: edition mode

Aquecimento: edition mode

Sempre use a extenso .py para no perder as cores do seu programa

Aquecimento: jogo simples

https://gist.github.com/fmasanori/6029123

Aquecimento: jogo simples

Feito por uma


menina de 12 anos
https://gist.github.com/5615826

for == while enrustido

Cdigos equivalentes: for durante o dia vira while noite

for == while enrustido

Cdigos equivalentes

for == while enrustido

Cdigos equivalentes

Aquecimento: criptografia

Feito por outra


menina de 12 anos

Dictionaries
O dicionrio em si consiste em relacionar uma
chave a um valor especfico
Diferentemente das listas, onde o ndice um
nmero, dicionrios utilizam suas chaves
como ndice
Para adicionar novos elementos no preciso
de append, basta fazer a atribuio
Se a chave j existe: o valor associado alterado
Se a chave no existe: a nova chave adicionada

Dictionaries

Dictionaries

Dictionaries
Faa um programa que leia o arquivo alice.txt
e conte o nmero de ocorrncias de cada
palavra no texto. Obs.: para saber os
caracteres especiais use import string e
utilize string.punctuation
http://www.gutenberg.org/cache/epub/11/pg
11.txt

Dictionaries

https://gist.github.com/4673017

Raspagem fotos churras alunos

Raspagem fotos churras alunos

https://gist.github.com/6637873

JSON killer module

Java Script Object Notation

http://json.org/
Independente de linguagem
Pares nome/valor
Lista ordenada
Muito adotado atualmente
Alternativa para o XML
Menos verbosa
Maior legibilidade

Chuck Norris Nerdy Jokes

https://gist.github.com/4745061

Facebook Hacking

Facebook Hacking

Hackers no so do mal?

Facebook Hacking
O Facebook dirigido por hackers. A
maioria das pessoas pensa de um
hacker como algum que invade um
sistema de computador. Mas ns
vemos isso como uma filosofia. Aqui, os
hackers assumem que sempre h uma
maneira melhor, mais eficiente de resolver
problemas. facebook.com/careers (2012)

Facebook Profile

https://gist.github.com/4667205

Facebook Profile Photo

https://gist.github.com/4667293

Graph API
https://developers.facebook.com/do
cs/reference/api/examples/
Objetos JSON
Links autenticados
Obs.: access_token expira
Autenticar novamente neste caso

Facebook Friends

Anote o formato

https://developers.facebook.com/docs/reference/api/examples/

Facebook Friends

Copie o
access_token

https://developers.facebook.com/tools/explorer

Facebook Friends

https://gist.github.com/4674792

Facebook Friends Photos

https://gist.github.com/4684752

Android
Wallpaper

Android
Wallpaper

Facebook Search

https://gist.github.com/4684949

Facebook Search

Sentiment Analysis (Facebook)


Sabe o que ter vontade de acordar cedo no
domingo para estudar?!?
Bom, eu tambm no sei explicar, mas o que
estou sentindo no momento .-.
Bora Casdinho!

Facebook Thanking (python 2.7)

https://gist.github.com/8696746

Facebook Thanking (python 2.7)

https://gist.github.com/8696746

Participantes de um evento
qualquer
Hackear participantes a partir do
evento criado no Facebook
Inserir link para o perfil pessoal
no Facebook
Obs.: somente alguns participantes
e com a foto na data do evento

Reddit MongoDB Client


(tribute to Aaron Swartz, cofounder of Reddit, nov-1986, jan-2013)

Reddit Client

(by 10gen)

https://gist.github.com/4691077

Reddit Client

MongoDB == JSON

Flexible Schema

Relational DB

Reddit MongoDB Client

Reddit MongoDB Client

Games com Python no browser

http://www.codeskulptor.org/#demos-pyman.py

Games com Python no browser

Rice Rocks (Asteroids)


https://gist.github.com/fmasanori/6042315

Slides e videos
Python for Zombies
Hackeando o Facebook e o
Twitter com Python 3

Links para iniciar


Twitter Dev API
Facebook Dev How To
Facebook Dev Pictures
Facebook Dev Search
Facebook Dev Examples/
Facebook Dev Getting Started

Material para aprofundamento

Material para aprofundamento

Obs.: o autor j anunciou a segunda edio, aguardem...

Material para aprofundamento

Material para aprofundamento

Material para aprofundamento

Material para aprofundamento

Web Scraping

http://pyvideo.org/video/609/web-scrapingreliably-and-efficiently-pull-data

Python para Zumbis (gratuito)

http://beta.pycursos.com/python-para-zumbis/

Perguntas?
fmasanori@gmail.com
facebook.com/fmasanori

twitter.com/fmasanori

Acesso Twitter Autenticado


At junho de 2013 era possvel acessar vrias
informaes do Twitter sem necessidade de
autenticao
O Twitter resolveu melhorar a segurana e
utilizar OAuth (Open Authentication) at o
acesso bsico (search)
Neste protocolo, recebemos uma chave e
senha que permite o acesso a um recurso
especfico durante algum tempo

Acesso Twitter Autenticado


O usurio do Twitter precisa autorizar um
programa externo, que recebe um
consumer_key e um consumer_secret
Na posse dessa chave e senha podemos pegar
uma chave e senha de acesso temporria
No se preocupe se voc no entender o
Tweepy. Ano passado era mais simples e s
recentemente ficou mais complicado acessar
o Twitter

Obtendo Chave e Senha de Acesso

Obtendo Chave e Senha de Acesso

Obtendo Chave e Senha de Acesso

Obtendo Chave e Senha de Acesso

Enviando mensagens

Enviando mensagens

Mensagens dos meus alunos