Записать диапазоны в массив и сравнить с текущим 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 до значения, что считано с первой строки файла.
 
Код:
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:
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab