PDA

Просмотр полной версии : Полезные программы (собственные)


De-visible
09.07.2008, 22:44
Здесь постим свои небольшие реализации, (повторяю СВОИ!)
-----------

Интересные и действительно нужные проекты будут поощраться...
-----------
Также можете оставлять просьбы на реализацию той или иной проги. =)

SlyBit
10.07.2008, 02:21
Аплоад файла по HTTP протоколу.

Данный исходный текст показывает как отослать файл на сервер по http протоколу методом POST. Имя файла передается в поле Request-URI, сам файл в Entity-Body. На сервере обрабатывает запрос и сохраняет файл простейший скрипт upload.php.

SendFileToServer.cpp:
// by SlyBit (c) 07.2008 /SendFileToServer.cpp/

#include "winsock2.h"
#include <windows.h>

#pragma comment(lib, "Ws2_32.lib")
#pragma comment(linker, "/ENTRY:Entry")

#define HOST_NAME "test.ru"
#define FILE_NAME "test_file.rar"
#define URL_NAME "upload.php"

BOOL WINAPI SendDataToServer(PVOID pData, DWORD dwDataSize, WORD wPort, PCHAR pAddress)
{
SOCKET ConnectSocket;
sockaddr_in ClientService;
INT nSendBytes = 0;

if(INVALID_SOCKET == (ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))) {
return 0;
}

ClientService.sin_family = AF_INET;
ClientService.sin_port = htons(wPort);
ClientService.sin_addr.s_addr = inet_addr(pAddress);

if(SOCKET_ERROR == connect(ConnectSocket, (SOCKADDR*)&ClientService, sizeof(ClientService))) {
closesocket(ConnectSocket);
return 0;
}

if(SOCKET_ERROR == (nSendBytes = send(ConnectSocket, (PCHAR)pData, dwDataSize, 0))) {
closesocket(ConnectSocket);
return 0;
}

closesocket(ConnectSocket);

return nSendBytes;
}

BOOL WINAPI GetIpByHostName(PCHAR pHostName, PCHAR pIp, DWORD dwIpSize)
{
hostent *pHosten;

if(!(pHosten = gethostbyname(pHostName))) {
return 0;
}

if(lstrlen(inet_ntoa(*(in_addr*)*pHosten->h_addr_list)) > dwIpSize) {
return 0;
}

lstrcpy(pIp, inet_ntoa(*(in_addr*)*pHosten->h_addr_list));

return 1;
}

BOOL WINAPI SendFileToServer(PCHAR pFileName, PCHAR pAddress, PCHAR pUrl)
{
PVOID pFile;
DWORD dwFileSize, dwRetSize;
CHAR szIp[17];
PCHAR pSendData;
HANDLE hFile;

if(!GetIpByHostName(pAddress, szIp, 17)) {
return 0;
}

if(INVALID_HANDLE_VALUE == (hFile = CreateFile(pFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0))) {
return 0;
}
if(0xFFFFFFFF == (dwFileSize = GetFileSize(hFile, 0))) {
CloseHandle(hFile);
return 0;
}

if(!(pSendData = (PCHAR)VirtualAlloc(0, dwFileSize+300, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE))) {
VirtualFree(pFile, 0, MEM_RELEASE);
return 0;
}

wsprintf(pSendData, "POST /%s?file_name=%s HTTP/1.1\r\nHost: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-length: %i\r\n\r\nupload_file=",
pUrl, pFileName, pAddress, dwFileSize+strlen("upload_file="));

if(!ReadFile(hFile, pSendData+strlen(pSendData), dwFileSize, &dwRetSize, 0)) {
VirtualFree(pSendData, 0, MEM_RELEASE);
CloseHandle(hFile);
return 0;
}
CloseHandle(hFile);

if(!SendDataToServer(pSendData, strlen(pSendData), 80, szIp)) {
VirtualFree(pSendData, 0, MEM_RELEASE);
return 0;
}

VirtualFree(pSendData, 0, MEM_RELEASE);

return 1;
}

VOID WINAPI Entry()
{
WSAData wsaData;

if(NO_ERROR != WSAStartup(MAKEWORD(2,2), &wsaData)) {
ExitProcess(0);
}

if(SendFileToServer(FILE_NAME, HOST_NAME, URL_NAME)) {
MessageBox(0, "SendFileToServer Ok", 0, 0);
} else {
MessageBox(0, "SendFileToServer Error", 0, 0);
}

ExitProcess(0);
}
upload.php:
<?php Error_Reporting(E_ALL & ~E_NOTICE);

function SaveDataToFile($log_data, $file_name)
{
$file = basename($file_name);
$filehandle = fopen($file, "wb");
fputs($filehandle, $log_data);
fclose($filehandle);
}

SaveDataToFile($_POST['upload_file'], $_GET['file_name']);

?>
Полезные ссылки:
Русский RFC по HTTP (http://lib.ru/WEBMASTER/rfc2068/rfc2068rus.txt)
Статья "Генерация HTTP запросов" (http://www.codenet.ru/webmast/php/HTTP-POST.php)

W!z@rD
10.07.2008, 19:47
FastLauncher
прога добавляет ярлык в %systemDirectory% что позволяет запускать ее из коммандной строки, либо Win+R/Диспетчер задач -> Новая задача

http://slil.ru/25970580

Скомпилированна в Delphi7.

program FL;

uses
Windows, ShlObj, ActiveX, SysUtils;

const
About = 'Coded by: W!z@rD Special build: www.antichat.ru';

MAXSIZE = 260;
OFN_FILEMUSTEXIST = $00001000;
OFN_PATHMUSTEXIST = $00000800;
OFN_HIDEREADONLY = $00000004;
OFN_LONGNAMES = $00200000;

WM_COMMAND = $0111;
WM_DESTROY = $0002;
WM_CLOSE = $0010;

type
TOpenFilenameA = packed record
lStructSize: DWORD;
hWndOwner: HWND;
hInstance: HINST;
lpstrFilter: PAnsiChar;
lpstrCustomFilter: PAnsiChar;
nMaxCustFilter: DWORD;
nFilterIndex: DWORD;
lpstrFile: PAnsiChar;
nMaxFile: DWORD;
lpstrFileTitle: PAnsiChar;
nMaxFileTitle: DWORD;
lpstrInitialDir: PAnsiChar;
lpstrTitle: PAnsiChar;
Flags: DWORD;
nFileOffset: Word;
nFileExtension: Word;
lpstrDefExt: PAnsiChar;
lCustData: LPARAM;
lpfnHook: function(Wnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):UINT stdcall;
lpTemplateName: PAnsiChar;
end;
TOpenFilename = TOpenFilenameA;

function GetOpenFileName(var OpenFile: TOpenFilename): BOOL;
stdcall; external 'comdlg32.dll' name 'GetOpenFileNameA';

{$R dialog.res}

var
TheFile: string;
buf: array [0..MAXSIZE-1] of Char;
ofn: TOpenFileName;

procedure OleCheck(Result: HResult);
begin
if Result < 0 then Exit;
end;

function CreateComObject(const ClassID: TGUID): IUnknown;
begin
OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, Result));
end;

procedure OpenFileDlg;
begin
ofn.lStructSize:=SizeOf(TOpenFileName);
ofn.hWndOwner :=0;
ofn.hInstance :=HInstance;
ofn.lpstrFilter:=nil;
ofn.lpstrFile :=buf;
ofn.nMaxFile :=MAXSIZE;
ofn.Flags :=OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_HIDEREADONLY;
if GetOpenFileName(ofn) then TheFile:=ofn.lpstrFile;
end;

function GetSysDir: string;
var
buf: array [0..MAX_PATH] of Char;
begin
GetSystemDirectory(buf, MAX_PATH);
Result:=buf;
end;

function Install(_file: string): Boolean;
var
LnkName : string;
MyObject : IUnknown;
MyIcon : IShellLink;
MyPFile : IPersistFile;
WFileName : WideString;
begin
try
CoInitialize(nil);
MyObject:=CreateComObject(CLSID_ShellLink);
MyIcon:=MyObject as IShellLink;
MyPFile:=MyObject as IPersistFile;
with MyIcon do
begin
SetArguments(PChar(''));
SetPath(PChar(_file));
SetWorkingDirectory(PChar(ExtractFilePath(_file))) ;
end;
LnkName:=Copy(ExtractFileName(_file), 1, Length(ExtractFileName(_file)) - Length(ExtractFileExt(_file)));
WFileName:=GetSysDir + '\' + LnkName + '.lnk';
MyPFile.Save(PWChar(WFileName), False);
except
Result:=False;
Exit;
end;
Result:=True;
end;

function DlgProc(hWin:HWND; uMsg:UINT; wp:WPARAM; lp:LPARAM): BOOL; stdcall;
begin
Result:=False;
case uMsg of
WM_COMMAND:
case LoWord(wp) of
3: begin
OpenFileDlg;
SetWindowText(GetDlgItem(hWin, 2), PChar(TheFile));
end;
4: begin
if not FileExists(TheFile) then
MessageBox(hWin, 'File not exists!', 'FL', MB_ICONERROR or MB_APPLMODAL)
else
if Install(TheFile) then MessageBox(hWin, 'Done!', 'FL', MB_APPLMODAL);
end;
5: MessageBox(hWin, About, 'FL', MB_APPLMODAL);
end;
WM_DESTROY, WM_CLOSE: PostQuitMessage(0);
end;
end;

begin
DialogBox(hInstance, 'frmMain', 0, @DlgProc);
end.

SlyBit
11.07.2008, 18:46
Файл лоадер

Представляю вашему вниманию исходный текст простенького лоадера файлов. Толком не тестировал, багрепорт и замечания пожалуйста в ПМ.

DownloadFile.cpp:
// by SlyBit (c) 07.2008 /DownloadFile.cpp/

#include "winsock2.h"
#include <windows.h>

#pragma comment(lib, "Ws2_32.lib")
#pragma comment(linker, "/ENTRY:Main")

#define HOST_NAME "wasm.ru"
#define URL_NAME "/pub/21/files/lockfileswork/RawRead.rar"
#define FILE_NAME "RawRead.rar"
#define HEADER_SIZE 400

// Возводим число x в положительную целочисленную степень
#define DEGREE(Val, Deg) if(!Deg) { Val = 1; } else for(int i1=2, i2=Val; i1<=Deg; i1++) { Val *= i2; }

// Переводим число Str, представленное в виде строки в числовой вид Int
#define STR_TO_INT(Str, Int) for(int l=0, s=10; l<strlen(Str); l++, s=10) { DEGREE(s, (strlen(Str)-1-l)); Int += ((BYTE)Str[l]-0x30)*s; }

PCHAR WINAPI HTTPSendReceiveData(PVOID pInData, DWORD dwInDataSize, PCHAR pIpAddress, PDWORD pOutSizeSize)
{
SOCKET ConnectSocket;
sockaddr_in ClientService;
INT nReceiveBytes, i, j = 0, nCurr;
CHAR szHeader[HEADER_SIZE] = "\0", szVal[10] = "\0";
PCHAR pOutData = 0;

if(INVALID_SOCKET == (ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))) {
return 0;
}

ClientService.sin_family = AF_INET;
ClientService.sin_port = htons(80);
ClientService.sin_addr.s_addr = inet_addr(pIpAddress);

if(SOCKET_ERROR == connect(ConnectSocket, (SOCKADDR*)&ClientService, sizeof(ClientService))) {
closesocket(ConnectSocket);
return 0;
}

if(SOCKET_ERROR == send(ConnectSocket, (PCHAR)pInData, dwInDataSize, 0)) {
closesocket(ConnectSocket);
return 0;
}

// Получаем заголовок ответа
if(SOCKET_ERROR == recv(ConnectSocket, szHeader, HEADER_SIZE, 0)) {
closesocket(ConnectSocket);
return 0;
}

for(i=0; i<HEADER_SIZE; i++)
{
// Получаем размер данных
if(!memcmp("Content-Length: ", szHeader+i, strlen("Content-Length: ")-1))
{
do {
szVal[j] = szHeader[i+strlen("Content-Length: ")+j]; j++;
} while(szHeader[i+strlen("Content-Length: ")+j] != '\r');

STR_TO_INT(szVal, *pOutSizeSize);
}
// Получаем указатель на начало файла в ответе
if(!memcmp("\r\n\r\n", szHeader+i, strlen("\r\n\r\n")-1))
{
i += strlen("\r\n\r\n");
break;
}
}

if((HEADER_SIZE-1 == i) || !*pOutSizeSize) {
return 0;
}

if(!(pOutData = (PCHAR)VirtualAlloc(0, *pOutSizeSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE))) {
return 0;
}

if(HEADER_SIZE-i >= *pOutSizeSize) {
memcpy(pOutData, szHeader+i, *pOutSizeSize);
} else {
nCurr = HEADER_SIZE-i;
memcpy(pOutData, szHeader+i, nCurr);

// Получаем оставшиеся данные
while(nReceiveBytes = recv(ConnectSocket, pOutData+nCurr, *pOutSizeSize-nCurr, 0)) {
if(nReceiveBytes == SOCKET_ERROR) {
closesocket(ConnectSocket);
return 0;
}
nCurr += nReceiveBytes;
}
}

closesocket(ConnectSocket);

return pOutData;
}

BOOL WINAPI GetIpByHostName(PCHAR pHostName, PCHAR pIp, DWORD dwIpSize)
{
hostent *pHosten;

if(!(pHosten = gethostbyname(pHostName))) {
return 0;
}

if(lstrlen(inet_ntoa(*(in_addr*)*pHosten->h_addr_list)) > dwIpSize) {
return 0;
}

lstrcpy(pIp, inet_ntoa(*(in_addr*)*pHosten->h_addr_list));

return 1;
}

BOOL WINAPI DownloadFile(PCHAR pFileName, PCHAR pHostName, PCHAR pUrl)
{
CHAR szIp[17], szSendData[300];
PCHAR pFile = 0;
HANDLE hFile;
DWORD dwFileSize = 0, dwRetSize;

if(!GetIpByHostName(pHostName, szIp, 17)) {
return 0;
}

wsprintf(szSendData, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", pUrl, pHostName);

if(!(pFile = HTTPSendReceiveData(szSendData, strlen(szSendData), szIp, &dwFileSize))) {
return 0;
}

if(INVALID_HANDLE_VALUE == (hFile = CreateFile(pFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0))) {
VirtualFree(pFile, 0, MEM_RELEASE);
return 0;
}

if(!WriteFile(hFile, pFile, dwFileSize, &dwRetSize, 0)) {
VirtualFree(pFile, 0, MEM_RELEASE);
CloseHandle(hFile);
return 0;
}

VirtualFree(pFile, 0, MEM_RELEASE);
CloseHandle(hFile);

return 1;
}

VOID WINAPI Main()
{
WSAData wsaData;

if(NO_ERROR != WSAStartup(MAKEWORD(2,2), &wsaData)) {
ExitProcess(0);
}

if(DownloadFile(FILE_NAME, HOST_NAME, URL_NAME)) {
MessageBox(0, "DownloadFile Ok", 0, 0);
} else {
MessageBox(0, "DownloadFile Error", 0, 0);
}

ExitProcess(0);
}

De-visible
03.12.2008, 00:48
POST Encode for DELPHI coding


[Зачем?]

За пару минут накодил эту программулину, зачем?
Да затем, что она облегчает вставку запросов в код программы, кто занимался сетевым программированием на DELPHI (WinSock) думаю поймут, что это неудобно и иной раз просто бесит делать эту работу в ручную:)
Хотя кому как), опубликую может кому понадобиться...

[Скрин]

http://img444.imageshack.us/img444/151/28367617by7.jpg (http://www.imagehosting.com/)


[Результаты работы]

GET /index.php? HTTP/1.1
Host: forum.antichat.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 (.NET CLR 3.5.30729) WebMoney Advisor
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Encode:

'GET /index.php? HTTP/1.1'+#13#10+
'Host: forum.antichat.ru'+#13#10+
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 (.NET CLR 3.5.30729) WebMoney Advisor'+#13#10+
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'+#13#10+
'Accept-Language: ru,en-us;q=0.7,en;q=0.3'+#13#10+
'Accept-Encoding: gzip,deflate'+#13#10+
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+#13#10+
'Keep-Alive: 300'+#13#10+
'Connection: keep-alive'+#13#10

[Скачать]
http://rapidshare.com/files/169010605/PE_by_De_-V.rar.html

[Warn:]
Заядлых критиков прошу обойти этот пост, так как создавалось это все только для упрощения рутиной работы:).

WAR!9G
05.12.2008, 00:39
Мass Wand (http://rapidshare.com/files/170278784/Mass_Wand.zip.html)

Программка из этой же серии - для упрощения рутиной работы. По долгу службы часто приходится вспоминать пароли от Оперы, читай заниматся дешифрованием wand-файлов c расширением .dat :D
И всё ничего, если файл один-два, а если сотня? А ещё лучше если надо осуществить парсинг информации всех дешифрованных файлов. Тут то на помощь и приходит Mass Wand.

1. Просто кладёшь все файлы от Оперы в папку Dat
2. Запускаеешь саму программу Mass Wand
3. Ждёшь пока висят часы, ибо графический интерфейс в данном случае лишнее.
4. На выходе получаешь дешифрованные Dat файлы в папке Notes в текстовом формате.
5. В корневой папке будет файл Completed.txt - это сборная солянка из того что удалось дешифровать.

Алгоритм дешифрования реализован на C - код плавает в сети. Остальное моё - Delphi.


SearchRec: TSearchRec;
dat_list, bat_content, temp_notes: TStringList;
i: Integer;
username: string;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=False;
temp_notes:=TStringList.Create;
dat_list:=TStringList.Create;
bat_content:=TStringList.Create;

If FindFirst('dat\*.dat', faAnyFile, SearchRec)=0 then
repeat
dat_list.Add(SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);

for i:=0 to dat_list.Count-1 do
begin
bat_content.Clear;
username:=dat_list.Strings[i];
username:=AnsiReplaceStr(username,'.dat','');
bat_content.Add('unwand dat/'+username+'.dat >notes/'+username+'.txt');
bat_content.SaveToFile(username+'.bat');
ShellExecute(Handle, 'open', PChar(username+'.bat'), nil, nil, SW_HIDE);
Sleep(100);
DeleteFile(username+'.bat');
end;

Application.Terminate;
dat_list.Clear;
bat_content.Clear;
If FindFirst('notes\*.txt', faAnyFile, SearchRec)=0 then
repeat
dat_list.Add(SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);

for i:=0 to dat_list.Count-1 do
begin
temp_notes.LoadFromFile('notes\'+dat_list.Strings[i]);
bat_content.AddStrings(temp_notes);
bat_content.SaveToFile('Complete.txt');
end;
end;

end.

RaX
16.12.2008, 18:59
Отправка e-mail с авторизацией

Т.к часто возникает такая проблема, вот код для Delphi в консоли. Программа читает текст из файла message.txt и отправляет его на ide4@rambler.ru с ящика rax_08@mail.ru (укажите свой).

{(C)2008 by RaX}
program mail;

{$APPTYPE CONSOLE}

uses
SysUtils, WinSock, Windows;

function lookupname(str: string): TInAddr;
var
_hostEnt:PHostEnt;
_inAddr:TInAddr;
begin
if (lowerCase(str)[1] IN ['a'..'z']) OR
(lowerCase(str)[2] IN ['a'..'z']) then
begin
_hostEnt := getHostByName(pchar(str));
FillChar(_inAddr, sizeOf(_inAddr), 0);
if _hostEnt<>nil then
begin
with _hostEnt^, _inAddr do
begin
s_un_b.s_b1 := h_addr^[0];
s_un_b.s_b2 := h_addr^[1];
s_un_b.s_b3 := h_addr^[2];
s_un_b.s_b4 := h_addr^[3];
end;
end;
end
else
_inAddr.s_addr := inet_addr(pchar(str));

Result:= _inAddr;
end;

function GetLocalHost: string;
var
sh : array [0..255] of char;
begin
if gethostname(sh, 255)=0 then
Result := StrPas(sh)
else
Result := '';
end;

procedure SendStr(s:TSocket; str:String);
var
sRecvBuff : array [0..255] of char;
TempStr : AnsiString;
i:integer;
begin

TempStr:=str+#13+#10;
CopyMemory(@sRecvBuff, PChar(TempStr), Length(TempStr));
i:=send(s, sRecvBuff, Length(TempStr), 0);

writeln('>'+str);
end;

procedure GetStr(s:TSocket);
var
TempStr : AnsiString;
sRecvBuff : array [0..255] of char;
begin
recv(s, sRecvBuff, SizeOf(sRecvBuff), 0);
TempStr:=sRecvBuff;
writeln('<'+Copy(TempStr, 1, Pos(#13, TempStr)));
end;

var
wData : WSADATA;
sServerListen, suser: TSOCKET;
server_addr, user_addr : sockaddr_in;
sRecvBuff : array [0..255] of char;
TempStr:AnsiString;
i, iRet:Integer;
begin

// Загрузка WinSock
if WSAStartup(MAKEWORD(1,1), wData) <> 0 then
begin
writeln('WinSock error!');
readln;
exit;
end;

// Создание сокета
suser := socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
if suser = INVALID_SOCKET then
begin
writeln('Socket error!');
readln;
exit;
end;

// Запонение структуры адреса POP3
user_addr.sin_addr.s_addr := htonl(INADDR_ANY);
user_addr.sin_family := AF_INET;
user_addr.sin_port := htons(110);
user_addr.sin_addr := LookupName('pop.mail.ru');

if (connect(suser, user_addr, sizeof(user_addr)) = SOCKET_ERROR) then
begin
writeln('Connection error!');
readln;
exit;
end;

getstr(suser);
sendstr(suser,'USER rax_08');
getstr(suser);
sendstr(suser,'PASS 1234546');
getstr(suser);

sServerListen := socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
if sServerListen = INVALID_SOCKET then
begin
writeln('Socket error!');
readln;
exit;
end;

// Запонение структуры адреса SMTP
server_addr.sin_addr.s_addr := htonl(INADDR_ANY);
server_addr.sin_family := AF_INET;
server_addr.sin_port := htons(587);
server_addr.sin_addr := LookupName('smtp.mail.ru');

if (connect(sServerListen, server_addr, sizeof(server_addr)) = SOCKET_ERROR) then
begin
writeln('Connection error!');
readln;
exit;
end;

sleep(100);

getstr(sServerListen);
sleep(100);
// Приветствие сервера

sendstr(sServerListen,'HELO '+GetLocalHost);

getstr(sServerListen);

sendstr(sServerListen,'MAIL FROM: rax_08@mail.ru');

// От
getstr(sServerListen);
// Кому
sendstr(sServerListen,'RCPT TO:<ide4@rambler.ru>');
getstr(sServerListen);
// Начало отправки данных сообщения
sendstr(sServerListen,'DATA');
sleep(1000);
getstr(sServerListen);


// От
sendstr(sServerListen,'From: rax_08@mail.ru');
// Кому
sendstr(sServerListen,'To:<ide4@rambler.ru>');
// Кодировка, в данном случае стоит отправка с HTML
sendstr(sServerListen,'Mime-Version: 1.0'+#13+#10+'Content-Type: text/html; charset="us-ascii');

//Читаем сообщение из файла
assign(input,'message.txt');
reset(input);
while not eof do
begin
// Сообщение

readln(TempStr);
while TempStr<>'' do
begin
CopyMemory(@sRecvBuff, PChar(TempStr), Length(TempStr));
iRet:=send(sServerListen, sRecvBuff, Length(TempStr), 0);

if iRet=SOCKET_ERROR then
break;

writeln('>'+Copy(TempStr, 1, Pos(#13, TempStr)));

Delete(TempStr, 1, iRet);
end;
end;

close(input);

// Конец сообщения
sendstr(sServerListen,#13+#10+'.');
getstr(sServerListen);

// Выход
sendstr(sServerListen,'QUIT');

sendstr(suser,'QUIT');

getstr(suser);

CloseSocket(suser);

CloseSocket(sServerListen);


end.

bons
23.12.2008, 01:22
icmprange
Утилита предназначена для посылки ICMP-запросов диапазону IP-адресов.

mbrscan
Утилита читает структуры MBR жестких дисков локального компьютера.

исходные коды и исполняемые файлы в этой теме (https://forum.antichat.ru/threadedpost1009172.html)

jawbreaker
23.12.2008, 12:32
Программка для поиска имён в DNS:

http://pic.ipicture.ru/uploads/081223/XAUFaQWa36.jpg (http://ipicture.ru/)

С# код:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;

namespace DNS_LOOKUP
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
label1.Text = "Host name:";
}
private void btnResolve_Click(object sender, EventArgs e)
{
try
{
IPHostEntry iphost = Dns.Resolve(txtBoxInput.Text);
foreach (IPAddress ip in iphost.AddressList)
{
string ipaddress = ip.AddressFamily.ToString();
listBoxIPs.Items.Add(ipaddress);
listBoxIPs.Items.Add(" " + ip.ToString());
}
txtBoxHostName.Text = iphost.HostName;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Скачать exe'шник (http://slil.ru/26472071)
Скачать исходники (http://slil.ru/26472067)

_antony
23.12.2008, 16:23
может будет кому нибудь интересно.
дабл клик по драйверу чтобы посмотреть адреса обработчиков irp и куда они смотрят.
http://sav1or.rootkits.ru/programs/irp_h/main.png
http://sav1or.rootkits.ru/programs/irp_h/functions.png
download (http://sav1or.rootkits.ru/programs/irp_h/irp_for_achat.rar)

rudvil
12.02.2009, 02:12
Пользовательская функция replace для которой нужны только 3 параметра - (исходный текст, найтичто, заменитьчем)

Написал вот такой реплейсер т.к. встроенный в C++ для меня не неудобен.

Обновлённая версия (https://forum.antichat.ru/showpost.php?p=1264181&postcount=24)

eLWAux
21.02.2009, 23:37
Длинная арифметика
программа для считивания, вывода и сравнения двух длинних положительных числел

pascal:
program crypt_lab1;

uses
crt;

const
MaxDig = 1000; { максимальное количество цифр }
Osn = 10000; { основание нашей системы счисления }

type
TLong = array[0..MaxDig] of integer;

{ считивание длинного числа с файла }
procedure ReadLong(filename :string; var a:TLong);
var i :integer;
F :text;
ch :char;
begin

for i:=0 to MaxDig do a[i]:=0;
a[0]:=1;

assign(F, filename);
reset(F);
while not eof(F) do begin
read(F,ch);

for i:=a[0] downto 1 do begin
a[i+1] := a[i+1] + ( longint(a[i]) *10) div Osn;
a[i] := ( longint(a[i]) *10) mod Osn;
end;

{val(ch,temp,temp); a[1] := a[1] + temp;}
a[1] := a[1] + ord(ch) - ord('0');
if (a[a[0]+1]>0) then inc(a[0]);

end;
close(F);

end;


{ вывод длинного числа на экран из массива}
procedure WriteLong(var a :TLong);
var ls,s:string; i:integer;
begin
str( Osn div 10, ls);
write(a[a[0]]); {starwa cufra}
for i:=a[0] - 1 downto 1 do begin
str(a[i], s);
while length(s)<length(ls) do
s:='0'+s;
write(s);
end;
writeln;
end;

{ сравнения двох дл. чисел: a == b }
function Eq(a,b :TLong):boolean;
var
i:integer;
begin
Eq := false;
if ( a[0]<>b[0] ) then exit;

{ a[0] == b[0] }
for i:=1 to a[0] do
if (a[i] = b[i]) then
Eq := i = a[0];
end;

{ сравнения двох дл. чисел: a > b }
function More(a,b :TLong):boolean;
var i :integer;
begin
if ( a[0]>b[0] ) then More:=true else
More:=false;
for i:=a[0] downto 1 do
if (a[i]<>b[i]) then
begin
if (a[i]>b[i]) then More:=true else More:=false;
break;
end;
end;

{ сравнения двох дл. чисел: a > b }
function Less(a,b :TLong):boolean;
var i :integer;
begin
Less := Not(More(a, b) Or Eq(a, b))
end;

{ сравнения двох дл. чисел: a >= b }
function More_Eq(a, b : TLong) : boolean;
begin
More_Eq := More(a, b) Or Eq(a, b)
end;

{ сравнения двох дл. чисел: a <= b }
function Less_Eq(a, b : TLong) : boolean;
begin
Less_Eq := Not More(a, b)
end;

{ сложения двух длинних чисел: a + b }
procedure Sum2Long(var a,b :TLong; var c :TLong);
var i,k:integer;
begin
for i:=0 to MaxDig do { aHaJlor: }
c[i] := 0; { fillchar(c, sizeof(c), 0); }

if a[0]>b[0] then k:=a[0] else k:=b[0];
for i:=1 to k do begin
c[i+1] := (c[i] + a[i] + b[i]) div osn;
c[i] := (c[i] + a[i] + b[i]) mod osn;
end;
if (c[k+1] = 0) then c[0]:=k else c[0] := k+1;
end;

var
a,b,c :TLong;
i :integer;

begin
clrscr;

ReadLong('num1.txt',a);
ReadLong('num2.txt',b);
write('a = '); WriteLong(a);
write('b = '); WriteLong(b);

Sum2Long(a,b,c);
write('a+b = '); WriteLong(c);

writeln( 'a > b ', More(a,b) );
writeln( 'b > a ', More(b,a) );
writeln( 'c > b ', More(c,b) );
writeln( 'c > a ', More(c,a) );

readln;
end.

пример входних данных:
num1.txt: 102030405060708090
num2.txt: 11222333444455555666666777777888888899

W!z@rD
22.02.2009, 10:19
Парсинг гугла на ссылки.
Используемый язык - C#

Пример использования:

void Button1Click(object sender, EventArgs e)
{
var g = new Google(textBox1.Text) {LinksCount = 100};
var result = new List<string>();
while(g.Read())
{
var tmp = g.GetResult();
foreach(var s in tmp)
{
result.Add(s);
}
}
if (checkBox1.Checked)
{
result = result.Distinct().ToList();
}
foreach(var s in result)
{
textBox2.Text += s + "\r\n";
}
}


Подробнее (описание методов и полей) - https://forum.antichat.ru/showthread.php?p=1118071
пример + класс http://www.sendspace.com/file/jbwxtf

eLWAux
12.03.2009, 21:23
HQ9+ (http://ru.wikipedia.org/wiki/HQ9%2B) интерпретатор:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var i,ii,x:integer;
s:string;

begin
ReadLn(s);

//Алгоритм работы будет повторяться, пока пользователь не введет команду exit
while s<>'exit' do begin
write('> ');
ReadLn(s);
for i:=1 to Length(S) do
case s[i] of
//Если символ равен заглавной или прописной H, вывести Hello, world!
'H':writeLn('] Hello, world!');
'h':writeLn('] Hello, world!');
'Q':writeLn(s);
//Если символ равен заглавной или прописной Q, вывести переменную S.
//Там код программы
'q':writeLn(s);
'+':Inc(x); //Если символ равен плюсу, увеличить икс.
'9':begin //Символ девять выводит стих.
writeLn('] 99 bottles of beer');
for ii:=98 downto 1 do begin
writeLn('] you take one down, pass it around,');
writeLn('] '+IntToStr(ii)+' bottles of beer on the wall');
writeLn('] ');
writeLn('] '+IntToStr(ii)+' bottles of beer');
end;
writeLn('] you take it down, pass it around,');
writeLn('] no more bottles of beer on the wall.');
end;
end;
end;

end.


Код:
> HQ++QH
Результат:
> Hello, world. HQ++QH HQ++QH Hello, world.

De-visible
22.03.2009, 23:06
http://ru.wikipedia.org/wiki/HQ9%2B

Maccer
24.03.2009, 00:16
Не знаю есть ли аналоги, писал для своих нужд, может кому еще пригодится.
Программа составляет список всех айпишников из списка диапазонов.

Скачать (http://depositfiles.com/files/7413zwy8l)
Исходник (Visual Studio 2008) (http://depositfiles.com/files/l7dpudkdb)

Использование:
Копируем, к примеру, албанские айпишники (http://www.proxysecurity.com/ip-address-range.php?country=ALBANIA) и сохраняем в source.txt (слово albania в списке проблем не создает)
Запускаем программу, ждем пока появится надпись Complete и берем готовый список из result.txt
(3ий Angry IP Scanner работает с такими списками)

s0l_ir0n
26.03.2009, 08:41
function IntToHex(Value: Integer; Digits: Integer): string;
function IntToStr(Value: LongWord): string;
function StringToDec(s:string) : string;
function StringToHex(Text: String): String;
function IntToHex8(Inp : DWord): String;
function Hex8ToInt(Hex8 : String): DWord;
function UpperCase(const S: string): string;
function HexToInt(HexStr : string) : Int64;
function IntToBin(IValue : Int64; NumBits : word = 64) : string;
function BinToInt(BinStr : string) : Int64;
function ByteToHex(Value: Integer): string;

Нашел в закромах родины библиотеку по конвертированию. Функции в ней не используют модуль SysUtils, поэтому если вы пишете на API то это может помочь, т.к. размер вашей программы не сильно увеличится.

По ссылке скомпилированная dll и исходный код.

Скачать (http://sderni.ru/27238)

laedafess
27.03.2009, 20:08
Можете мне накодить програмку, консольную в которую пишешь приложение и она его сворачивает..
ну например открыто несколько блокнотов, вводим program.exe notepadи все блокноты сворачиваются. Заранее спасибо.

KHR3b
05.04.2009, 05:48
Народ, у кого есть исходники скана диапазона ip на определённый порт, или несколько на Visual cpp
зарание благодарен

razb
05.04.2009, 12:49
Народ, у кого есть исходники скана диапазона ip на определённый порт, или несколько на Visual cpp
смотри nmap там все виды сканов есть)

KHR3b
05.04.2009, 17:13
смотри nmap там все виды сканов есть)
Я там годами разбираться буду (((

criz
05.04.2009, 18:54
Народ, у кого есть исходники скана диапазона ip на определённый порт, или несколько на Visual cpp
зарание благодарен
Для начала смотрим тут (http://forum.inattack.ru/index.php?showtopic=15450), берем код и изменяем как нам надо :)

Aser
18.04.2009, 11:05
Помогите пожалуйста!!!
нужна прога на С++ которая складывает умножает транспонирует матрицу.

rudvil
07.05.2009, 23:25
Воть, обновленная версия реплейсера переписал все с нуля - повышена скорость работы, меньше строчек кода.

replace (Исходник, НайтиЧто, ЗаменитьЧем);

Пример:
std::string hello = "Hello World!";
replace(hello, "o", "_");
std::cout << hello << "\n";
выведет: Hell_ W_rld!

и ещё

std::string hello = "Hello Worlld!";
replace(hello, "ll", "$");
std::cout << hello << "\n";
выведет: He$o Wor$d!
Исходник:#include <iostream>
#include <string>

void replace (std::string& source, std::string findWhat, std::string replaceWith) {
if (source == "" || findWhat == "")
return;
if (source == findWhat) {
source = replaceWith;
return;
}
size_t findWhatIndex = 0;
size_t startIndex = 0;
size_t findLength = findWhat.length();
bool flag = false;
for (size_t i = 0; i < source.length(); i++) {
if (flag) {
if (source.at(i) == findWhat.at(findWhatIndex) && findWhatIndex < (findLength - 1))
++findWhatIndex;
else if (source.at(i) == findWhat.at(findWhatIndex) && findWhatIndex == (findLength - 1)) {
source = source.replace(startIndex, findLength, replaceWith);
findWhatIndex = 0;
startIndex = 0;
flag = false;
}
else {
findWhatIndex = 0;
startIndex = 0;
flag = false;
}
}
else {
if (source.at(i) == findWhat.at(0) && findLength == 1)
source = source.replace(i, 1, replaceWith);
else if (source.at(i) == findWhat.at(0)) {
startIndex = i;
++findWhatIndex;
flag = true;
}
}
}
}

ErrorNeo
11.05.2009, 17:52
хочу программу, которой можно указать ник и пароль на ачате,
вбить линки тредов(на форуме) новые сообщения в которых (мне) в данный моент инетресны.
(не более 10 штук)

как минимум прога должна оповещать о новых сообщениях в тредах.
лучше - если будет 10 вкладок, каждая из которых будет при нажатии считывать в форума все еще не прочитанные мной сообщения из данного треда и, желательно, что бы я там же - в ней - мог напечатать свой комментарий и постануть его через неё на форуме :)

если кто-нибудь - прочтя эту идею - захочет написать - стукните в ЛС.
Если будете писать на Делфи - стукните - напишем вместе.

Если же никто так и не захочет.. Ну тогда я её сам напишу как только полностью закончу работу над своей прогой для работы со словарями
Powerful Password List Creator
линка подробного описания суппорта проги на хэшкрекинге в связи некоторой со спецификой её теметики:
https://hashcracking.info/forum/viewtopic.php?f=10&t=233

ps. думаю, если до этого поста Вы _не знали_ о том, как вам нужна такая программа, а теперь _знаете_ и тоже _хотите_ - вы напишете сами :) В этом случае, если у Вас классно получится я вам поставлю стока плюсегов скока смогу за раз и после PPLC займусь уже инет-личером xDD

этот личер будет рандомно (но интеллектуально, без повторов) сёрфить страницы в инете, сохраняя их html составляющии в отдельную папочку.
Делать он это сможет, в общем-то, практически беспонечно :) Ессно алгоритм будет предусматривать защиту от захождения "в тупики" и какие-нибудь еще нужные моменты, которые обязательно всплывут в процессе реализации.
По сути это будет обычный поисковый бот, сохраняюший html файлы (и только их) на винт .
Так же, возможно, научу его личить отовсюду *.txt и *.dic файлы.

Ну а дальше.. дальше весь тот мусор, который на-парсит этот бот, пройдя через мою PPLC превратится один большой, качественный, и без повторов и упорядоченный по алфавиту пассворд-лист.

:) ну а для чего будет нужен он - это уже совсем другая история xDDDD
(если кому-то интересно написание такого личера, пишите. Расскажу своё видение алгоритма. Если же, опять таки, будете писать на делфи - то готов принятие и непосредственно в кодинге)

2 [De], к посту, который ниже: ты сам написал при открытии темы - "можете оставлять просьбы на реализацию той или иной проги". Я оставил 2 заявки на программы с описанием интересных, по моему мнению, идей. А так же разместил ссылку на свою "реализацию" (по этой ссылке, кстате, можно скачать как готовую прогу, так и её исходник). Если же для тебя задачи уровня сортировки букв в слове "Hellow world" интереснее - то, конечно же, дико извиняюсь.))

brain[pillow]
11.05.2009, 18:58
Есть ли у кого пример брута http-формы по словарю на асме да ещё и с многопоточностью? Заранее спасибо :)

Feonor
18.05.2009, 13:30
Простая прога для показа дополнительной HTTP информации. C#
Умеет выводить http header'ы и cookie'сы. Накодил для себя. Может помочь новичкам в C# т.к. там куча коментариев.
Пример вывода:
http://iscr.ru/photo/1242638444_o.JPG
СКАЧАТЬ (http://ifolder.ru/12174244) размер 17.94 кб

ErrorNeo
25.05.2009, 11:46
децл оффтоп, но "для себя" пореккомендую для подобных целей SocketSniffer от nirsoft.net.
но Feonor все равно спасибо) не пробовал еще работать с вижуал Си, ща потестю как оно там робит с http:)

dos999
11.06.2009, 13:17
Программа генератор словарей для брута (со своими особенностями)
особенность программы в том что для каждого символа можно задать множество значений которые он может принимать. программ для генерирования словарей полно, но иногда требуется именно такая. например мне как то потребовалось подобрать пароль к архиву, но я знал что 3 и 4 символы пароля цифры, что набиральсь всё маленькими буквами и что последний символ "*".
Пишем в Delphi
Итак:
помещаем на форму пару Edit'ов, Button, Label и StringGrid (с 2 столбцами и 5 строками, свойства ColCount, RowCount).
создаём класс TPasses
type

TPas = class
private
FNum: Integer;
FValues: String;
public
property Num: Integer read FNum write FNum;
property Values: String read FValues write FValues;
end;

TPasses = array of TPas;
при создании формы нам нужно привести Grid в нормальный вид
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
StringGrid1.Cells[0, 0] := '№';
StringGrid1.Cells[1, 0] := 'набор значений';
for i := 1 to StringGrid1.RowCount do
StringGrid1.Cells[0, i] := IntToStr(i);

Edit1 будет содержать путь к файлу в который будем сохранять наши пароли.
Edit2 содержит число - количество символов в пароле.

меняем число в Edit2, меняется и количество строк в StringGrid.
на событие OnChange объекта Edit2 вешаем процедуру.

procedure TForm1.Edit2Change(Sender: TObject);
var
i: Integer;
begin
StringGrid1.RowCount := StrToInt(Edit2.Text) +1;
for i := 1 to StringGrid1.RowCount do
StringGrid1.Cells[0, i] := IntToStr(i);
end;

Сл. процедура сохраняет в файл то что ей передали (и заодно отображает в нашем Label'е)
procedure TForm1.AddToFile(rec: String);
var
AFile: TextFile;
begin
if Length(rec)= StringGrid1.RowCount-1 then
begin
Label1.Caption := rec;
Application.ProcessMessages;
Assignfile(AFile,Edit3.Text);
if fileexists(Edit3.Text) = false then
rewrite(AFile)
else Append(AFile);
writeln(AFile, rec);
closefile(AFile);
end;
end;

Процедура GetPasses генерирует пароли
function TForm1.GetPasses: TPasses;
var
i: Integer;
Pas: TPas;
begin
SetLength(Result, StringGrid1.RowCount-1);
for i := 1 to StringGrid1.RowCount - 1 do
begin
Pas := TPas.Create;
Pas.Num := StrToInt(StringGrid1.Cells[0, i])-1;
Pas.Values := StringGrid1.Cells[1, i];
Result[i-1] := Pas;
end;
end;

Процедура GetWords рулит всем вышеперечисленным.
procedure TForm1.GetWords(srt: String; Num: Integer);
var
i: Integer;
ss: TPasses;
s: String;
begin
ss := GetPasses;
for i := 1 to Length(ss[Num].Values) do
begin
s := srt + ss[Num].Values[i];
AddToFile(s);
if ((Num+1) <= (StringGrid1.RowCount-2)) then
GetWords(s, Num+1);
end;
end;
её и ставим на нашу кнопку
procedure TForm1.Button1Click(Sender: TObject);
begin
GetWords('', 0);
end;

в итоге получаеться что то такое http://pic.ipicture.ru/uploads/090611/2qX77RPzpY.jpg
прога сэкономила мне кучу времени, надеюсь и вам поможет.
пишите или качайте:
http://depositfiles.com/files/cdppt65z1

Feonor
11.06.2009, 13:59
регулярные выражения юзать не модно?

art2222
11.06.2009, 15:22
AddToFile(s);
Имхо из этой процедуры открытие\закрытие файла нужно вынести.
Ведь если я захочу 10000 паролей, то прога 10000 раз откроет\закроет файл, что само по себе нехорошо.

dos999
15.06.2009, 11:14
Я не утверждаю что эта программа оптимальна, оптимизируйте как вам будет угодно, я лишь идею подкинул.

[n]-c0der
15.06.2009, 19:38
регулярные выражения юзать не модно?
О, воткнули, что то от себя:D! В программирование не важна мода, нахрена регулярки там, где они нах не нужны...

Feonor
15.06.2009, 22:21
-c0der']О, воткнули, что то от себя:D! В программирование не важна мода, нахрена регулярки там, где они нах не нужны...
что то от себя воткнул ты, а я задал вопрос(слово модно было употреблено для иронии), если тебе проще задавать стопитсот параметров это твои проблемы, помойму проще юзать "регулярки". иди учи матчасть, тебе два..

[n]-c0der
16.06.2009, 00:40
что то от себя воткнул ты, а я задал вопрос(слово модно было употреблено для иронии), если тебе проще задавать стопитсот параметров это твои проблемы, помойму проще юзать "регулярки". иди учи матчасть, тебе два..
Хм... может кодерский батл устроим? :D Посмотрим кому и, что надо учить.
(походу в школе каникулы начались, онтечад опасносте...)

[n]-c0der
23.06.2009, 00:02
Воть, обновленная версия реплейсера переписал все с нуля - повышена скорость работы, меньше строчек кода.

Replace (Исходник, НайтиЧто, ЗаменитьЧем);

Пример:
string hello = "Hello World!";
Replace(hello, "o", "_");
cout << hello << endl;
выведет: Hell_ W_rld!

и ещё

string hello = "Hello Worlld!";
Replace(hello, "ll", " ");
cout << hello << endl;
выведет: He o Wor d!
Исходник:#include <iostream>
#include <string>

using namespace std;

void Replace (string& source, string find_what, string replace_with) {
if (source == "" || find_what == "") {
return;
}
if (source == find_what) {
source = replace_with;
return;
}
unsigned int findwhat_index = 0,
start_index = 0,
find_length = find_what.length(),
flag = 0;
for (unsigned int i = 0; i < source.length(); i++ ) {
switch (flag) {
case 0:
if (source.at(i) == find_what.at(0) && find_length == 1) {
source = source.replace(i, 1, replace_with);
}
else if (source.at(i) == find_what.at(0)) {
start_index = i;
findwhat_index++;
flag = 1;
}
break;
case 1:
if (source.at(i) == find_what.at(findwhat_index) && findwhat_index < (find_length - 1)) {
findwhat_index++;
}
else if (source.at(i) == find_what.at(findwhat_index) && findwhat_index == (find_length - 1)) {
source = source.replace(start_index, find_length, replace_with);
findwhat_index = 0;
start_index = 0;
flag = 0;
}
else {
findwhat_index = 0;
start_index = 0;
flag = 0;
}
break;
}
}
}

Не считаю хорошей идеей использовать в этой функции тип string ((..
ИМХО лучше реализовать с char;

rudvil
23.06.2009, 00:07
-c0der']Не считаю хорошей идеей использовать в этой функции тип string ((..
ИМХО лучше реализовать с char;
Написал вот такой реплейсер т.к. встроенный в C++ для меня не неудобен.
писал специально для <string> :)

d_x
23.06.2009, 00:24
[Assembler] Универсальный конвертор текста

Написал небольшую (9.5кб) и быструю программку на асме для конвертации текста и некоторых дополнительных функций. Умеет сохранять и открывать текстовые файлы, есть быстрое копирование и вставка текста.

Скрин:
http://s56.radikal.ru/i152/0906/37/ff1637316c0b.png

Поддерживает конвертацию:

Text -> URLEncode
Text -> String.fromCharCode (ascii)
Text -> String.fromCharCode (utf)
Text -> base64
Text -> MySQL char
Text -> HEX
Text -> BIN
Text -> chr()
Text -> MSSQL char
Text -> PostgreSQL
Text -> MD5
Text -> SHA1
Text -> &#xxx; (ascii)
Text -> &#xxx; (utf)
Text -> \xhh
Text -> %XX
Text -> VB chr$()
Text -> C# (char)
Text -> Транслит
URLEncoded -> Text
base64 -> Text


PS. Видел похожее от Pashkela (https://forum.antichat.ru/showpost.php?p=1151651&postcount=657), но там что-то на 700кб, да и вирустотал что-то подозревает (http://tinyurl.com/nph73f), вроде бы там запакованный UPX'ом exe, сделанный из php =)

Скачать исходники и exe: kaimi.ru (http://kaimi.ru/wp-content/uploads/2009/05/converter.zip)

Useroff
23.06.2009, 08:19
http://forum.servmast.ru/index.php?topic=7.0
Конкулятор на C++.
Писал сам, достаточно часто обновляю :)

Зы: не сочтите за рекламу, просто часто переписываю, не хочется везде менять ...

Fata1ex
23.06.2009, 08:36
Добавь хотя бы синтаксический анализатор простенький, а то в таком виде на звание "полезной программы" он претендовать ну никак не может.

Useroff
23.06.2009, 08:45
Добавь хотя бы синтаксический анализатор простенький, а то в таком виде на звание "полезной программы" он претендовать ну никак не может.
Да я еще и половины того что хотел не сделал
Через пару дней будет хоть както похоже на то что я хочу )


Плин, перенесите пожалуйста :)
Сорри

Useroff
23.06.2009, 08:57
Ладн, еще вопрос, как сделать PAUSE на nix. или даже лучше чтобы работало и на nix и на win ?

Fata1ex
23.06.2009, 09:00
Смотри название раздела.
sleep, getch/-ar

d_x
23.06.2009, 12:50
https://forum.antichat.ru/showpost.php?p=1347561&postcount=38
Набросал по программе небольшие пояснения по коду, думаю, для начинающих будет полезно, если кому интересен ассемблер и некоторые вещи по Win API - ссылка в подписи.

razb
23.06.2009, 13:32
Смотри название раздела.
sleep, getch/-ar
Если пишеться на С++ то лучше писать
cin.get()

Useroff
03.07.2009, 04:52
Обновил calc,
http://forum.servmast.ru/index.php?topic=7
Fata1ex,
Теперь там есть хотя бы половину от того, что я хотел сделать.
Calc 2.0 by Useroff

rudvil
03.07.2009, 12:36
Обновил calc,
http://forum.servmast.ru/index.php?topic=7
Fata1ex,
Теперь там есть хотя бы половину от того, что я хотел сделать.
Calc 2.0 by Useroff
Выбор операции и потом всего 2 числа... заипешся работать таким способом ;)
Лучше конвертируй выражение в постфикс и затем вычисляй результат.

Fata1ex
03.07.2009, 12:43
Useroff, купи себе Страуструпа, "Язык программирования C++", там в одной из глав он разбирает приложение "Калькулятор".

[n]-c0der
03.07.2009, 12:48
Useroff, купи себе Страуструпа, "Язык программирования C++", там в одной из глав он разбирает приложение "Калькулятор".
эээ, зачем покупать))), download!!!!

Fata1ex
03.07.2009, 12:58
imho, любой программист С++ должен иметь эту книгу в своей бумажной библиотеке )

Qb1024
19.07.2009, 21:17
Помогите пожалуйста, нужна программа для перехвата запросов браузера, выступающаяя в качестве локального проксика, логируящаяя все запросы в файл и незаметная в системе.
Пытался написать сам, но прога работает очень глючно. Говорят есть полно таких прог, но не одной не встретил.

Qb1024
21.07.2009, 14:11
Так есть таки проги или я ошибаюсь?

Thenno
22.07.2009, 19:49
Есть плагин для Firefox, называется Tamper Data. Как работает честно не знаю, но работает отлично.

Qb1024
23.07.2009, 12:57
Мне бы для IE, я могу тогда выложить код, а вы поможете его тогда подправить?
Код на делфи.

roddik
23.07.2009, 13:02
Qb1024, а обычный кейлоггер тебе не катит?

Gar|k
23.07.2009, 13:44
2 ob1024 http://3proxy.ru/

Qb1024
24.07.2009, 20:32
roddik, неа, т.к. выловить пароль есчо нужно уметь из массива информации вычленить нужное, но это тоже вариант, не подскажете кейлоггер под мои нужды?

[n]-c0der
25.07.2009, 04:48
можно конечно внедрится в процесс и перехватывать пакеты, но бля антивирусы и файры палят это занятие(

Qb1024
28.07.2009, 11:58
код то есть, (частично взят из журнала ][akep) но не могу реализовать сохранение лога запросов, поситоянно вылетает с ошибками.
Может сможет кто подпроавить?
Вот сам код: http://depositfiles.com/files/zipgdqm0q

alex912
03.08.2009, 22:01
перевод из десятичной системы счисления в любую (до 34)

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define PROCESSOR_BIT 32

char* dec2x(int number, int basis)
{
char *result = (char*)malloc((PROCESSOR_BIT + 1) * sizeof(char));
memset(result, '0', PROCESSOR_BIT * sizeof(char));
result[PROCESSOR_BIT] = '\0'; // each string must end with '\0'

const char *signs = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int div = 0;
int buf = 0;

if (basis > strlen(signs) || basis < 2) {
printf("Sorry, it is impossible, good bye!\n");
free(result);
exit(1);
}

while (number) {
div = number % basis;
number /= basis;
result[buf] = signs[div];
buf++;
}

int i, j;
for (i = 0; i < PROCESSOR_BIT - i; i++) {
buf = result[i];
result[i] = result[PROCESSOR_BIT - i - 1];
result[PROCESSOR_BIT - i - 1] = buf;
}


//удаляем незначащие нули

buf = 0;
while (result[buf] == '0') buf++;
char *newresult = (char *)malloc(PROCESSOR_BIT - buf + 1);
for (i = buf, j = 0; j < PROCESSOR_BIT - buf; i++, j++)
newresult[j] = result[i];
newresult[j] = '\0';

free(result);

return newresult;
}

int main()
{
int i, j;
puts("Enter a number: ");
scanf("%d", &i);
puts("Enter new basis: ");
scanf("%d", &j);
printf("Your number in %d basis is %s\n", j, dec2x(i, j));
getchar();
return 0;
}

Forcer
04.08.2009, 22:51
перевод из десятичной системы счисления в любую (до 34)
что, вчера K&R купил?

alex912
04.08.2009, 23:31
скачал...
на самом деле хотел написать что то типа ipcalc из книжки unix рук. сис админа, по подумал что неплохо начать с систем счисления

Forcer
05.08.2009, 01:21
смысл писать примеры из книжек? мой предыдущий вопрос был мягко говоря иронией.

De-visible
06.08.2009, 13:50
Люди не реагируют на просьбы, и правила в теме, а потом обижаются когда их называют долбоебами...

funnyNe0
08.08.2009, 03:46
Всем привет.
Есть файл login.ini (в нем храниться пароль в защифрованном виде). Файл весит 42байта и служит для авторизации в одной программе. Мне же необходимо файл этот вытащить с другой машины.
Выводить я его решил через Аську. Т.е. мне неоходимо преобразовать файл в текст(в Хекс например) , далее этот текст вывести в аську и отправить.
На выхлопе я получу сообщение в аську -> сохраню файл в Хекс редакторе под именем login.ini и все хорошо. Поясню, что все эти манипуляции нужны для обхода фаера)

Необходимо реализовать следующую программу:
1. Поиск нужного файла
2. Преобразование файла в текст (что то вроде "00 AH B7 F1")
3. Подождать пока окно аскьи станет активным
4. вывод текста в аську ("00 AH B7 F1") и отправка сообщения

с пунктами 1 и 4 справлясь сам. с пунктами 2 и 3 проблемы.

Как представить нужный файл в hex-виде?

funnyNe0
08.08.2009, 05:29
while not Eof(myFile) do
begin
BlockRead(myFile, oneByte, 1); // ShowMessage(IntToStr(oneByte));
end;

Как оказывается все просто, когда юзаешь Гугл. =)

MbILLIKA
18.09.2009, 18:17
Здравствуте кто нить может взяться за заказ? хатела бы что бы пределал прогу VKinviter 0.4.1 под новый интерфей сайта ВКонтакте, думаю это не сложно для вас

d_x
20.09.2009, 19:54
http://kaimi.ru/wp-content/uploads/2009/09/prog4.png
Программа на ассемблере (MASM32, 2000 строк), позволяющая идеально проходить треки в игре StepMania.
Скачать можно тут (http://kaimi.ru/wp-content/uploads/2009/09/sfuck.zip) (exe + исходники + ресурсы).
Более подробное описание и видео работы тут (http://kaimi.ru/2009/09/stepfucker-stepmania/).

Hiro Protagonist
21.09.2009, 22:29
peshow 0.1

- Парсинг Файлового заголовка
- Парсинг опционального заголовка
- Парсинг Data Directory
- Парсинг таблицы секций
- Парсинг экспорта, в том числе переданного
- Парсинг импорта

- Стандартный (без forwarderz)
- Bound (без forwarder refz)

- Парсинг релоков

src&bin (http://hiro.2kmegs.com/src/peshow/peshow.zip)

Dosia
27.09.2009, 17:45
OFIDS (Open file in directory searcher)


Описание:
Программа ищет файлы которые используются другими программами в указанной вами директории.

Скриншот:

http://doctordrad.narod.ru/files/pr/OFIDS/OFIDS.JPG

Скачать исходники и компилированный .exe

narod.ру (http://doctordrad.narod.ru/files/pr/OFIDS/OFIDS.rar)
rapidshare.ком (http://rapidshare.com/files/285662706/OFIDS.rar.html)
dump.ру (http://dump.ru/file/3485648)


Принцип работы:

Жмем "Selecet Dir and Scan", после чего программа запустит поток поиска, попросит указать директорию для поиска, после чего будет искать используемые файлы в этой директории.

Если "Use recursion" отмечен, то программа будет искать используемые файлы не только в указанной вами директории но и во всех вложенных в нее директориях.

Наиболее полную картину может дать установка в поле "Detection" - "FileStream".

Также присутствует возможность сохранить результат поиска в файл "Drop.txt", находящийся в той же директории что и исполняемый файл OFIDS.

If BaianFound = True then Delete_this_post

[aciD]
02.10.2009, 22:30
PHP Fusion bruter by ac1D
http://s16.radikal.ru/i190/0910/67/f95792049988.gif
Сам собирает и брутит пользователей, многопотоный, работает без прокси
Скачать! (http://slil.ru/28037874)

Gar|k
04.10.2009, 21:55
Выходные скукота, решил доделать свою идею, которая появилась у меня в начале семестра. А именно, разработать программу, которая показывала бы время до окончания пары. Встречаем! >>> Time Before End Of Para 1.0 beta (http://c0dedgarik.blogspot.com/2009/10/blog-post_04.html)

Программа компактна и весит всего 4 096 байт (писал на Си WinAPI, т. к версию под FASM было очень муторно отлаживать).
Открытый исходный код.
Не жрет память и автоматически настраивает таймер обновления времени.
Имеет файл конфигурации!

Особо её не тестировал отсюда приставка beta. Найдете глюки пишите исправим.

BrainDeaD
15.10.2009, 02:23
Можете мне накодить програмку, консольную в которую пишешь приложение и она его сворачивает..
ну например открыто несколько блокнотов, вводим program.exe notepadи все блокноты сворачиваются. Заранее спасибо.

давно писал подобное. создаем список процессов, если надо, сохраняем. одним кликом убиваем все процессы из списка. очень помогал против "злых окон", когда уйма ие окон открывается с бешанной скоростью. а так же чтоб разгрузить систему перед играми на слабом компе.
если ещё кому-нибудь надо...
язык: c++ Qt

http://i077.radikal.ru/0910/56/5c8b7598a6cf.jpg (http://www.radikal.ru)http://s11.radikal.ru/i183/0910/ff/d0d60ede58e0.jpg (http://www.radikal.ru)

[download]
http://slil.ru/28633876 (Link Updated)

за вопросами в личку

ichechen
17.10.2009, 01:11
Простенькая консольная программа для копирования музыки из M3U списка в заданную папку, полезна при необходимости выделения музыки из списка для дальнейшей обработки

Язык C#
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace M3UCopyer { class Program { static void Main(string[] args) { string filePath; //Path to M3U File string collectionPath; //Path to end folder List<string> fNamesCol = new List<string>(); //File names int i = 0; //i string s = ""; //Temporary /************************************************** ***************COPYRIGHT************************** ***********************************/ Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.Write("================================================== ===="); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("-------"); System.Threading.Thread.Sleep(250); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(">>>>>>>>>>>>>"); System.Threading.Thread.Sleep(250); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); Console.WriteLine("|-----------------------COPYRIGHT (C) ICHECHEN-------------------------|"); System.Threading.Thread.Sleep(250); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Red; Console.Write("<<<<<<<<<<<<<"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("-------"); System.Threading.Thread.Sleep(250); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("================================================== ===="); System.Threading.Thread.Sleep(250); Console.WriteLine(); /************************************************** ************************************************** ***********************************/ Console.WriteLine(); if (args.Length < 1) { Console.ForegroundColor = ConsoleColor.DarkYellow; Console.WriteLine("Please enter M3U file address: "); Console.ForegroundColor = ConsoleColor.Yellow; filePath = Console.ReadLine(); Console.ForegroundColor = ConsoleColor.DarkYellow; Console.WriteLine("Please enter path to you collection: "); collectionPath = Console.ReadLine(); try { StreamReader sr = new StreamReader(filePath, System.Text.Encoding.GetEncoding(1251)); /*******************************Extracting to fNameCol*******************************/ sr.ReadLine(); while (!sr.EndOfStream) { if (i == 1) { s = sr.ReadLine(); if (s.Substring(1, 1) != ":") { s = filePath.Substring(0, 3) + s; } fNamesCol.Add(s); i = 0; } else { sr.ReadLine(); i++; } } sr.Close();// /****************************************FILE COPY************************************/ if (fNamesCol.Count > 0) { FileInfo f; if (collectionPath.Substring(collectionPath.Length - 1, 1) != Convert.ToString('\\')) { collectionPath = collectionPath + Convert.ToString('\\'); } foreach (string fp in fNamesCol) { f = new FileInfo(fp); Console.WriteLine(fp); File.Copy(f.FullName, collectionPath + f.Name, true); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("OK!"); Console.ForegroundColor = ConsoleColor.DarkYellow; } Console.ReadLine(); } } catch { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Bad M3U filename!"); System.Threading.Thread.Sleep(1000); } } } } }

Скачать .exe => http://depositfiles.com/files/l1v0cmmwb

ichechen
17.10.2009, 01:36
Программа для управления магазином компьютерной техники
Язык VB


Исходники и выходной файл в архиве
Скачать -> http://depositfiles.com/files/p3wua7mz8

}{AS 99
18.10.2009, 15:21
Недавно начал программировать на C# может с неделю...Вот написал сегодня программу для конвертации валют.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace KursBablo { class Program { static void Main(string[] args) { double var1, var3 = 43.7429, var4 = 8.1120, var2 = 29.3281, var5 = 47.7813, var6 = 12.1243, var7 = 13.1000; //Курсы валют на сегодня const string rubli = "2"; const string grivna = "1"; bool mybool = (false); string mystring; while (!mybool) //бесконечный цикл { Console.WriteLine("Программа для конвертации гривен и рублей в евро,доллары,фунты."); Console.Write("Теперь введите сумму:"); var1=Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Выберете валюту:"); Console.WriteLine("1 - Гривна"); Console.WriteLine("2 - Рубль"); Console.WriteLine("Чтобы выбрать гривну - нажмите 1,чтобы выбрать рубли нажмите - 2!"); mystring = Console.ReadLine(); switch (mystring) { case grivna: Console.WriteLine("В долларах: {0}.", var1 / var4); Console.WriteLine("В евро: {0}.", var1 / var6); Console.WriteLine("В фунтах: {0}.", var1 / var7); //Результаты для гривны continue; case rubli: Console.WriteLine("В долларах: {0}.",var1/var2); Console.WriteLine("В евро: {0}.",var1/var3); Console.WriteLine("В фунтах: {0}.",var1/var5); //Результаты для рублей continue; } } } } }
Прошу строго не судить...
Скачать exe:http://depositfiles.com/files/hxoxrhcnk

Chrome~
25.10.2009, 15:17
Решил написать небольшую программу для новичков. Профессионалам в сфере программирования в Delphi она ни к чему.

В общем, иногда, когда пишите серьезные проекты, приходится очень часто делать вызов диалогового окна с помощью Win Api функции MessageBox. Если вы иногда забываете значения, которые нужно передавать в программу для создания того или иного окна, можете воспользоваться данной программой.

Эта программа предназначена для генерации Delphi кода вызова Win Api функции MessageBox с заданными вами параметрами.

Вы можете делать тест того, как будет выглядеть окно, а потом, собственно, генерировать код.

Скриншоты:

http://i066.radikal.ru/0910/c1/2d4d75800bac.png
http://i023.radikal.ru/0910/1f/f3b707a4ae39.png
http://i048.radikal.ru/0910/b0/79c3f9a35cc8.png

Скачать exe + delphi sources:

http://rapidshare.com/files/297646861/Message_Box_v_1.0.rar
http://depositfiles.com/files/6plkjh4a4

ange007
27.10.2009, 17:11
Частенько бывает что нужно проверить запрос, или цепь запросов.
Вот для этого я и написана данная программа.
http://borisenko.at.ua/gp.png
Программа: http://a-soft.org.ua/down/o-8.html
или http://a-soft.org.ua/

\\ChaOs//
21.11.2009, 23:28
M3U Copy

http://i063.radikal.ru/0911/15/f86300055baa.jpg

Написал программу для копирования или перемещения файлов из M3U плэйлиста. Поддерживаются листы с абсолютным и относительными путями, также успешно обрабатываются и битые листы, главное чтобы путь до файла был целым и отдельной строкой.

Язык: QT + С++

Исходник и исполняемый файл:
http://www.multiupload.com/5O5DHVDQHS


ChaOs Generator

http://s52.radikal.ru/i135/0911/01/8c8db9e6306b.jpg

Многофункциональный генератор словарей для брута.

Особенности:
● Высокая скорость работы(словарь с логином в 10 символов и 7-значным цифирным паролем - 6 сек.).
● Возможность разбора сгенерированого словаря по маске(QRegExp).
● Возможность добавлять к паролю префикс и пост фикс.
● Один генератор на все случаи жизни. При наличии смекалки можно сгенерировать словарь для чего угодно.

Язык: QT + С++

Исходник и исполняемый файл:
http://www.multiupload.com/OHOK5D8WDU

Не запускается программа? Скачай библиотеки QT:
http://www.multiupload.com/PP2SAN0A7R
P.S. Программы писались для самообразования, возможны банальные ошибки, о коих прошу сообщать мне.

slesh
07.12.2009, 14:24
Программа: MicSpy By SLESH 1.0b
Язык: Delphi
Размер: Чистый размер после компила через альтернативные модули 13824 байта
Размер после UPX 7680 байт
Предназнаение: Скрытая запись звука с устройства установленного поумолчанию в системе для записи голоса (микрофон или линейный вход, или стере/моно микс), что настроено, с того и пишет.
Особенности:
1) Данные записываются в формате mp3 24 КГц 32кбит/с, моно. Для записи используется стандартный виндовый кодек MPEG LAYER-3
2) Название файлов генерируется как год_месяц_день_час-минуты-секунды.mp3
3) Управление программой осуществляется через WEB интерфейс. Подключатьcя к порту 4545. Типа http://127.0.0.1:4545/
4) Админка предоставляет слудющие функции:
- выгрузка программы
- начать/остановить запись
- отображение списка записанных файлов + размер их
- удалять записанные файлы
- скачевать записанные файлы
Разное: Ну програмка довольно сыроватая, но с легкость может быть доделана функция обхода виндового фаера + инстал в систему. Проверял запись с установленными устройствами - микрофон и стерео микс - вроде нормально пишет в файл.

В архиве имеется сама прожка + её исходник.
Исходник
MicSpy.dpr - основная часть (реализация админки)
API.pas - константы, типы и функцкии, юзал для уменьшения размера, т.к. отказался от модуля Windows.pas
MicRec.pas - функции записи

http://slesh.name/uploads/MicSpy.rar

slesh
07.12.2009, 14:26
MicSpy SE (Stream Edition)
Это собственно говоря небольшое продолжение идеи
микрофонного шпиона, но чуть с другой технологией работы.

Основные изменения:
1) отсутствует админка
2) запись больше не производится в файлы
3) скомпилить через альтернативные модули и упаковать UPX то размер будет 5632 байта т.е. как видно - существенно уменьшился размер
4) теперь данные передаются в псевдопотоковом режиме через сеть.
5) для прослушивания нужен желательно Winamp
6) возможность одновременного подключения 256 пользователей.

Алгоритм работы:
1) инициализируется формат записываемых данных
2) инит сокетов
3) ожидание подключения клиента
4) если есть клиент, то считывает http заголовок
5) если неудачно считался, то клиент отключается и ему посылается ответ HTTP/1.0 404 Not Found
6) если удачно считался заголовок то идут действия:
7) если клиентов 256 то клиент отключается и ему посылается ответ HTTP/1.0 404 Not Found
8) если первый клиент, то включает запись и добавляет сокет клиента в очередь на посылку данных
9) если не первый, то просто сокет добавляется в очередь посылки данных
10) если идет запись, и получены данные, то проверяется очередь сокетов и каждому сокету отправляется этот пакет
11) если данные не отправились (клиент отключился), то сокет закрывается и удаляется из очереди
12) если закрыт последний сокет то останавливается запись, чтобы не расходовать ресурсы.

