Skip to content

Instantly share code, notes, and snippets.

anonymous
anonymous / README.md
Created June 14, 2017 17:23

Über 80.000 Bücher zum einfachen Download oder Warum md5(reverse(userid)) kein guter DRM-Key ist

2014 startete "DIE GRATIS EBOOK FLATRATE" (Eigenschreibweise) Readfy, die sich anschickte, das Spotify für Bücher zu werden. Das Modell ist simpel: über die Android- und iOS-App können eBooks kostenlos gelesen werden, dafür wird permanent Werbung angezeigt (1 Banner sowie Videos alle paar Seiten). (Inzwischen können Bücher auch für 0.99€-4.99€ gemietet und dann werbefrei und offline gelesen werden.) So gut es klingt, gibt es damit einige offensichtliche Probleme: Die App funktioniert nur online (nach 2min geht sonst das Buch zu), die Werbung nervt und die Bücher können nur mit einer App und nur auf bestimmten Geräten gelesen werden. Und weil das so ja nicht schön ist, habe ich mir gedacht, dass ich mir ja mal anschauen kann, wie die App funktioniert, und ob da nicht irgendwo ePubs rausfallen.

tl;dr

@ducin
ducin / console.py
Last active January 1, 2022 16:41
Python script opening interactive console with current interpreter state. Thanks to readline/rlcompleter, you may use up/down arrows (history browse) or left/right arrows (line edition), see http://stackoverflow.com/questions/19754458/python-open-interactive-console-from-script)
"""
Console module provide `copen` method for opening interactive python shell in
the runtime.
"""
import code
import readline
import rlcompleter
def copen(_globals, _locals):
@peon-pasado-zeitnot
peon-pasado-zeitnot / gist:1242279
Created September 26, 2011 13:53
This D-trace script lists all run programs with their arguments - works with OSX
#!/usr/sbin/dtrace -C -s
#pragma D option quiet
proc::posix_spawn:exec-success,proc::__mac_execve:exec-success
{
this->isx64=(curproc->p_flag & P_LP64)!=0;
#define SELECT_64_86(x64, x86) (this->isx64 ? (x64) : (x86))
#define GET_POINTER(base, offset) (user_addr_t)SELECT_64_86(*(uint64_t*)((base)+sizeof(uint64_t)*(offset)), *(uint32_t*)((base)+sizeof(uint32_t)*(offset)))