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 >

No Comments.

Leave a Reply

(обязательно)

(обязательно)