Достоинства:
1) малый размер
2) нет нужды хранить файлы
3) нет нужды управлять записью, всё само идет.
4) прослушивание в реальном времени.
5) до 256 одновременных клиентов

Недостатки:
Как и во всём хорошем есть сво:е плохое )
1) трафик расходуется с заданным битрейтом записи.
В локалках - это норм. да и при существующем инете это уже не проблема.
2) получение HTTP заголовка от клиента - глючно сделано, по этому пока данные не получатся то второй клиент не подрубится. т.е. нужно просто сделать таймаут на сокет (на чтение) или заюзать select. Так что это решаемо.
3) т.к. реализована псевдопоточность, то довольно сложновато прослушать через браузер данные.
т.е. Quick Time отказался слушать почему то.

Зато Windows Media Player и WinAmp в легкую смогли получать данные по сети, достаточно было указать адрес http://xxx.xxx.xxx.xxx:4545/

Так вот небольшая доделка старого MicSpy сделанная за 2 часа )

В архиве можно найти архив со следующими файлами:
1) MicSpySE.dpr - основной модуль
2) API.pas - список зающанных API функий
3) MicRec.pas - модуль отвечающий за запись и передачу данных
4) MicSpySE.exe - скомпиленный через альтернативные модули и упакованный UPX

P.P.S нашел шас глюк небольшой. забыл вставить
SendToClient(csocket, HeaderOK);
после
if SocketList.data[x] = 0 then
begin
т.е. в одном месте есть а в другом месте нету.

