Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ya no se juega al veo veo

Alex
February 08, 2015

Ya no se juega al veo veo

Alex

February 08, 2015
Tweet

Other Decks in Programming

Transcript

  1. Alejandro Morais Ya no se juega al veo veo Except

    where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/ Leganés 12-13 Febrero 2015
  2. 2 • Introducción • Técnicas de Ofuscación en Javascript •

    Herramientas • Problemas con streaming de música, videos… • Posibles Soluciones • Conclusión (Es decir, un mejunje JS + Agenda
  3. 5

  4. Ofuscando: Técnicas • Minimizar • Como funciona eval() • ASCII

    • Unicode • XOR • Split de Strings • Packed • Encriptado Simple • Técnicas Avanzadas
  5. Warning Antes de empezar a ofuscar código siempre hay que

    hacer una o varias copias del original (siempre se pierden las copias)
  6. • Minimizar Ofuscando: Técnicas • Uso de variables con longitudes

    más cortas • Eliminación de espacios y tabs
  7. • Minimizar Ofuscando: Técnicas Twitter: https://abs.twimg.com/c/swift/es/bundle/fro ntpage...js 269 KB ->

    compresión (solo espacios) -> 196 KB ¡¡ Ahorro del 27.2 % !! (Con variables ~ 30%)
  8. • XOR (ASCII) Ofuscando: Técnicas Clave: 173 xor_str(“var a =

    …”); Misma función, encripta y desencripta
  9. • XOR (Character Encoding) Ofuscando: Técnicas Clave: 173 Misma función,

    encripta y desencripta xor_str(“var a = …”);
  10. • Técnica del “Espacio en blanco” Ofuscando: Técnicas Usar “document”

    o “eval”, canta mucho… Lo mismo hacemos con “getElementById”, “innerHtml”,…
  11. Variables “e” y “d” no se usan “c.toString(a)” => Convierte

    “c” en base “a” Por lo tanto base “36”
  12. Caso Grooveshark • “Session”: valor de la cookie • “Uuid”:

    buscamos en JS • “Token”: buscamos en JS JS minimizado. Hmm…
  13. Caso Grooveshark El veo veo hardcore: 1. Ctrl + F

    2. Buscar palabra clave 3. Probar 4. Si no funciona vuelve al 1.
  14. Caso Grooveshark • “Uuid”: encontrado en app.min.js • “Token”: de

    la peticion getCommunicationToken JS minimizado no tiene “protección”
  15. Posible Soluciones • Token / URLs Firmadas • Encriptación AES

    • DRM (~ AES) • Bloquear por localización • Marcas de Agua • Limitar Velocidad
  16. P2P