CloudFlare Email Protection Decoder на Ruby
Известная контора CloudFlare и ее популярная услуга проксирования сайта, иногда, на определенных тарифах, не только скрывает истинный IP сервера сайта, но и может подменять контент выдаваемой сервером страницы. В частности, CF любит подменять открытые e-mail адреса, на JS-скрипт, который шифрует адрес вида xxx@yyy.zzz в исходном коде страницы. Пользователь браузера при этом не замечает подмены e-mail адреса, т.к. JS расшифровывает его, чего не сказать о парсере.
Если в настройках сайта в CF включена защита Email, то фрагмент исходного кода с почтовым адресом выглядит примерно так:
<a id="__cf_email__" href="http://cloudflare.com/email-protection.html" class="f091809582839f9eb080999e97848582849c95de939f9d">[email protected]</a> |
Где f091809582839f9eb080999e97848582849c95de939f9d
– зашифрованная почта.
Реализации расшифровщика Cloudflare Email Encrypt существуют на множестве языков, например товарищ xl7dev представил Cloudflare Email Protection Decoder на PHP и Python. Но разве прогрессивное человечество еще использует эти древние мантры?
Cloudflare Email Protection Decoder на Ruby
def cf_decode(code) k=code[0..1].hex (2..(code.size-1)).step(2).to_a.map{|i| (code[i..(i+1)].hex^k).chr}.join end |
$ irb 2.0.0-p648 :001 > def cf_decode(code) 2.0.0-p648 :002?> k=code[0..1].hex 2.0.0-p648 :003?> (2..(code.size-1)).step(2).to_a.map{|i| (code[i..(i+1)].hex^k).chr}.join 2.0.0-p648 :004?> end => nil 2.0.0-p648 :005 > cf_decode('f091809582839f9eb080999e97848582849c95de939f9d') => "aperson@pingturtle.com" 2.0.0-p648 :006 > |