hackeando o facebook com python

Post on 13-Jan-2015

38.703 Views

Category:

Education

15 Downloads

Preview:

Click to see full reader

DESCRIPTION

Workshop de 2h no Campus Party 2013. Introdução à linguagem Python. Hackear o Facebook para baixar fotos de amigos. Requisitos: conta no Facebook, notebook com Python 3.x instalado e vontade de aprender coisas novas. Resumo nos vídeos abaixo: http://www.youtube.com/watch?v=QH7b37URGSo http://www.youtube.com/watch?v=or1gtKGhMLE

TRANSCRIPT

Hackeando o Facebook com

Python 3Fernando Masanori

FATECCentro 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

• 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

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

We Love Python

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

http://pyladies.com/

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

The Python Paradox, Paul Graham

Python como um diferencial

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

Dictionaries

https://gist.github.com/4673017

Raspagem fotos churras alunos

Raspagem fotos churras alunos

https://gist.github.com/6637873

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

https://gist.github.com/4745061

Chuck Norris Nerdy Jokes

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

Facebook Profile

https://gist.github.com/4667205

Facebook Profile Photo

https://gist.github.com/4667293

• 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

https://gist.github.com/4674792

Facebook Friends

https://gist.github.com/4684752

Facebook Friends Photos

AndroidWallpaper

AndroidWallpaper

https://gist.github.com/4684949

Facebook Search

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)

https://gist.github.com/8696746

Facebook Thanking (python 2.7)

https://gist.github.com/8696746

Facebook Thanking (python 2.7)

• 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

https://gist.github.com/4691077

(by 10gen)

Reddit 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

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)

Perguntas?fmasanori@gmail.com

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

top related