Hackeando o Facebook com Python
-
Upload
fernando-masanori -
Category
Education
-
view
38.707 -
download
15
description
Transcript of Hackeando o Facebook com Python
Hackeando o Facebook com
Python 3Fernando Masanori
FATECCentro Paula Souza
@fmasanori
Agenda
• Python 3 (nestes slides)
• 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
• Estudantes
• Professores
• Profissionais de TI
• Sabem programar
• Sabem programar em Python
Conhecendo os assistentes
Prof old notebook
Prof new notebook
• 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
CV Resumido
• 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
Adicione / Siga o Prof
Palestras em eventos de TI
Porto Alegre, Brasil - 04/07/2013 - FISL14 - Palestra Fernando Masanori -Python for Zombies - Foto: Guilherme Dias
• 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
Algumas palestras
CEDET Decolar
Casdinho
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
We Love Python
Eu domino uma linguagem corporativa e o mercado é meu, quero vocês fora daqui.
O mercado é enorme, não tem sentido que existam só linguagens corporativas
Meta: 20 % de presença feminina em 2015Fato: 20% dos congressistas PyConUS 2013!
Fato: Um terço dos palestrantes da PyConUS 2014!
We Love Python
Meta: 25% não americanos em 2015
We Love Python
http://pycursos.com/python-para-zumbis/
First pt-br programming MOOC
Small interactive videos, no more blackboard and chalk
A lot of fun exercises
Edx MITCoursera Interactive PythonIME-USPCodingbatGoogle Python ClassCracking Code Interview
7200 inscriptions! and growing...
We Love Python Hello World
We Love Python Hello World
Origem do nome Python
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
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
“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 não 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 ações“.
Eric Raymond, Autor “A catedral e o Bazar”.
Contribuidor do GNU Emac, Linux, Fetchmail.
Mantém o Jargonfile, mais conhecido como “Dicionário dos Hackers”
O que falam de Python
”Python tem sido uma parte importante do Google desde o início, 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 necessário”". Alex Martelli, Líder Técnico, Sistemas de Produção, Google.
O que falam de Python
“Python é rápido o suficiente para o nosso site e nos permite produzir características de fácil manutenção em tempos recordes, com um mínimo 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
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
Neil Ibata, 15 anos, foi aprender a programar em Python com o pai e virou capa da revista Nature.
Linguagem poderosa, mas simples de aprender
Antonio: concluiu comigo o Coursera “Interactive Python
with Games”Naomi: gosta de Justin Bieber e
está estudando Python
Python for Kids
Programa de uma menina de 12 anos do Projeto CEDET Decolar
Linguagem poderosa, mas simples de aprender
Doze calouros no Google Developer Day 2011
1º lugar fase regional maratona ACM- ICPC12
Twitter e Facebook nas aulas
olha eu aiiii... kkk
Melhora da Auto Estima do Aluno
Melhora da Auto Estima do Aluno
C 2 anosJava 6 mesesPython 1 mes
Tempo Para Ser Produtivo
Expressive Power
Language Statements Lines
C 1 1
Java 2.5 1.5
Python 6 6.5
Talk is cheap. Show me the code.
Linus Torvalds
• 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
Check List
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 espaços iniciais são importantes
Aquecimento: errando
String diferente de inteiro
Aquecimento: edition mode
No modo edição você precisa “rodar” o programa (Run Module ou F5)
Aquecimento: edition mode
Aquecimento: edition mode
Sempre use a extensão “.py” para não perder as cores do seu programa
Aquecimento: jogo simples
https://gist.github.com/fmasanori/6029123
Aquecimento: jogo simples
https://gist.github.com/5615826
Feito por uma menina de 12 anos
for == while enrustido
Códigos equivalentes: for durante o dia vira while à noite
for == while enrustido
Códigos equivalentes
for == while enrustido
Códigos equivalentes
Aquecimento: criptografia
Feito por outra menina de 12 anos
• O dicionário em si consiste em relacionar uma chave a um valor específico
• Diferentemente das listas, onde o índice é um número, dicionários utilizam suas chaves como índice
• Para adicionar novos elementos não preciso de append, basta fazer a atribuição – Se a chave já existe: o valor associado é alterado
– Se a chave não existe: a nova chave é adicionada
Dictionaries
Dictionaries
Dictionaries
• Faça um programa que leia o arquivo alice.txte conte o número de ocorrências de cadapalavra no texto. Obs.: para saber oscaracteres especiais use import string eutilize string.punctuation
• http://www.gutenberg.org/cache/epub/11/pg11.txt
Dictionaries
Raspagem fotos churras alunos
JSON killer module
• http://json.org/
• Independente de linguagem
• Pares nome/valor
• Lista ordenada
• Muito adotado atualmente
• Alternativa para o XML– Menos verbosa
– Maior legibilidade
Java Script Object Notation
Facebook Hacking
Hackers não são “do mal”?
Facebook Hacking
“O Facebook é dirigido por hackers. Amaioria das pessoas pensa de umhacker como alguém que invade umsistema de computador. Mas nósvemos isso como uma filosofia. Aqui, oshackers assumem que sempre há umamaneira melhor, mais eficiente de resolverproblemas.” facebook.com/careers (2012)
Facebook Hacking
• https://developers.facebook.com/docs/reference/api/examples/
• Objetos JSON
• Links autenticados
• Obs.: access_token expira
• Autenticar novamente neste caso
Graph API
Facebook Friends
https://developers.facebook.com/docs/reference/api/examples/
Anote o formato
Facebook Friends
https://developers.facebook.com/tools/explorer
Copie o access_token
AndroidWallpaper
AndroidWallpaper
Facebook Search
• Sabe o que é ter vontade de acordar cedo no domingo para estudar?!?
• Bom, eu também não sei explicar, mas é o que estou sentindo no momento .-.
• Bora Casdinho!
Sentiment Analysis (Facebook)
• 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
Participantes de um evento qualquer
(tribute to Aaron Swartz, cofounder of Reddit, nov-1986, jan-2013)
Reddit MongoDB Client
Reddit Client
Flexible Schema
MongoDB == JSON
Relational DB
Reddit MongoDB Client
Reddit MongoDB Client
http://www.codeskulptor.org/#demos-pyman.py
Games com Python no browser
Rice Rocks (Asteroids)
Games com Python no browser
https://gist.github.com/fmasanori/6042315
• Python for Zombies
• Hackeando o Facebook e o Twitter com Python 3
Slides e videos
Links para iniciar
Twitter Dev APIFacebook Dev How ToFacebook Dev PicturesFacebook Dev SearchFacebook Dev Examples/Facebook Dev Getting Started
Material para aprofundamento
Material para aprofundamento
Obs.: o autor já anunciou a segunda edição, aguardem...
Material para aprofundamento
Material para aprofundamento
Material para aprofundamento
Material para aprofundamento
Web Scraping
http://pyvideo.org/video/609/web-scraping-reliably-and-efficiently-pull-data
http://beta.pycursos.com/python-para-zumbis/
Python para Zumbis (gratuito)
facebook.com/fmasanori
twitter.com/fmasanori
• Até junho de 2013 era possível acessar várias informações do Twitter sem necessidade de autenticação
• O Twitter resolveu melhorar a segurança e utilizar OAuth (Open Authentication) até o acesso básico (search)
• Neste protocolo, recebemos uma chave e senha que permite o acesso a um recurso específico durante algum tempo
Acesso Twitter Autenticado
• O usuário 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 temporária
• Não se preocupe se você não entender o Tweepy. Ano passado era mais simples e só recentemente ficou mais complicado acessar o Twitter
Acesso Twitter Autenticado
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