http://slesh.name/uploads/MicSpySE.rar

(C) SLESH

slesh
07.12.2009, 14:28
Micro Web Server DLL

Что это и для чего это?
1) Это небольшой веб сервер реализованный в виде DLL
2) Может использовать как добавочная нагрузка на разного рода программы, где необходим свой простенький веб сервер, преимущественно для скачевание файлов. А также можно сделать его полезной нагрузкой шпионских программ или других ползучих гадов )

Характеристики:
1) чистый размер DLL - 4608
2) язык программирования - С++
3) среда разработки - MS Visual Studio 2008 Pro
4) 2 функции - остановка сервера и запуск сервера
5) Поддерживаемые ОС - Windows 98SE - Windows 7
6) Возможность использования в любых программах на любых языках (ASM, Delphi, C, C++, VB и другие компилируемые языки)
7) Сокетная система - WinSock2
8) зависимость от DLL - WS2_32.DLL, KERNEL32.DLL, USER32.DLL. Другими словами - всё стандартное, всё системное.

Возможности:
1) неограниченное кол-во работающих параллельно серверов (сколько система позволит)
2) Запуск и остановка любого сервера в любое время
3) задание порта для сервера
4) задание таймаута на получение команды от клиента
5) установка своей корневой диры для каждого сервера
6) задание максимального кол-ва пользователей одновременно обрабатываемых сервером.
7) установку размера буфера при отдаче файлов. (но не менее 1024 байт)
8) максимальный поддерживаемый размер файла - сколько позволит винда. Теоретически должно работать с файлами > 4 гигов
9) показ содержимого папки
10) поддержка русскоязычных названий папок и файлов. Теоретически вообще любые кодировки должны пахать, потому что используется widechar.

