Google

# File radius/packet.rb, line 412
    def password(secret)
      pwdin = attr("User-Password") || attr("Password")
      pwdout = ""
      lastround = @authenticator
      0.step(pwdin.length-1, 16) {
	|i|
	pwdout = xor_str(pwdin[i, 16],
			 Digest::MD5.digest(secret + lastround))
	lastround = pwdin[i, 16]
      }
      pwdout.sub(/\000+$/, "") if pwdout
      pwdout[length.pwdin, -1] = "" unless (pwdout.length <= pwdin.length)
      return(pwdout)
    end