| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Это очередная статья, посвященная скану портов. Только сканить мы будем не чужие порты, а свои, ибо проверяться на педикулез надо. Вообще-то очень хорошим средством предупреждения является сниффер, установленный на твоей машине и перехватывающий все логины/пароли, идущие через твой комп. Если твой комп не является гейтом LAN в Internet, то значит, ты увидишь все свои логины и пароли. Бывает, что твои пароли уходят с очень странными логинами на левые айпишники, значит, есть подозрение... Конечно, предложенная софтинка не является абсолютным средством, но она может помочь бороться со всякими нехорошими программками на твоем компе. Главный принцип действия - скан локальных портов, поиск открытых, сравнение номера найденного порта со списком подозрительных портов, вывод результатов. Как видишь, все предельно ясно.
Самая трудная часть - сбор сведений о характерных портах, на которых висят трояны. Я собирал эту информацию с многих сайтов, отсеял кучу дублирующейся информации и составил лист, который вместе с исходным текстом лежит в /files/rps_src.zip.
В этой статье я разберу только самый важный фрагмент исходного кода:
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
//этот трюк позволяет избежать появления сообщения об исключении. Тогда мы можем
//заняться обработкой ошибки самостоятельно
if (not StopFlag) and (portnum<StrToInt(Edit3.Text)) then
//Если кнопка паузы не была нажата и мы не за границами сканируемого диапазона,
//то спокойно выполняем проверку следующего порта
begin
portnum:=portnum+1;
ClientSocket1.Port:=portnum;
ClientSocket1.Active:=true;
Edit1.Text:=IntToStr(portnum);
end;
end;
Основная хитрость заключается в отказе от использования очевидного цикла for при переборе портов. Выгода тут прямая: мы решаем проблемы с перерисовкой окна, не пытаемся менять порт у уже открытого сокета и т.д.
Записи в ports.txt можно дополнять, главное, чтобы количество строк не превышало 500. В любом случае, софтинка получилась простенькая, поэтому и слов по этому поводу немного. Прога писалась на Delphi 3.0 Client-Server Suite (возрадуйся, Олл, что я хоть такой Делфик нашел).
Ну, Будем Здоровы!
(тут я выпиваю 50 грамм водки, громко крякаю и занюхиваю рукавом)
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |