module KennaKdi class SubdomainGenerator attr_accessor :tld, :base_domain def initialize(tld, base_domain) @tld = tld @base_domain = base_domain end def perform(year, month, day) # generating a subdomain. # https://en.wikipedia.org/wiki/Domain_generation_algorithm domain = "" 16.times do year = ((year ^ 8 * year) >> 11) ^ ((year & 0xFFFFFFF0) << 17) month = ((month ^ 4 * month) >> 25) ^ 16 * (month & 0xFFFFFFF8) day = ((day ^ (day << 13)) >> 19) ^ ((day & 0xFFFFFFFE) << 12) domain += (((year ^ month ^ day) % 25) + 97).chr end domain + base_domain + tld end end end