Чего не умеет:
1) никакие запросы кроме GET не поддерживаются
2) нет поддержки докачки файлов.
3) нет поддержки файлов размером больше 2 гигов.
4) никакие php, perl и прочие cgi не поддерживаются
5) сервер настроен так, что все файлы он отдает на скачевание а не на показ. т.е. я поставил application/octet-stream для всех типов файлов. Но по желанию каждый может изменить.

Функции DLL
function StartServer(var id : dword; ip : dword; port : word; MaxClients : integer; TimeOut : dword; BufSize : dword; MainDir : pwidechar):dword;

Функция возвращает результат запуска сервера. Константы описаны ниже.
Параметры:
id - в переменную будет записан дескриптор сервера
ip - сетевой интерфейс на котором будет слушаться порт. 0 - на всех.
port - порт для сервера
MaxClients - макс число одновременно подсоединенных клиентов к данному серверу
TimeOut - таймаут на получение команды от клиента в миллисекундах. т.е. 1000 = 1 сек
BufSize - размер буфера при передаче файлов
MainDir - корневая папка сервера

function StopServer(id : dword) : dword; - остановка сервера.
id - дескриптор сервера

Пример использование в Delphi
Разместить DLL в папке с программой.

const // коды ошибок
SERVER_STATUS_OK = $FFFFFFF0;
SERVER_STATUS_FOLDER_ERROR = $FFFFFFF1;
SERVER_STATUS_CREATE_SOCKET_ERROR = $FFFFFFF2;
SERVER_STATUS_BIND_ERROR = $FFFFFFF3;
SERVER_STATUS_LISTEN_ERROR = $FFFFFFF4;
SERVER_STATUS_ALLOC_MEM_ERROR = $FFFFFFF5;
SERVER_STATUS_CREATE_THREAD_ERROR = $FFFFFFF6;
SERVER_STATUS_ID_ERROR = $FFFFFFF7;
// остановка сервера
function StopServer(id : dword) : dword; stdcall; external 'WebServ.dll';

// запуск сервера
function StartServer(var id : dword; ip : dword; port : word; MaxClients : integer; TimeOut : dword; BufSize : dword; MainDir : pwidechar):dword; stdcall; external 'WebServ.dll';

var
Server_1 : dword;
Server_2 : dword;

procedure TForm1.Button1Click(Sender: TObject);
var
status : dword;
begin
// запустить сервер.
status := StartServer(Server_1, 0, 666, 10, 30000, 4096, 'c:\');
if status <> SERVER_STATUS_OK then
begin
ShowMessage('Server 1 Start Error. Code = ' + inttohex(status, 8));
end;

status := StartServer(Server_2, 0, 667, 10, 30000, 4096, 'd:\');
if status <> SERVER_STATUS_OK then
begin
ShowMessage('Server 2 Start Error. Code = ' + inttohex(status, 8));
end;

end;

// остановка
procedure TForm1.Button2Click(Sender: TObject);
var
status : dword;
begin
status := StopServer(Server_1);
if status <> SERVER_STATUS_OK then
begin
ShowMessage('Server 1 Stop Error. Code = ' + inttohex(status, 8));
end;

status := StopServer(Server_2);
if status <> SERVER_STATUS_OK then
begin
ShowMessage('Server 2 Stop Error. Code = ' + inttohex(status, 8));
end;
end;



Пример использование в С++
Для С++ по подобной системе.

#define SERVER_STATUS_OK 0xFFFFFFF0
#define SERVER_STATUS_FOLDER_ERROR 0xFFFFFFF1
#define SERVER_STATUS_CREATE_SOCKET_ERROR 0xFFFFFFF2
#define SERVER_STATUS_BIND_ERROR 0xFFFFFFF3
#define SERVER_STATUS_LISTEN_ERROR 0xFFFFFFF4
#define SERVER_STATUS_ALLOC_MEM_ERROR 0xFFFFFFF5
#define SERVER_STATUS_CREATE_THREAD_ERROR 0xFFFFFFF6
#define SERVER_STATUS_ID_ERROR 0xFFFFFFF7

ULONG __stdcall StartServer(ULONG* id, ULONG ip, USHORT port, LONG MaxClients, ULONG TimeOut, ULONG BufSize, wchar_t * MainDir)
ULONG __stdcall StopServer(ULONG id)
.....................
ULONG Server;

StartServer(&Server_1, 0, 666, 10, 30000, 4096, L"c:\\");
.......................


На последок
Если компилить как exe то размер будет 3,5 кила.
В принципе работает норм. Покрайней мере при тестировании. Кто пробовал, отпишите.

В архиве вы найдете файлы:
WebServ.cpp - исходник DLL
WebServ.def - вспомогательный файл
WebServ.dll - откомпиленная DLL
WebServ.h - хидер
WebServ.vcproj - файл проекта

http://slesh.name/uploads/WebServ.rar

(С) SLESH 2009 )

slesh
07.12.2009, 14:30
IcqMod DLL

Что это?
Это небольшая DLL для работы с аськой ) которая реализует основные функции для работы с протоколом.
Основные - это коннект, дисконнект, отправка и получение сообщений, запрос авторизации и отказ авторизовать.

Заче оно нужно?
1) Очень удобный модуль для ICQ спама
2) Очень удобный модуль для ICQ флуда
3) Возможность быстрого создания простых ICQ ботов
4) Использование в любом другом софте который использует ICQ протокол

В чем особенность?
1) чистый размер DLL - 6 килобайт
2) возможность использования в любом компилируемом языке
3) простота использования
4) поддержка socks4 и socks5
5) нет нужны юзать VCL и тому подобные вещи.
6) собственный двиг (не используется TICQClient)/ собственно по размеру это видно
7) в онлайн можно выводить сколько угодно номеров (в особенности если юзать прокси) при этом тормозить ничего не будет в отличии от использования VCL компонента TICQClient

Какие функции имеются?
ICQClose - закрытие соединение
ICQConnect - коннект к серваку
ICQSendMsg - посылка сообщения
ICQSendAuth - посылка запроса на авторизацию с передачей текста
ICQAuth - авторизовать UIN или отказать в авторизации
ICQReadMsg - проверка на наличие сообщения в очереди.

Технические особенность
1) максимальное кол-во параллельно работающих коннектов - неограничено, на сколько система позволит
2) максимальный размер входящего сообщения - 240 байт. Просто большие сообщения отправляются другим способом, который не поддерживается в dll
3) поддержка приема русских сообщений
4) оправка сообщений на рус языке требует предварительного конверта текста в UTF8. Англ и так прокатывает.
5) используется только WinSock2
6) написан на Си.
7) Скомпилен в VS 2008 Pro

Дополнительно
Т.к. судя по виду, эту либу будут использовать в основном для спама или флуда или в других программах которые будут приность прибыль людям, то исходники данной DLL выкладывать не буду. Тем кому они понадобятся могу продать за определенную плату.

Пример использования в Delphi
Пример реализации в делфи простого бота который будет выводить в консоль сообщение которые посылает юзвери и их UIN's
на запрос !TIME будет отослано текущее время.

Пример лежит в архиве
TimeBot.dpr - сам бот
IcqMod.pas - вспомогательный модуль описывающий константы и прототипы
IcqMod.dll - сама dll

Пример использования в C/C++
Примера не будет, просто в файле IcqMod.h описаны константы и прототипы функций. Кому нужно разберутся.

Подробное описание функций? констант и структур

PROXY_INFO = packed record
ProxyType : dword; // тип прокси
ProxyIp : dword; // адрес прокси
ProxyPort : word; // порт прокси
end;
PPROXY_INFO = ^PROXY_INFO;

Данная структура описывает инфо о прокси.
Типы прокси:
PROXY_TYPE_SOCKS_4 = 1;
PROXY_TYPE_SOCKS_5 = 2;

заполняется так примерно:
proxy.ProxyType = PROXY_TYPE_SOCKS_5;
proxy.ProxyPort = 1222;
proxy.ProxyIp = inet_addr("127.0.0.1");
--------------------------------

ICQ_CLIENT = packed record
status : byte;
sequence : word;
sock : dword;
end;

основная структура описывающая состояние работы. Заполняется функцией ICQConnect
В ней не стоит ничего менять, просто используете для работы. Единственная переменная за состоянием которой нужно следить - status она может принимать значение:
ICQ_CLIENT_STATUS_CONNECTED = 1; - связь установлена
ICQ_CLIENT_STATUS_DISCONNECTED = 2; - нет связи с сервером
--------------------------------
function ICQConnect(var client : ICQ_CLIENT; host : PAnsichar; port : word; login : PAnsichar; pass : PAnsichar; pproxy : PPROXY_INFO) : dword; stdcall; external ICQMOD_DLL;

подключение к серверу, где
client - переменная для хранения состояния
host - имя сервака типа login.icq.com
port - порт сервера (5190)
login - UIN
pass - пароль для UINа
pproxy - указатель на структуру описывающую прокси.
Если 0 значит не юзать прокси, если указана структура прокси, то берет из неё данные для коннекта

Функция возвращает код состояния:
ICQ_CONNECT_STATUS_OK = $FFFFFFFF; // подключился удачно
ICQ_CONNECT_STATUS_RECV_ERROR = $FFFFFFFE; // ошибка чтения данных
ICQ_CONNECT_STATUS_SEND_ERROR = $FFFFFFFD;// ошибка отправки данных
ICQ_CONNECT_STATUS_CONNECT_ERROR = $FFFFFFFC;// ошибка коннекта к серваку
ICQ_CONNECT_STATUS_AUTH_ERROR = $FFFFFFFB; // не смог авторизоваться. Или пас не подходит или превышен лимит
-----------------
function ICQReadMsg(var client : ICQ_CLIENT; UIN : PAnsichar; msg : PAnsichar; var msglen : integer) : dword; stdcall; external ICQMOD_DLL;

Проверка на сообщение.
client - описание состояния
UIN - адрес буфера куда будет помещен UIN человека от которого пришло сообщение. желательно чтобы был 10 байт.
msg - адрес буфера куда будет записано сообщение.
msglen - переменная в которую будет записана длинна сообщения.

Функция возвращает:
0 - сообщения нет
1 - сообщение получено.

Данная функция извлекает данне из сокета если они есть. И если это сообщение то парсит его.
----------------
function ICQAuth(var client : ICQ_CLIENT; UIN : PAnsichar; AuthOk : dword) : dword; stdcall; external ICQMOD_DLL;


