string line = "192.168.100.250 - 192.168.101.5"; // Входящие данные
project.SendInfoToLog(string.Format(@"Диапазон IP: {0}", line)); // Вывожу в лог входящие данные
string[] arr_ip = line.Trim().Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries); // Разбиваем по разделителю
uint ip_in = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[0]).GetAddressBytes().Reverse().ToArray(), 0); // Начало диапазона
uint ip_out = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[1]).GetAddressBytes().Reverse().ToArray(), 0); // Конец диапазона
// Определяем начало и конец диапазона (если вдруг начало больше чем конец)
uint max = ip_in > ip_out ? ip_in : ip_out; // Ищем конец диапазона
uint min = ip_in > ip_out ? ip_out : ip_in; // Ищем начало диапазона
uint count = max - min; // Вычисляем сколько нужно сгенерировать IP
project.SendInfoToLog(string.Format("Начало: {0} Конец: {1} Количество: {2}", min, max, count+1)); // Выводим в лог
// Генерируем
List<string> ips = new List<string>(); // Список для хранения результата
for(uint i = max; i >= min; --i) ips.Add(string.Join(".", BitConverter.GetBytes(i).Reverse())); // Генерация IP
// Выводим в лог
foreach(string ip in ips) project.SendInfoToLog(ip); // Перебор сгенерированных значений IP с выводом в лог
project.SendInfoToLog(string.Format(@"Сгенерировано: {0} ip", ips.Count)); // Подводим итог - сколько сгенерировали