Abílio Azevedo.

Screenshot Bot

Cover Image for Screenshot Bot
Abílio Azevedo
Abílio Azevedo

Antes de mais nada quero deixar claro que não comercializei nem irei comercializar os materiais citados aqui neste artigo. Também deixar claro que paguei pelos acessos e conteúdos aqui citados. E que fiz os procedimentos aqui citados para estudo, prática de técnicas de engenharia reversa e de segurança de sistemas.

Recentemente voltei a estudar inglês em um curso para melhoria da pronúncia na escola Excellent Global que tem parceria com a Superlógica (empresa que trabalho atualmente).

Como é um curso remoto, eles liberaram acesso ao livro de forma virtual. O acesso é feito pelo site através de um login e senha. Porém, eu queria acessar o livro de maneira offline e poder escrever no livro digitalmente. Entretanto, não era possível porque o site em wordpress utiliza um plugin de segurança PDF Embedder Secure.

Os PDF originais ficam guardados em uma pasta de acesso protegido: Acesso Protegido

O plugin tem acesso a esta pasta e transforma o PDF em um arquivo binário encryptado no backend e baixa ele no frontend: Screen Shot 2022-02-13 at 16.35.34

Com este binário o frontend, então, interpreta e converte para renderizar as páginas do pdf em tags canva no HTML: PDFEM-viewer

Portanto, era preciso utilizar um algoritmo similar ao do plugin para interpretar e converter em PDF. Porém isso tomaria muito tempo, portanto decidi fazer um bot que tira fotos da tela e anda pra próxima página. Você encontra o código fonte do bot. Com isso consegui gerar o PDF do livro.

Para ir mais além no estudo de segurança do plugin, tentei acessar outros livros. Lembrando que eu paguei pelo acesso do livro mais avançado, pra mim os outros livros não tem importância, mas queria ver se era possível acessá-los. Para isso exportei o HTML recebido na página do livro e modifiquei a URL do livro que continha o nome "lifestyle" (ultimo livro) para "decision" (penultimo livro) e rodei esse HTML em um servidor local. Porém, cai no bloqueio de CORS e para by-passar esse bloqueio utilizei o plugin do Chrome Moesif Origin & CORS Changer com isso consegui rodar o script do plugin e acessar o livro Decision. Só consegui isso porque eles utilizaram um padrão de nome de arquivo muito fácil. O ideal é sempre utilizar identificadores randomicos para guardar seus arquivos no servidor.

Já reportei o problema para a empresa =)

Por fim, gostaria de indicar o vídeo que a Rocketseat fez junto com desenvolvedores do Grupo Primo falando sobre o desenvolvimento da plataforma de conteúdo deles. Nesse vídeo eles falam sobre Digital Rights Management (DRM) e as formas de proteger conteúdos digitais. Entre elas:

  • Proteção em hardware para evitar o printscreen.
  • Injetar códigos únicos por usuário no encode da imagem, vídeo ou áudio para identificar quem está compartilhando o conteúdo pirata. Por isso algumas TVs antigas não passam alguns conteúdos por não terem a proteção de DRM.

More posts

Cover Image for The Phychology of Money

The Phychology of Money

Morgan Housel offers valuable insights on financial management and decision-making. The author emphasizes that financial success depends more on behavior than on intelligence or technical knowledge. Housel highlights the importance of long-term vision and resilience in the face of market volatility, encouraging us to focus on sustainability rather than short-term gains.

Cover Image for Bellsant

Bellsant

I've been at the forefront of developing a cutting-edge health and wellness app. Our tech stack combines React Native for cross-platform mobile development with a serverless NodeJS backend, leveraging AWS Lambda for scalability and cost-efficiency.

Abílio Azevedo
Abílio Azevedo

NewsLetter

I will send the content posted here. No Spam =)

Experienced Software Engineer with degree in Electrical Engineering with over 10 years of hands-on expertise in building robust and scalable mobile, web and backend applications across various projects mainly in the fintech sector. Mobile (React Native), Web (React and Next.JS) and Backend (Node.JS, PHP and DJANGO). My goal is to create products that add value to people. - © 2024, Abílio Azevedo