userfile = 'userfile.txt' passfile = 'passfile.txt' # Class we can ask for the next credentials to try class Credentialstore attr_accessor :user, :pass def initialize(userfile, passfile) @uf = File.open userfile @pf = File.open passfile @user = @uf.gets @pass = nil end # Advance to the next credential combination def next # Advance password first @pass = @pf.gets # Rewind password list and advance to next user if we are out of passwords if @pass.nil? puts "Password list exhausted." @pf.rewind @pass = @pf.gets @user = @uf.gets end # Stop if we are also out of users if @user.nil? puts "Username list exhausted." return false end return true end end cs = Credentialstore.new(userfile, passfile) while cs.next puts cs.user puts cs.pass end