Здесь постим свои небольшие реализации, (повторяю СВОИ!) ----------- Интересные и действительно нужные проекты будут поощраться... ----------- Также можете оставлять просьбы на реализацию той или иной проги. =)
Аплоад файла по 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 запросов"
FastLauncher прога добавляет ярлык в %systemDirectory% что позволяет запускать ее из коммандной строки, либо Win+R/Диспетчер задач -> Новая задача http://slil.ru/25970580 Скомпилированна в Delphi7. PHP: 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.
Файл лоадер Представляю вашему вниманию исходный текст простенького лоадера файлов. Толком не тестировал, багрепорт и замечания пожалуйста в ПМ. 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); }
POST Encode for DELPHI coding [Зачем?] За пару минут накодил эту программулину, зачем? Да затем, что она облегчает вставку запросов в код программы, кто занимался сетевым программированием на DELPHI (WinSock) думаю поймут, что это неудобно и иной раз просто бесит делать эту работу в ручную Хотя кому как), опубликую может кому понадобиться... [Скрин] [Результаты работы] 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:] Заядлых критиков прошу обойти этот пост, так как создавалось это все только для упрощения рутиной работы.
Мass Wand Программка из этой же серии - для упрощения рутиной работы. По долгу службы часто приходится вспоминать пароли от Оперы, читай заниматся дешифрованием wand-файлов c расширением .dat И всё ничего, если файл один-два, а если сотня? А ещё лучше если надо осуществить парсинг информации всех дешифрованных файлов. Тут то на помощь и приходит 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.
Отправка сообщения с авторизацией Отправка 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.
icmprange Утилита предназначена для посылки ICMP-запросов диапазону IP-адресов. mbrscan Утилита читает структуры MBR жестких дисков локального компьютера. исходные коды и исполняемые файлы в этой теме
DNS Lookup Программка для поиска имён в DNS: С# код: 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 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'шник Скачать исходники
может будет кому нибудь интересно. дабл клик по драйверу чтобы посмотреть адреса обработчиков irp и куда они смотрят. download
Длинная арифметика программа для считивания, вывода и сравнения двух длинних положительных числел 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
Парсинг гугла Парсинг гугла на ссылки. Используемый язык - C# Пример использования: PHP: 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
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.
Не знаю есть ли аналоги, писал для своих нужд, может кому еще пригодится. Программа составляет список всех айпишников из списка диапазонов. Скачать Исходник (Visual Studio 2008) Использование: Копируем, к примеру, албанские айпишники и сохраняем в source.txt (слово albania в списке проблем не создает) Запускаем программу, ждем пока появится надпись Complete и берем готовый список из result.txt (3ий Angry IP Scanner работает с такими списками)
Конвертация в 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 и исходный код. Скачать
Можете мне накодить програмку, консольную в которую пишешь приложение и она его сворачивает.. ну например открыто несколько блокнотов, вводим Code: program.exe notepad и все блокноты сворачиваются. Заранее спасибо.
Народ, у кого есть исходники скана диапазона ip на определённый порт, или несколько на Visual cpp зарание благодарен