Авторизация номера.
client - описание состояния
UIN - номр человека которого нужно авторизовать
AuthOk - флаг авторизации:
0 - послать команду - в авторизации отказано
1 - авторизовать человека.
---------------------
procedure ICQClose(var client : ICQ_CLIENT); stdcall; external ICQMOD_DLL;

закрывает соединение
--------------------

function ICQSendAuth(var client : ICQ_CLIENT; UIN : PAnsichar; msg : PAnsichar) : dword; stdcall; external ICQMOD_DLL;

Отсылка запроса на авторизацию.
UIN - кому отсылается
msg - текст который будет присутствовать в запросе
---------------------
function ICQSendMsg(var client : ICQ_CLIENT; UIN : PAnsichar; msg : PAnsichar) : dword; stdcall; external ICQMOD_DLL;

Посылка сообщения
UIN - кому
msg - текст сообщения

На последок всякая инфа
Как будет работать DLL - хз. тестил на локальном компе. Сообщениями обменивался с QIP Infium на рус и англ языке. всё было норм.

При написании DLL некоторые вещи были подсмотрены в TICQClient (запросы на отсылку сообщений и работу с авторизаций) Чтение сообщений и коннект подсмотренный с CommView и php классе работы с аськой. Так что сильно прошу не пинать ))

И главное - не спамте мою аську :'(

http://slesh.name/uploads/IcqMod.rar

(С) SLESH 2009

<Cyber-punk>
14.12.2009, 13:23
My proxy - поднимает проксю на 127.0.0.1:8080

Delphi код


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, ImgList, Registry, IniFiles, WinSock, Unit2;

type
TForm1 = class(TForm)
ListView1: TListView;
ImageList1: TImageList;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
StatusBar1: TStatusBar;
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
private
_listenThread:TListenThread;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ToolButton4Click(Sender: TObject);
var
_reg:TRegIniFile;
begin
_reg := TRegIniFile.Create('Software\Microsoft\Windows\Cur rentVersion\Internet Settings');
_reg.WriteString('','ProxyServer', '127.0.0.1:8080');
_reg.WriteBool('', 'ProxyEnable', true);
_reg.Free;
ShowMessage('IE для текущего пользователя сконфигурирован!');
end;

procedure TForm1.ToolButton5Click(Sender: TObject);
var
_reg:TRegIniFile;
_ini:TIniFile;
_AppData:string;
begin
_AppData := '';
_reg := TRegIniFile.Create('Software\Microsoft\Windows\Cur rentVersion\Explorer\Shell Folders');
_AppData := _reg.ReadString('', 'AppData', '');

if not (DirectoryExists(_AppData)) then
begin
ShowMessage ('Не получилось определить папку');
Exit;
end;


_AppData := _AppData+'\Opera\Opera\Profile\opera6.ini';

if not (FileExists(_AppData)) then
begin
ShowMessage('Не найден конфигурационный файл!');
Exit;
end;

_ini := TIniFile.Create(_AppData);
_ini.WriteBool('Proxy', 'Use HTTP', true);
_ini.WriteString('Proxy', 'HTTP Server','127.0.0.1:8080');

_reg.Free;
_ini.Free;

ShowMessage('Opera сконфигурирована!');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
_WSAData: WSAData;
begin
if (WSAStartup(makeword(1,1), _WSAData))<>0 then
begin
ShowMessage('Произошла ошибка при инициализации WinSock!');
Exit;
end;
end;

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
_listenThread := TListenThread.Create(false);
StatusBar1.Panels.Items[0].Text := 'Проксик запущен на порту 8080';
end;


end.

