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

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by De-visible, 9 Jul 2008.

  1. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Здесь постим свои небольшие реализации, (повторяю СВОИ!)
    -----------

    Интересные и действительно нужные проекты будут поощраться...
    -----------
    Также можете оставлять просьбы на реализацию той или иной проги. =)
     
    #1 De-visible, 9 Jul 2008
    Last edited: 2 Dec 2008
    perexvat, rudvil, T-Rey and 5 others like this.
  2. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    Аплоад файла по HTTP протоколу.

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

    SendFileToServer.cpp:
    Code:
    // 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:
    Code:
    <?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 запросов"
     
    kapiton182, jawbreaker and De-visible like this.
  3. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    FastLauncher
    прога добавляет ярлык в %systemDirectory% что позволяет запускать ее из коммандной строки, либо Win+R/Диспетчер задач -> Новая задача

    http://slil.ru/25970580

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

    PHP:
    program FL;

    uses
      Windows
    ShlObjActiveXSysUtils;

    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;
      
    hWndOwnerHWND;
      
    hInstanceHINST;
      
    lpstrFilterPAnsiChar;
      
    lpstrCustomFilterPAnsiChar;
      
    nMaxCustFilterDWORD;
      
    nFilterIndexDWORD;
      
    lpstrFilePAnsiChar;
      
    nMaxFileDWORD;
      
    lpstrFileTitlePAnsiChar;
      
    nMaxFileTitleDWORD;
      
    lpstrInitialDirPAnsiChar;
      
    lpstrTitlePAnsiChar;
      
    FlagsDWORD;
      
    nFileOffsetWord;
      
    nFileExtensionWord;
      
    lpstrDefExtPAnsiChar;
      
    lCustDataLPARAM;
      
    lpfnHook: function(Wnd:HWNDMsg:UINTwParam:WPARAMlParam:LPARAM):UINT stdcall;
      
    lpTemplateNamePAnsiChar;
    end;
      
    TOpenFilename TOpenFilenameA;

    function 
    GetOpenFileName(var OpenFileTOpenFilename): BOOL;
      
    stdcallexternal 'comdlg32.dll' name 'GetOpenFileNameA';

    {
    $R dialog.res}

    var
      
    TheFilestring;
      
    buf: array [0..MAXSIZE-1of Char;
      
    ofnTOpenFileName;

    procedure OleCheck(ResultHResult);
    begin
      
    if Result 0 then Exit;
    end;

    function 
    CreateComObject(const ClassIDTGUID): IUnknown;
    begin
      OleCheck
    (CoCreateInstance(ClassIDnilCLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVERIUnknownResult));
    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(ofnthen TheFile:=ofn.lpstrFile;
    end;

    function 
    GetSysDirstring;
    var
      
    buf: array [0..MAX_PATHof Char;
    begin
      GetSystemDirectory
    (bufMAX_PATH);
      
    Result:=buf;
    end;

    function 
    Install(_filestring): 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), 1Length(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.
     
    #3 W!z@rD, 10 Jul 2008
    Last edited: 18 Feb 2010
    2 people like this.
  4. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    Файл лоадер

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

    DownloadFile.cpp:
    Code:
    // 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);
    }
     
    #4 SlyBit, 11 Jul 2008
    Last edited: 11 Jul 2008
    1 person likes this.
  5. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    POST Encode for DELPHI coding

    [Зачем?]

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


    [Скрин]

    [​IMG]


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


    Code:
    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:

    Code:
    '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:]
    Заядлых критиков прошу обойти этот пост, так как создавалось это все только для упрощения рутиной работы:).
     
    #5 De-visible, 2 Dec 2008
    Last edited: 2 Dec 2008
    3 people like this.
  6. WAR!9G

    WAR!9G Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    112
    Likes Received:
    89
    Reputations:
    1
    Мass Wand

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

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

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

    Code:
    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.
    
    
    
     
    #6 WAR!9G, 4 Dec 2008
    Last edited: 4 Dec 2008
    1 person likes this.
  7. RaX

    RaX Member

    Joined:
    7 Jun 2008
    Messages:
    34
    Likes Received:
    34
    Reputations:
    0
    Отправка сообщения с авторизацией

    Отправка e-mail с авторизацией


    Т.к часто возникает такая проблема, вот код для Delphi в консоли. Программа читает текст из файла message.txt и отправляет его на [email protected] с ящика [email protected] (укажите свой).
    Code:
    {(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: [email protected]');
    
     // От
     getstr(sServerListen);
     // Кому
     sendstr(sServerListen,'RCPT TO:<[email protected]>');
     getstr(sServerListen);
     // Начало отправки данных сообщения
     sendstr(sServerListen,'DATA');
     sleep(1000);
     getstr(sServerListen);
    
    
     // От
     sendstr(sServerListen,'From: [email protected]');
     // Кому
     sendstr(sServerListen,'To:<[email protected]>');
     // Кодировка, в данном случае стоит отправка с 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.
    
     
    #7 RaX, 16 Dec 2008
    Last edited: 18 Jan 2010
    2 people like this.
  8. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    icmprange
    Утилита предназначена для посылки ICMP-запросов диапазону IP-адресов.

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

    исходные коды и исполняемые файлы в этой теме
     
    #8 bons, 23 Dec 2008
    Last edited: 23 Dec 2008
  9. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    DNS Lookup

    Программка для поиска имён в DNS:

    [​IMG]

    С# код:

    PHP:

    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 senderEventArgs 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'шник
    Скачать исходники
     
    #9 jawbreaker, 23 Dec 2008
    Last edited: 23 Dec 2008
  10. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    может будет кому нибудь интересно.
    дабл клик по драйверу чтобы посмотреть адреса обработчиков irp и куда они смотрят.
    [​IMG]
    [​IMG]
    download
     
    3 people like this.
  11. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    Длинная арифметика
    программа для считивания, вывода и сравнения двух длинних положительных числел

    pascal:
    Code:
    program crypt_lab1;
    
    uses
       crt;
    
    const
       MaxDig = 1000;  { максимальное количество цифр }
       Osn    = 10000; { основание нашей системы счисления }
    
    type
       TLong = array[0..MaxDig] of integer;
    
     [color=white]{ считивание длинного числа с файла }[/color]
     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;
    
    
     [color=white]{ вывод длинного числа на экран из массива}[/color]
     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;
    
      [color=white]{ сравнения двох дл. чисел: a == b }[/color]
     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;
    
      [color=white]{ сравнения двох дл. чисел: a > b }[/color]
     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;
    
      [color=white]{ сравнения двох дл. чисел: a > b }[/color]
     function Less(a,b :TLong):boolean;
     var i :integer;
     begin
          Less := Not(More(a, b) Or Eq(a, b))
     end;
    
      [color=white]{ сравнения двох дл. чисел: a >= b }[/color]
     function More_Eq(a, b : TLong) : boolean;
     begin
    		More_Eq := More(a, b) Or Eq(a, b)
     end;
    
      [color=white]{ сравнения двох дл. чисел: a <= b }[/color]
     function Less_Eq(a, b : TLong) : boolean;
     begin
    	Less_Eq := Not More(a, b)
     end;
    
     [color=white]{ сложения двух длинних чисел: a + b }[/color]
     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
     
    1 person likes this.
  12. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    Парсинг гугла

    Парсинг гугла на ссылки.
    Используемый язык - C#

    Пример использования:
    PHP:
     void Button1Click(object senderEventArgs e
            { 
                var 
    = 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 += "\r\n"
                } 
            } 
    Подробнее (описание методов и полей) - https://forum.antichat.ru/showthread.php?p=1118071
    пример + класс http://www.sendspace.com/file/jbwxtf
     
    1 person likes this.
  13. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    HQ9+ интерпретатор:

    Code:
    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.
     
    #13 eLWAux, 12 Mar 2009
    Last edited: 12 Mar 2009
  14. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    http://ru.wikipedia.org/wiki/HQ9%2B
     
  15. Maccer

    Maccer New Member

    Joined:
    19 Mar 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Не знаю есть ли аналоги, писал для своих нужд, может кому еще пригодится.
    Программа составляет список всех айпишников из списка диапазонов.

    Скачать
    Исходник (Visual Studio 2008)

    Использование:
    Копируем, к примеру, албанские айпишники и сохраняем в source.txt (слово albania в списке проблем не создает)
    Запускаем программу, ждем пока появится надпись Complete и берем готовый список из result.txt
    (3ий Angry IP Scanner работает с такими списками)
     
  16. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Конвертация в Delphi

    Code:
    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 и исходный код.

    Скачать
     
  17. laedafess

    laedafess Member

    Joined:
    11 Feb 2009
    Messages:
    70
    Likes Received:
    29
    Reputations:
    15
    Можете мне накодить програмку, консольную в которую пишешь приложение и она его сворачивает..
    ну например открыто несколько блокнотов, вводим
    Code:
    program.exe notepad
    и все блокноты сворачиваются. Заранее спасибо.
     
  18. KHR3b

    KHR3b New Member

    Joined:
    19 Sep 2008
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Народ, у кого есть исходники скана диапазона ip на определённый порт, или несколько на Visual cpp
    зарание благодарен
     
  19. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    смотри nmap там все виды сканов есть)
     
  20. KHR3b

    KHR3b New Member

    Joined:
    19 Sep 2008
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Я там годами разбираться буду (((
     
Loading...
Similar Threads - Полезные программы собственные
  1. Peja
    Replies:
    0
    Views:
    2,515