• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Записать диапазоны в массив и сравнить с текущим Ip

  • Автор темы Shouldercannon
  • Дата начала
S

Shouldercannon

Уважаемые форумчане, помогите пожалуйста реализовать следующее. Задача заключается в том, чтобы загрузить из файла диапазоны IP и сравнить их с IP присоединяющегося. Файл *.cfg с таким содержимым:
3
127.0.0.0
127.0.0.255
128.0.0.0
128.0.0.255
129.0.0.0
129.0.0.255

При чтении командой ReadLn, в первой строке глубина цикла, от 1 до этого значения. Затем, в цикле подряд два оператора чтения ReadLn, первый сохраняет в запись ячейки "От", второй в запись "По". Сам массив от 1 до значения, что считано с первой строки файла.
 
S

sinkopa

Код:
uses
WinSock;

Функции
Код:
// Преобразует строковый IP в LongInt
function inet_addr(cp: PChar): u_long; stdcall; 

//преобразует IP кодиованный в LongInt к строке вида XXX.XXX.XXX.XXX
function inet_ntoa(inaddr: TInAddr): PChar; stdcall;
// Используем так:
var
s: PChar;
cIp: Integer; // кодированный IP
begin
...
s := inet_ntoa(@cIp);
...
end;

следующий код поможет Вам построить массив в указанном диапазоне подсети
Код:
uses
WinSock;
...
type
TSubNetArray = array of Integer;

...

function GetIPSubNet(SubNet: string; IPFtom,IPTo: Integer): TSubNetArray;
var
i: Integer;
s: string;
begin
for i := IPFtom to IpTo do
begin
s := SubNet + '.' + IntToStr(i);
SetLength(Result,Length(Result)+1);
Result[High(Result)] := inet_Addr(PChar(s));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
IPSubNet: TSubNetArray;
begin
IPSubNet := GetIPSubNet('127.0.0',1,255);
...
end;
Ну а дальше... "напильником"... :please:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!