Исходники + прога ( http://depositfiles.com/files/608ct7liw)

<Cyber-punk>
25.12.2009, 13:03
Программа My fast scan port быстро сканирует порты на удалённом сервере. Написанно на delphi 7.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, winsock2, ComCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
AddressEdit: TEdit;
Label2: TLabel;
StartPortEdit: TEdit;
EndPortEdit: TEdit;
Label3: TLabel;
Button1: TButton;
DisplayMemo: TRichEdit;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function LookupName: TInAddr;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

//Функция преобразвывающся введённый адрес сервера в спец формат
//Если введено символьное имя, то она преобразовывает его сначала в IP адрес,
//а потом переводит в спец формат
function TForm1.LookupName: TInAddr;
var
HostEnt: PHostEnt;
InAddr: TInAddr;
begin
if Pos('.', AddressEdit.Text)>0 then
InAddr.s_addr := inet_addr(PChar(AddressEdit.Text))
else
begin
HostEnt := gethostbyname(PChar(AddressEdit.Text));
FillChar(InAddr, SizeOf(InAddr), 0);
if HostEnt <> nil then
begin
with InAddr, HostEnt^ do
begin
S_un_b.s_b1 := h_addr^[0];
S_un_b.s_b2 := h_addr^[1];
S_un_b.s_b3 := h_addr^[2];
S_un_b.s_b4 := h_addr^[3];
end;
end
end;
Result := InAddr;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,s, opt, index: Integer;
FSocket: array [0..41] of TSOCKET; //Массив сокетов
busy : array [0..41] of boolean; //Массив, в котором будет храниться информация о каждом сканируемом сокете
port : array [0..41] of integer; //Массив сканируемых портов
addr : TSockAddr;
hEvent : THandle; //Объект для обработки сетевых событий
fset : TFDset;
tv : TTimeval;
tec :PServEnt;
PName:String;
GInitData : TWSADATA;
begin
// Устанавливаю максимальное и минимальное значение полоски состояния сканирования
//Я устанавливаю в минимум начальный порт сканирования, а в максимум - конечный порт
ProgressBar1.Min:=StrToInt(StartPortEdit.Text);
ProgressBar1.Max:=StrToInt(EndPortEdit.Text);

//Инициализирую WinSock
WSAStartup(MAKEWORD(2,0), GInitData);

//Записываю в переменную i значение начального порта
i:=StrToInt(StartPortEdit.Text);

//Заполняю основные поля структуры addr, которая будет использоваться
//при вызове функции connect
addr.sin_family := AF_INET;
addr.sin_addr.s_addr := INADDR_ANY;

//Вывожу сообщение о том, что начат поиск введённого хоста
DisplayMemo.SelAttributes.Color:=clTeal;
DisplayMemo.SelAttributes.Style:=DisplayMemo.SelAt tributes.Style+[fsBold];
DisplayMemo.Lines.Add('Поиск хоста');

//LookupName - эта функция написана выше и она возвращяет адрес в спец формате указанного сервера
//Результат этой функции я записываю в поле адреса сервера структуры addr
addr.sin_addr := LookupName;

//Вывожу сообщение о том, что начато сканирование
DisplayMemo.SelAttributes.Color:=clTeal;
DisplayMemo.SelAttributes.Style:=DisplayMemo.SelAt tributes.Style+[fsBold];
DisplayMemo.Lines.Add('Сканирование... ');

//В index находиться количество сокетов проверяемых за один раз
index:=40;

//Создаю объект для обработки сетевых событий
hEvent := WSACreateEvent();
while i<StrToInt(EndPortEdit.Text) do
begin
///Всем элементам массива busy присваиваю значение false
for j:=0 to index do
busy[j]:=false;

//В этом цикле будут асинхронно посылаться запросы на моединение
//переменная j будет изменяться от 0 до максимального количества
//элементов в массиве
for j:=0 to index do
begin
//Если j-й порт превысил значение указанного максимального
//порта, то прервать цикл
if i>StrToInt(EndPortEdit.Text) then
begin
index:=j-1;
break;
end;

//Инициализирую очередной j-й сокет из массива FSocket
FSocket[j] := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

//Добавляю j-й сокет к объекту событий с помощью WSAEventSelect
//1-й параметр - Добавляемый сокет
//2-й параметр - объект событий, который был создан с помощью WSACreateEvent
//3-й параметр - какие события ожидать. Тут я указываю FD_WRITE - события записи и FD_CONNECT - события о заключении соединения
WSAEventSelect(FSocket[j], hEvent, FD_WRITE + FD_CONNECT);

//Указываем порт, на который надо произвести попытку соединения
addr.sin_port := htons(i);

//Попытка коннекта на очередной порт
connect(FSocket[j], @addr, sizeof(addr));

//Даём ОС поработать и обработать накопившиеся события.
//Если этого не делать, то вовремя сканирования будет
//происходить эффект зависания
Application.ProcessMessages;

//Проверяю, были ли ошибки.
if WSAGetLastError()=WSAEINPROGRESS then
begin
//Если ошибка произошла, то закрываю этот порт
closesocket (FSocket[j]);
//Устанавливаю соответствующий элемент в массиве busy в true
//чтобы потом не проверять этот порт, потому что он всё равно
//уже закрыт
busy[j]:=true;
end;

//Указываю в массиве port, на какой именно порт мы сейчас послали запрос
port[j]:=i;

//Увеличиваю счётчик i в котором я отслеживаю, какой порт сейчас сканируеться
//чтобы на следующем этапе цикла for запустить сканирование следующего порта
i:=i+1;
end;

//Обнуляю переменную fset
FD_Zero(fset);

//Заполняю сканируемый массив сокетов в переменную fset
for j := 0 to index do
begin
if busy[j] <> true then
FD_SET (FSocket[j], fset);
end;

//Даём ОС поработать и обработать накопившиеся события.
Application.ProcessMessages;

//Заполняю структуру, в которой указано время ожидания события от сокета
tv.tv_sec := 1; //Мы будем ждать 1 секунду
tv.tv_usec := 0;

//Ожидаем пока произойдёт хотя бы одно событие от любого из сокетов
s:=select (1, nil, @fset, nil, @tv);

//Даём ОС поработать и обработать накопившиеся события.
Application.ProcessMessages;

//Запускаю массив, в котором будет проверятся, какие из сокетов в массиве FSocket
//прошли коннект успешно, а какие нет.
for j := 0 to index do
begin
//Проверяем, был ли закрыт соответствующий порт из-за ошибки
//Если да, то нет смысла его проверять
if busy[j] then continue;

if FD_ISSET (FSocket[j], fset) then
begin
//В переменную s записываеться размер перменной Opt
s:=Sizeof(Opt);
opt:=1;
//Получаю состояние текущего j-го сокета
//результат состояния будет в переменной opt
getsockopt(FSocket[j], SOL_SOCKET, SO_ERROR, @opt, s);

//Если opt равно 0 то порт открыт и к нему можно подключится
if opt=0 then
begin
//Пытаюсь узнать символьное имя порта
tec := getservbyport(htons(Port[j]),'TCP');
if tec=nil then
PName:='Unknown'
else
begin
PName:=tec.s_name;
end;
//Вывожу сообщение об открытом порте
DisplayMemo.Lines.Add('Хост:'+AddressEdit.Text +': порт :'+IntToStr(Port[j])+' ('+Pname+') '+' открыт ');
end;
end;
//Закрыть j-й сокет, потому что он больше уже не нужен
closesocket(FSocket[j]);
end;
//Увеличивею позицию в ProgressBar1
ProgressBar1.Position:=i;
end;
//Закрываю объект событий
WSACloseEvent(hEvent);

//Вывожу сообщение о конце сканирования
DisplayMemo.SelAttributes.Color:=clTeal;
DisplayMemo.SelAttributes.Style:=DisplayMemo.SelAt tributes.Style+[fsBold];
DisplayMemo.Lines.Add('Сканирование закончено...');
ProgressBar1.Position:=0;
end;

end.


Исходники + прога (http://depositfiles.com/files/g45rhr1q4)

J.U.M.P
15.01.2010, 06:50
ПЫЛЕСОС v2.0
качаем: http://jumpsoft.narod.ru/pileSOS.exe

О программе:
программа сортирует файлы там, куда вы ее поместите. Соответствующие файлы она перемещает в соответствующие папки, которые создает если их нету.
Очень будет полезна тем, кто много качает и интернета, и на рабочем столе (и не только) у него хлам.
---
Имеется множество настроек, также можно сортировать только те форматы, которые вы введете.

rudvil
17.01.2010, 19:41
Функция для вывода читабельной древообразной структуры на консоль.
Писал для дерева такого типаclass Tree {
public:
std::string value;
std::vector<Tree> tree;
};также легко будет переделать и под другой тип дерева.

Например если сконструировать дерево след. выражения1+2*3то вывод будет примерно таким[+]-|
|-[1]
|
|- -|
| |-[2]
| |-[3]

#include <iostream>
#include <string>
#include <vector>

class Tree {
public:
std::string value;
std::vector<Tree> tree;
};

void printTree (Tree tree, int offsetWidth = 0, std::string offsetStr = "") {
std::string str = "[" + tree.value + "]";
std::string offset(offsetWidth + 1, ' '); // +1 because of '-' character on line 19
offset = offset.replace(0, offsetStr.length(), offsetStr);
int length = str.length();
int size = tree.tree.size();
if (offsetWidth > 0) {
offset += "|";
std::cout << offset << "-";
}
std::cout << str;
if (size > 0) {
std::cout << "-|\n";
for (int i = 0; i < size; i++) {
if (offsetWidth > 0) {
printTree(tree.tree[i], length + offsetWidth + 3, offset); // +3 because of '[', ']', '-' characters
}
else {
printTree(tree.tree[i], length + offsetWidth, offset);
}
if (i == size - 1) {
std::cout << offset;
std::cout << "\n";
}
}
}
else {
std::cout << "\n";
}
}

int main (int argc, char* argv[]) {
print(tree);
std::cin.get();
return 0;
}

Gar|k
26.01.2010, 00:45
> intro
Посмотрел сейчас сюжет про linux, про идеи open source (лиценцию GNU GPL) и решил опубликовать исходники.
// тему создавал отдельную, но тут и обсуждать не чего. Пусть хоть исходник потеряется в сабжах нужной темы ;)

> WARNING
Перед тем как компилировать исходники, настоятельно рекомендую прочесть статью 272 часть 2 (до пяти лет) и статью 138 УК РФ (до трёх лет)

- about
Функция генерация пароля взята из статьи "Циклический инкремент паролей (http://www.insidepro.com/doc/003r.shtml)", собственно каркас TCP/IP клиента у Криса Касперски (http://www.insidepro.com/kk/006/006r.shtml), а идеи построения нормального сетевого приложения вычитаны у Йона Снейдера (http://www.ozon.ru/context/detail/id/126048/)
Клиент MMP собственно мой... многопоточность достигается путем открытия сразу N сокетов, которые в дальнейшем живут своей жизнью.

+ test
При тестировании на скорости ~256 кб/c один сокет проверяет 4 пароля в секунду... 4 сокета соответственно 16 (думаю можно и больше не проверял). Приблизительно через 10 минут сервер попросту закрывает все соединения с данного IP (ну я так думаю, потому что помогает переподключение к инету).

--==[ СОРЦЫ Bruteforce MMP (http://zona-chat.narod.ru/src/MMP_brute_0.01.c) ]==---

RedFern.89
26.01.2010, 03:31
unit vkapi;

interface

uses
Windows, Classes, idHTTP, idCookieManager, SysUtils, Dialogs;

var
HTTP : TIDHTTP;

function VK_Login(email, pass: string): boolean;
procedure VK_GetFriendList(Names, OnlineFrinds: TStrings);
function VK_OpenWriteBox(id: string): string;
procedure VK_SendMessage(id, hash, msg: string);
procedure VK_GetNewMessageList(Messages: TStrings);
function VK_ReadMessage(msg_id: string): string;

implementation

function DecChas(chas: string): string;
var
Decchas : string;
str : string;
I : Integer;
Len : integer;
begin

str := Copy(chas, 6, 12);
Len := Length(str);

For I := 0 To Length(str) -1 do
begin
Decchas := Decchas + str[len];
Inc(len, -1);
end;

str := Copy(chas, 21, Length(chas) -5);
str := str + Copy(chas, 5, 1);

Len := Length(str);

For I := 0 To Length(str) -1 do
begin
Decchas := Decchas + str[len];
Inc(len, -1);
end;

Result := Decchas;
end;

function VK_Login(email, pass: string): boolean;
var
Cookie : TidCookieManager;
Data, Page : TStringList;
I : Integer;
S : string;
begin
HTTP := TIDHTTP.Create(NIL);
Cookie := TidCookieManager.Create(nil);



Cookie.AddCookie('remixchk=5;', 'vkontakte.ru');
Cookie.AddCookie('remixclosed_tabs=0;', 'vkontakte.ru');
Cookie.AddCookie('remixlang=0;', 'vkontakte.ru');
Cookie.AddCookie('remixgroup_closed_tabs=0;', 'vkontakte.ru');
Cookie.AddCookie('remixnotajaxphotos=1;', 'vkontakte.ru');
Cookie.AddCookie('remixnews_privacy_filter=0;', 'vkontakte.ru');
Cookie.AddCookie('audio_vol=100;', 'vkontakte.ru');



HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 MRA 5.6 (build 03278) Firefox/3.5.7 sputnik 2.1.0.18';
HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
HTTP.Request.AcceptLanguage := 'ru,en-us;q=0.7,en;q=0.3';
HTTP.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7';
HTTP.Request.Pragma := 'no-cache';
HTTP.Request.CacheControl := 'no-cache';
HTTP.Request.RawHeaders.Add('X-Requested-With: XMLHttpRequest');

HTTP.AllowCookies := True;
HTTP.HandleRedirects := True;
HTTP.ProtocolVersion := pv1_1;
HTTP.CookieManager := Cookie;

Data := TStringList.Create;
Page := TStringList.Create;

HTTP.Post('http://vkontakte.ru/login.php', Data);

Data.Add('act=login');
Data.Add('email=' + email);
Data.Add('pass=' + pass);

Page.Text := HTTP.Post('http://login.vk.com/', Data);

For I := 0 To Page.Count -1 Do
begin
If Pos('id=' + #39 + 's' + #39, Page[i]) <> 0 Then
begin
S := Page[i];
S := Copy(s, Pos('value=', s) +7, Length(s));
Delete(s, Pos(#39, s), Length(s));
end;
end;

Data.Clear;

Data.Add('redirect=0'); // При установке значения "1", при успешном логине, вы попадаете на свою страницу
Data.Add('op=slogin');
Data.Add('s=' + s);

Page.Text := HTTP.Post('http://vkontakte.ru/login.php', Data);

If Pos('error', Page.Text) <> 0 Then Result := False
Else Result := True;

Page.Free;
Data.Free;
end;

procedure VK_GetFriendList(Names, OnlineFrinds: TStrings);
var
Data : TStringList;
I : Integer;
id, name, FriendsData,
OnlineFriendsData: string;
OnlineCount, FriendCount : string;
begin
Data := TStringList.Create;
Data.Text := HTTP.Get('http://vkontakte.ru/friends.php');

For I := 0 To Data.Count -1 do
begin
If Pos('var friendsData', Data[i]) <> 0 Then
begin
FriendsData := Data[i];
FriendsData := Copy(FriendsData, Pos('friends' + #39 + ':', FriendsData) +10, Length(FriendsData));
Delete(FriendsData, Pos('universities', FriendsData) -3, Length(FriendsData));
end;

If Pos('var js_fr_cnt', Data[i]) <> 0 Then
begin
FriendCount := data[i];
FriendCount := Copy(FriendCount, Pos('=', FriendCount) +2, Length(FriendCount));
Delete(FriendCount, Pos(';', FriendCount), Length(FriendCount));
end;
end;


For I := 0 To StrToInt(FriendCount) -1 do
begin
Name := Copy(FriendsData, Pos('"', FriendsData) +1, Length(FriendsData));
Id := Copy(FriendsData, Pos(',', id)+2, Length(FriendsData));
Delete(id, pos(',', id), Length(id));
If Id[1] = '[' Then Delete(id, 1, 1);
Delete(FriendsData, 1, Pos(']', FriendsData));
Delete(id, pos(',', id), Length(id));
Delete(name, Pos('"', name), Length(name));
Names.Add(name + '{id:' + id + '}');
end;

// Загружаем online друзей
Sleep(1000);

Data.Text := HTTP.Get('http://vkontakte.ru/friends.php?filter=online');

For I := 0 To Data.Count -1 do
begin
If Pos('var friendsData', Data[i]) <> 0 Then
begin
OnlineFriendsData := Data[i];
OnlineFriendsData := Copy(OnlineFriendsData, Pos('friends' + #39 + ':', OnlineFriendsData) +10, Length(OnlineFriendsData));
Delete(OnlineFriendsData, Pos('universities', OnlineFriendsData) -3, Length(OnlineFriendsData));
end;

If Pos('friends_common_count', Data[i]) <> 0 Then
begin
OnlineCount := Data[i];
OnlineCount := Copy(OnlineCount, Pos('friends_common_count', OnlineCount) +22, Length(OnlineCount));
Delete(OnlineCount, Pos('<', OnlineCount), Length(OnlineCount));
end;

end;

For I := 0 To StrToInt(OnlineCount) -1 do
begin
Name := Copy(OnlineFriendsData, Pos('"', OnlineFriendsData) +1, Length(OnlineFriendsData));
Id := Copy(OnlineFriendsData, Pos(',', id)+2, Length(OnlineFriendsData));
Delete(id, pos(',', id), Length(id));
If Id[1] = '[' Then Delete(id, 1, 1);
Delete(OnlineFriendsData, 1, Pos(']', OnlineFriendsData));
Delete(name, Pos('"', name), Length(name));
OnlineFrinds.Add(name + '{id:' + id + '}');
end;

end;

function VK_OpenWriteBox(id: string): string;
var
Str : string;
begin
Str := HTTP.Get('http://vkontakte.ru/mail.php?act=a_write_box&to=' + id);
str := Copy(str, Pos('decodehash', str) +12, Length(str));
Delete(str, Pos(#39, str), Length(str));
Result := str;
end;

procedure VK_SendMessage(id, hash, msg: string);
var
Post : TStringList;
begin
Post := TStringList.Create;
Post.Add('act=sent');
Post.Add('ajax=1');
Post.Add('chas=' + DecChas(hash));
Post.Add('to_id=' + id);
Post.Add('title=Posted by Vkonatkte Messenger v1.0 by Vadim');
Post.Add('message=' + AnsiToUTF8(msg));
Post.Add('from_box=1');

HTTP.Request.Referer := 'http://vkontakte.ru/mail.php?act=a_write_box&to=' + id;
HTTP.Post('http://vkontakte.ru/mail.php', Post);
Post.Free;
end;

procedure VK_GetNewMessageList(Messages: TStrings);
var
Page : TStringList;
I : Integer;
Name, Body, id, Image,
messId : string;
begin
Page := TStringList.Create;
Page.Text := HTTP.Get('http://vkontakte.ru/mail.php');

For I := 0 To Page.Count -1 do
begin
If Pos('newRow', Page[i]) <> 0 Then
begin
Image := Page[i+8];
Image := Copy(image, Pos(#34, image) +1, Length(image));
Delete(image, Pos(#34, image), Length(image));

Id := Page[i+7];
Id := Copy(id, Pos('d', id) +1, Length(id));
Delete(id, pos(#34, id), Length(id));

MessId := Page[i+20];
MessId := Copy(MessId, Pos('mail.php?', MessId) +21, Length(MessId));
Delete(MessId, Pos('&', MessId), Length(MessId));

Name := Page[i+13];
Name := Copy(name, Pos('>', name) +1, length(name));
Delete(name, Pos('<', name), Length(name));

Body := Page[i+20];
Body := Copy(body, Pos('Body">', body) +6, Length(body));
Delete(body, Pos('<', body), Length(body));
Messages.Add('id: ' + Id + ',body:' + Body + ',name:' + name + ',messid:' + MessId);
end;
end;

page.Free;
end;

function VK_ReadMessage(msg_id: string): string;
var
Page : TStringList;
i : Integer;
msg : string;
begin
Page := TStringList.Create;
Page.Text := HTTP.Get('http://vkontakte.ru/mail.php?act=show&id=' + MSG_ID + '&out=0');

For I := 0 To Page.Count -1 do
begin
If Pos('<td class="label">Сообщение:</td>', Page[i]) <> 0 Then
begin
msg := Page[i+3];
msg := Copy(msg, Pos('">', msg) +2, Length(msg));
msg := StringReplace(msg, '<br>', #13, [rfReplaceAll]);
Delete(msg, Pos('</div>', msg), Length(msg));
end;
end;
Result := msg;
Page.Free;
end;

end.

Gar|k
10.02.2010, 00:06
Размер exe - 3.5 Кб
Язык - winAPI

Разрабатывалась для успешной сдачи сесси, препод зажал лекции в электронке :cool:

Фишки:
- Копирует скрытые файлы
- Не нужно прав администратора
- Небольшая нагрузка на процессор
- Копирует только файлы определенного формата, пропуская уже скопированные файлы
- Запоминает уже копированные флешки по серийному номеру и запускает повторное сканирование ЭТОЙ только через сутки.

Подробнее о релизе смотреть тут - ИСХОДНИК, EXE (http://c0dedgarik.blogspot.com/2010/02/flash-grabber.html)

Скомпиленная версия держит форматы doc,docx,ppt,pptx,rtf - все это легко правится из исходника + я предоставил проект vs2008 со всеми настройками

transserg
10.02.2010, 06:20
Дело было вечером делать было нечего =)
решил написать Грабер для USB флешек
(Вспомнилась статья из какого то номера Хакера) вот что получилось.
Возможности
1. Возможность автозагрузки программы
2. Работать скрыто ( скрывает иконку из трея и ни о чем не предупреждает)
3. Типы файлов задаются по маске *.exe к примеру
4. Можно указать пусть куда копировать файлы
5. Все файлы разделяются по папкам для каждой флешки
6. Возможно сохранять структуру папко как на саомй флешку
7. построение полного списка файлов
http://s002.radikal.ru/i200/1001/4a/11cba01b3718.png (http://www.radikal.ru)

есть пару недочетов
1. длина 1 го расширения не более 6ти символов общая длина под маски равна 255 символов.
2. пусть до папки назначения должен быт обязательно указан и заканчиваться " \ "

вот ссыль на сорци
http://depositfiles.com/files/6twdaaw4h
http://slil.ru/28543554
http://rapidshare.com/files/340750659/FlashGraber.rar.html
пас antichat.ru
P.S. жду справедливой критики по Коду и по самой идеи
не сочтите за плагиат =) похоже идея родилась с Gar|k параллельно
https://forum.antichat.ru/thread173437.html создавал тему с ним ранее

RedFern.89
13.02.2010, 14:06
unit DownloadTh;

interface

uses
Windows, Classes, SysUtils, idHTTP, IdComponent, IniFiles, ExtCtrls;

const
HEADER_RANGE = 'Range: bytes=';
HEADER_USERAGENT = 'Downloader/1.0 (Windows NT; Vadim; Redfern;)';

{ Сюда идет запись файла }
var
FStream : TFileStream;

{ События }
type
TOnAddSegmentEvent = procedure(StartPos, MaxPos : Int64) of object;
TOnSetPositionEvent = procedure(Index: Integer; Position: Int64) of object;

{ Основной класс(поток) }
type
TDownload = class(TThread)
protected
FHTTP : TidHTTP;
FRangeStart : string;
FRangeEnd : string;
FURL : string;
FFileName : string;
FTotalCount : Int64;
FContentLen : Int64;
private
{ Properties }
property URL : string read FURL
write FURL;
property FileName : string read FFileName
write FFileName;
property RangeStart : string read FRangeStart
write FRangeStart;
property RangeEnd : string read FRangeEnd
write FRangeEnd;
property TotalCount : Int64 read FTotalCount;
property ContentLength : Int64 read FContentLen;
{ Procedures }
procedure Execute; override;
procedure OnWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer);
procedure OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer);
procedure Disconnect;
end;

{ Внешний класс(объект) для загрузки файла }
type
TMultiHTTPDownloader = class(TComponent)
protected
FDownload : array of TDownload;
FPartCount : Integer;
FFileName : string;
FStateFile : string;
FURL : string;
FOnAddSegmentEvent : TOnAddSegmentEvent;
FOnSetPositionEvent : TOnSetPositionEvent;
FTimer : TTimer;
FTotalCount : Int64;
FContentLen : Int64;
private
procedure TriggerAddSegment(Min, Max: Int64);
procedure TriggerSetPosition(Index: Integer; Position: Int64);
procedure OnTimer(Sender: TObject);
public
constructor Create(AOwner: TComponent);
procedure Start;
procedure Abort;
procedure Pause;
procedure Resume;
property TotalCount : Int64 read FTotalCount;
property ContentLen : Int64 read FContentLen;
published
property PartCount : Integer read FPartCount
write FPartCount;
property FileName : string read FFileName
write FFileName;
property StateFile : string read FStateFile
write FStateFile;
property URL : string read FURL
write FURL;
property OnAddSegment : TOnAddSegmentEvent read FOnAddSegmentEvent
write FOnAddSegmentEvent;
property OnSetPosition: TOnSetPositionEvent read FOnSetPositionEvent
write FOnSetPositionEvent;
end;

procedure Register;

implementation

/////////////////////////////TDownload/////////////////////////////

{ Выполнение загрузки }
procedure TDownload.Execute;
begin
// Создаем объект "FHTTP"
FHTTP := TidHTTP.Create(nil);
// Присваеваем заголовки
FHTTP.Request.CustomHeaders.Add(HEADER_RANGE + FRangeStart + '-' + FRangeEnd); // Custom
FHTTP.Request.UserAgent := HEADER_USERAGENT;
// Присвоение процедур
FHTTP.OnWork := OnWork;
FHTTP.OnWorkBegin := OnWorkBegin;
// Запуск
FHTTP.Get(FURL, FStream);
// Очистка памяти по завершению
FHTTP.Free;
end;

{ Щитаем колличество скачанных байт }
procedure TDownload.OnWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer);
begin
FTotalCount := AWorkCount;
end;

{ Щитаем общее колличество байт }
procedure TDownload.OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer);
begin
FContentLen := AWorkCountMax;
end;

{ Отключем }
procedure TDownload.Disconnect;
begin
FHTTP.Disconnect;
end;

//-----------------------------------------------------------------------------|
/////////////////////////////TMultiHTTPDownloader//////////////////////////////|
//-----------------------------------------------------------------------------|

// Создаем нужное вместе с объектом "TMultiHTTPDownloader"
constructor TMultiHTTPDownloader.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
FTimer := TTimer.Create(nil);
FTimer.OnTimer := OnTimer;
FTimer.Enabled := False;
FTimer.Interval := 1000;
end;


// Обрабатываем нужные события в таймере
procedure TMultiHTTPDownloader.OnTimer(Sender: TObject);
var
I : Integer;
begin
FContentLen := 0;
FTotalCount := 0;
For I := 0 To FPartCount -1 Do
begin
Inc(FTotalCount, FDownload[i].TotalCount);
Inc(FContentLen, FDownload[i].ContentLength);
TriggerSetPosition(I, FDownload[i].TotalCount);
end;

If FTotalCount = FContentLen Then
begin
FTimer.Enabled := False;
end;
end;

// Добавить сегмент в индикатор
procedure TMultiHTTPDownloader.TriggerAddSegment(Min, Max: Int64);
begin
If Assigned(FOnAddSegmentEvent) Then
FOnAddSegmentEvent(Min, Max);
end;

// Установка позиции сегментов
procedure TMultiHTTPDownloader.TriggerSetPosition(Index: Integer; Position: Int64);
begin
If Assigned(FOnSetPositionEvent) Then
FOnSetPositionEvent(Index, Position);
end;

// Заустить закачку
procedure TMultiHTTPDownloader.Start;
var
Chunk, Offset,
ContentLength : Int64;
HTTP : TidHTTP;
I : Integer;
begin
{ Проверка на назначенный статичный файл }
If FStateFile = '' Then
begin
Raise Exception.Create('Имя статичного файла не определено');
Exit;
end;

{ Проверка на введенный URL-аддрес }
If FURL = '' Then
begin
Raise Exception.Create('поле URL не должено остоваться пустым');
Exit;
end;

{ Прове }

HTTP := TidHTTP.Create(nil);
HTTP.Head(FURL);
ContentLength := HTTP.Response.ContentLength;
HTTP.Free;

FStream := TFileStream.Create(FFileName, fmCreate);

Chunk := ContentLength div FPartCount;
Offset := 0;
FTimer := TTimer.Create(nil);
FTimer.OnTimer := OnTimer;
FTimer.Interval := 1000;
FTimer.Enabled := True;

For I := 0 To FPartCount -1 Do
begin
SetLength(FDownload, I +1);
FDownload[i] := TDownload.Create(True);
FDownload[i].RangeStart := IntToStr(Offset);
FDownload[i].RangeEnd := IntToStr(Offset + Chunk);
FDownload[i].FreeOnTerminate := True;
FDownload[i].FileName := FFileName;
FDownload[i].URL := FURL;
TriggerAddSegment(Offset, Offset + Chunk);
Offset := Offset + Chunk +1;
end;

For I := 0 To FPartCount -1 Do FDownload[i].Resume;

end;

// Остановка
procedure TMultiHTTPDownloader.Abort;
var
I : Integer;
begin
For I := 0 To FPartCount -1 Do
begin
FDOwnload[i].Disconnect;
FDownload[i].Free;
end;
SetLength(FDownload, 0);
FTimer.Enabled := False;
end;

// Пауза
procedure TMultiHTTPDownloader.Pause;
var
I : Integer;
iFile : TIniFile;
begin
iFile := TIniFile.Create(FStateFile);

For I := 0 To FPartCount -1 do
begin
iFile.WriteString('Section ' + IntToStr(i), 'Position', IntToStr(FDownload[i].TotalCount));
iFile.WriteString('Section ' + IntToStr(i), 'Length', IntToStr(FDownload[i].ContentLength));
end;

For I := 0 To FPartCount -1 Do
begin
FDownload[i].Disconnect;
FDownload[i].Free;
end;
iFile.Free;
FTimer.Enabled := False;
end;

// Возобновление
procedure TMultiHTTPDownloader.Resume;
var
I : Integer;
iFile : TIniFile;
Temp : TStringList;
begin
iFile := TIniFile.Create(FStateFile);
Temp := TStringList.Create;

iFile.ReadSections(Temp);

For I := 0 To Temp.Count -1 do
begin
SetLength(FDownload, I +1);
FDownload[i] := TDownload.Create(True);
FDownload[i].RangeStart := iFile.ReadString('Section ' + IntToStr(i), 'Position', '');
FDownload[i].RangeEnd := iFile.ReadString('Section ' + IntToStr(i), 'Length', '');
end;

For I := 0 To Temp.Count -1 do FDownload[i].Resume;

FTimer.Enabled := True;

Temp.Free;
iFile.Free;
end;

procedure Register;
begin
RegisterComponents('Standard', [TMultiHTTPDownloader]);
end;

end.

sn0w
13.02.2010, 15:23
#define интересные может кто предложит?)

shell_c0de
13.02.2010, 15:35
Простоя программулька для брокеров (котировки Forex)
Написал для себя чтобы каждый раз в терминал MT4 не заходит
http://s005.radikal.ru/i211/1002/be/9991f0e18073.jpg (http://www.radikal.ru)

Пример простой но кому то пригодится идея...

Исходники и компилированные скачать тут (http://depositfiles.com/files/cnpuaoqae)

W!z@rD
16.02.2010, 09:59
http://crackfor.me/index.php.

Суть утилиты в том что ты подгружаешь хеш список, и прогоняешь его по сервису.

http://img535.imageshack.us/img535/7160/02132010230155.jpg

сорцы (http://www.sendspace.com/file/cpm833)

Годится как пример для работы с компонентом BackgroundWorker.

Писал на C#, .NET Framework 3.5. Visual Studio 2010 RC1.

Gar|k
26.03.2010, 02:46
Сейчас для HTTP аутентификации понадобилось... Может кому ещё пригодится.
написано с помощью... (http://base64.sourceforge.net/b64.c)

// base64 by Gar|k
//#define B64_DEF_LINE_SIZE 72
//#define B64_MIN_LINE_SIZE 4
// buf - строка для кодирования
// sizebuf - размер строки
// rez - буффер для результата
// функция возвращает размер полученого хеша
int base64_encode(char *buf,int sizebuf,char *rez,int linesize)
{
static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789+/";
unsigned char in[3], out[4];
int i, len, blocksout=0,count=0;

while(count!=sizebuf)
{
len = 0;
for( i = 0; i < 3; i++ )
{
if( count!=sizebuf )
{ in[i] = (unsigned char)*buf++; count++; len++; }
else in[i] = 0;
}

if( len )
{
out[0] = cb64[ in[0] >> 2 ];
out[1] = cb64[ ((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4) ];
out[2] = (unsigned char) (len > 1 ? cb64[ ((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6) ] : '=');
out[3] = (unsigned char) (len > 2 ? cb64[ in[2] & 0x3f ] : '=');

memcpy(rez,out,4); rez+=4;
blocksout++;
}

if( blocksout >= (linesize/4) || count==sizebuf ) blocksout = 0;
}
*rez++=0;
return count;
}

imreadyourmind
30.03.2010, 15:33
Написал авторег вебмани.К сожалению без скрина кидаю.
прога лежит тут:
o4u.msk.ru/webmoneyreger.rar

Прога регит форму, лезет на мыло, тырит активационный код, вписывает его, ждет активации по смс.

Скоро сделаю авторег без активации по смс.

Офф.Топик тут:https://forum.antichat.ru/thread191555.html

Gar|k
18.04.2010, 23:32
Понадобилось генерировать 128-ми битные ключи для RC4 шифрования, вспомнил про MD5.

вариант с использованием динамически выделяемой памяти

#include <wincrypt.h>

// на выходе адрес буфера 16 байтного хеша
// после использования выполни VirtualFree(LPVOID lpAddress,0,MEM_RELEASE);
unsigned char *md5(unsigned char *string,DWORD count)
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;
unsigned char *hash_value;

// Инициализация контекста криптопровайдера
if (CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))
{
// Cоздание хеш-объекта
if (CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash))
{
// Передача хешируемых данных хэш-объекту.
if (CryptHashData(hHash, string, count, 0))
{
// Получение хеш-значения
count = 0;
if (CryptGetHashParam(hHash, HP_HASHVAL, NULL, &count, 0))
{
hash_value=(unsigned char *)VirtualAlloc(NULL,count,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
if (CryptGetHashParam(hHash, HP_HASHVAL, hash_value, &count, 0))
{
return hash_value;
}
}
}
}
}

return NULL;
}


но хеш-то всегда 16 байт поэтому можно оптимизировать так

// hash_value указатель на >=16 байтный буфер (напр. char hash[16];)
BOOL md5(unsigned char *hash_value,unsigned char *string,DWORD count)
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;

// Инициализация контекста криптопровайдера
if (CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))
{
// Cоздание хеш-объекта
if (CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash))
{
// Передача хешируемых данных хэш-объекту.
if (CryptHashData(hHash, string, count, 0))
{
// Получение хеш-значения
count = 16;
if (CryptGetHashParam(hHash, HP_HASHVAL, hash_value, &count, 0)) return TRUE;
}
}
}

return FALSE;
}

<Cyber-punk>
19.04.2010, 14:36
Прога My torrent - создаёт торрент файлы.

http://www.keepme.ru/upload/previews/2010/04/19/1a655e2d0be05c9fc12ab0dfe8d1e849.JPG (http://www.keepme.ru/upload/images/2010/04/19/1a655e2d0be05c9fc12ab0dfe8d1e849.JPG)

http://www.keepme.ru/upload/previews/2010/04/19/97049bdee5d060a922b586677e34d74b.JPG (http://www.keepme.ru/upload/images/2010/04/19/97049bdee5d060a922b586677e34d74b.JPG)

Прога (http://depositfiles.com/files/0i97ygsye)

Сорцы (http://depositfiles.com/files/xfwz3se1m)

TORSUMY
02.05.2010, 16:57
delphi собственный мини почтовый клиент (winsock)
может кому пригодится (исходники выкладываю)
http://s006.radikal.ru/i214/1005/25/f2c5373bd1ab.jpg
http://s61.radikal.ru/i173/1005/6b/7355c4615e4d.jpg
http://s44.radikal.ru/i103/1005/a4/f73ed124a114.jpg
http://i030.radikal.ru/1005/be/d82767e182b9.jpg
Программа (http://depositfiles.com/files/9eavz7wvx)
или
Тут (http://tor.sumy.ua/TSUMYMTEST.rar)

Исходники (delphi) (http://depositfiles.com/files/1cp0t9snm)
или
Тут (http://tor.sumy.ua/TSUMYMTESTSOURCE.rar)

Травников
04.05.2010, 20:34
BrutalSynonym

Простенькая программа синонимайзер.
Заменяет слова в тексте на их синонимы,если таковые находятся в словаре (прилагается).
В словаре записи вида: слово синоним1 синоним2 ... синонимN
Случайным образом выбирает по одному синониму к каждому слову.

http://img695.imageshack.us/img695/4850/74826476.png

Вставляете текст в верхнее текстовое поле
Нажимаете кнопку "Generate"
Получаете текст в нижнем текстовом поле

Качество замен зависит от словаря.
Словарь можно дополнять и изменять (к примеру использовать английский словарь синонимов), но файл с синонимами должен иметь название "synonym.txt"


Скачать BrutalSynonym (http://www.multiupload.com/ZU5HIKXULF)

vkhacker
10.05.2010, 13:59
DateChanger v0.1

Программа для изменения ДАТЫ СОЗДАНИЯ большого количества файлов. Позволяет изменять дату создания файлов в каталоге по указанной маске. Возможна лишь установка действительной даты, т.е. даты, которая уже наступила. Также программа изменяет дату EXIF и удаляет содержание других параметров EXIF у файлов типа JPEG и JPG (небольшая потеря качества).

http://blackxakep.ru/screenshots/scrsh2.png


Скачать DateChanger v0.1 (http://blackxakep.ru/upload/datechanger.exe)

greki_hoy
11.05.2010, 06:13
не то что бы полезная программа скорее сырье для изучения регулярных выражений
тем кто хочет поигратся с регулярными выражениями в ANSI С для компияции надо добавить библиотеку импорта glib.lib скачать версию для венды ну и поставить флаг компилировать как Си код без плюсов
пользоватся просто вводим регулярное выражение диск на котором искать файлы
перебирает все файлы на диске мапит и скармливает их глибовскому регекспу и выводит файлы
в которых найдено совпадение например найти файлы в которых есть мыльники [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4} или файлы с адресами проксей [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]{1,4} да или просто найти в каких файлах хранится твой пароль gj#@$hjkhkjh кому интересно велком http://www.regular-expressions.info/ работает довольно быстро так как файл мапится и тут же идет на парсинг в GRegex вообщем кто хочет изучить регекспы и пользоватся ими в ANSI C зе бест
да и к тому же часто помниш слово а найти файл не можеш виндовый поиск иногда в упор не находит строку в файле хотя она там есть это только у меня так ?

кому интересно зачем g_regex_match (regex, string, 0, &match_info); в SEH фрейм включено скажу дело в том чтоб не испортить файл он открывается с атрибутом PAGE_READONLY но не все файлы заканчиваются '\0' поэтому на 165 тыс файлов где то 18 нарушений доступа на эти случаи можно прикрутить когда поймали исключение
загрузить файл полность в память завершить его '\0' вручную и отдать на парсинг
это медленно поэтому я предпочел ловить исключения а когда поймал можно для него индивидуально и выделить память идеи насчет того что сделать защиту PAGE_READWRITE дописать '\0' и парсить не идут так как в момень парсинга могут прибить прогу файл останетя испорченным ну это так мысли может и можно еще как то сделать



#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <glib.h>


typedef void (*LPSEARCHFUNC)(LPCTSTR lpszFileName);
BOOL SearchFiles(
LPCTSTR lpszFileName,
LPSEARCHFUNC lpSearchFunc,
BOOL bInnerFolders );


char file[MAX_PATH];

BOOL SearchFiles(LPCTSTR lpszFileName, LPSEARCHFUNC lpSearchFunc, BOOL bInnerFolders)
{
LPTSTR part;
char tmp[MAX_PATH]; // временный массив
char name[MAX_PATH];

HANDLE hSearch = NULL;
WIN32_FIND_DATA wfd;
memset(&wfd, 0, sizeof(WIN32_FIND_DATA));

// сначало поиск внутри вложенных папках ...
if(bInnerFolders)
{
if(GetFullPathName(lpszFileName, MAX_PATH, tmp, &part) == 0) return FALSE;
strcpy(name, part);
strcpy(part, "*.*");

// если папки существуют, то делаем поиск
wfd.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY;
if (!((hSearch = FindFirstFile(tmp, &wfd)) == INVALID_HANDLE_VALUE))
do
{
// в каждой папке есть две папки с именами "." и ".."
// и эти папки мы не трогаем

// пропускаем папки "." и ".."
if (!strncmp(wfd.cFileName, ".", 1) || !strncmp(wfd.cFileName, "..", 2))
continue;

if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // если мы нашли папку
{
char next[MAX_PATH];
if(GetFullPathName(lpszFileName, MAX_PATH, next, &part) == 0) return FALSE;
strcpy(part, wfd.cFileName);
strcat(next, "\\");
strcat(next, name);

SearchFiles(next, lpSearchFunc, TRUE);
}
}
while (FindNextFile(hSearch, &wfd)); // ищем следующий файл

FindClose (hSearch); // заканчиваем поиск
}

if ((hSearch = FindFirstFile(lpszFileName, &wfd)) == INVALID_HANDLE_VALUE)
return TRUE; // в противном случае выходим
do
if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) // если мы нашли файл
{
if(GetFullPathName(lpszFileName, MAX_PATH, file, &part) == 0) return FALSE;
strcpy(part, wfd.cFileName);

lpSearchFunc(file);
}
while (FindNextFile(hSearch, &wfd)); // ищем следующий файл
FindClose (hSearch); // заканчиваем поиск

return TRUE;
}

int yes;
char entries;
int entriesf;
int failopen;
int all_files;
int except;

static void
print_ip(const gchar *string);

void __cdecl show_info()
{
int len, ret;
char *cv, *pfmt;
pfmt = strrchr(file, '\\');
if (!pfmt)
__asm int 3;
len = _scprintf("f %d s %d a %d x %d %s", failopen, yes, all_files, except, pfmt);
if (-1 == len)
__asm int 3;
cv = malloc(len + 1);
if (!cv)
__asm int 3;
ret = sprintf(cv, "f %d s %d a %d x %d %s", failopen, yes, all_files, except, pfmt);
if (-1 == ret)
__asm int 3;
ret = SetConsoleTitle(cv);
if (!ret)
__asm int 3;
free(cv);
}

void DoSomething(LPCTSTR name)
{
HANDLE hFile = INVALID_HANDLE_VALUE, hMap = NULL;
DWORD dwFileSize;
CHAR *base = NULL;
show_info(++all_files);
__try
{
hFile = CreateFile(name, GENERIC_READ,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
show_info(++failopen);
__leave;
}
dwFileSize = GetFileSize(hFile, NULL);
if (dwFileSize == INVALID_FILE_SIZE)
__leave;
hMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, dwFileSize, NULL);
if (!hMap)
__leave;
base = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, dwFileSize);
if (!base)
__leave;

print_ip(base);
}
__finally
{
if (base)
UnmapViewOfFile(base);
if (hMap)
CloseHandle(hMap);
if (hFile != INVALID_HANDLE_VALUE)
CloseHandle(hFile);
}
if (entriesf && entries == 'y')
{
puts(name);
entriesf ^= entriesf;
}
return;
}

#define _124KB 126976
static char regexp[_124KB];

static void
print_ip(const gchar *string)
{
GRegex *regex;
GMatchInfo *match_info;

regex = g_regex_new (regexp, 0, 0, NULL);
__try
{
g_regex_match (regex, string, 0, &match_info);
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
show_info(++except);
g_regex_unref(regex);
return;
}
while (g_match_info_matches (match_info))
{
gchar *word = g_match_info_fetch (match_info, 0);
g_print ("%s\n", word);
g_free (word);
g_match_info_next (match_info, NULL);
entriesf = 1;
show_info(++yes);
}
g_match_info_free (match_info);
g_regex_unref (regex);
}

int main(void)
{
printf("echo entries (y/n) -> ");
scanf("%c", &entries);
fflush(stdin);
printf("enter regexp -> ");
gets(regexp);
SearchFiles("C:\\*.*", DoSomething, TRUE);
}

<Cyber-punk>
31.05.2010, 17:44
Написал маленькую программку - отладчик VBS.
Версия пока бетта. Язык - ASM.

Скрин:

http://old.keepme.ru/upload/previews/2010/05/31/30ddffcb62781d8c96af72dd18846ba5.JPG (http://old.keepme.ru/upload/images/2010/05/31/30ddffcb62781d8c96af72dd18846ba5.JPG)

Скачать:

http://depositfiles.com/files/atf1irpqh

P.S. Если что не работает пишите.
З.Ы.Ы. http://www.virustotal.com/ru/analisis/db14d0f1d6b70286ed03590f02b07ff22cb51106288b95c3ce 66a082c5c8c8d0-1275307631