Сложно сказать, откуда берётся NRE, тк код хоть и страшный, но рабочий.
Ошибка может возникать, если OFD, OFD.FileName, logins или pass равен null.
Небольшой совет, как можно улучшить код:
1. Делаем отдельный тип для пары логин-пароль, и используем для этого один список
2. Читаем файл не целиком, а построчно.
var path = "...";
var lines = await File.ReadAllLinesAsync(path);
var allCredentials = lines.Select(Credentials.Parse).ToList();
public record Credentials(string Username, string Password) {
public static Credentials Parse(string line) {
var parts = line.Split(':');
return new(parts[0], parts[1]);
}
}