Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
C++: как определить свой IP, как получить имена всех дисков. |

29.10.2008, 16:35
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме: 146826
Репутация:
17
|
|
C++: как определить свой IP, как получить имена всех дисков.
Кожу я на С++, хочу написать своего мини-трояна, появилось пару вопросов:
1. Как получить свой IP.
2. Как можно получить имена всех подключенных дисков.
Система Windows.
Помогите пожалуйста.
---
И еще вспомнил:
3. Как удалить ключ реестра.
Последний раз редактировалось agrofyl2; 29.10.2008 в 17:00..
|
|
|

29.10.2008, 17:13
|
|
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме: 800727
Репутация:
83
|
|
MSDN
|
|
|

29.10.2008, 17:21
|
|
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме: 86268
Репутация:
84
|
|
Даю на делфи, переписать на C++, пару минут
Определение ip
PHP код:
uses winsock
function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] of Char;
begin
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then begin
if GetHostName(@Buf, 128) = 0 then begin
P := GetHostByName(@Buf);
if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
Список дисков
PHP код:
function DiskInDrive(const Drive:char):Boolean;
var
DrvNum:byte;
EMode:Word;
begin
result:=false;
DrvNum:=ord(Drive);
if DrvNum >= ord('a') then
dec(DrvNum, $20);
EMode:=SetErrorMode(SEM_FAILCRITICALERRORS);
try
if DiskSize(DrvNum - $40) <> -1 then
result:=true
else
messagebeep(0);
finally
SetErrorMode(EMode);
end;
end;
var Alfavit:string[26]='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
AlfavitCount:integer;
DiskList: TStringList;
begin
DiskList:=TStringList.Create;
for AlfavitCount:=0 to 25 do
begin
if DiskInDrive(Alfavit[AlfavitCount]) then DiskList.Add(Alfavit[AlfavitCount]);
end;
DiskList.Free;
end;
В списке DiskList список дисков.
Если сам переводить не умеешь попроси кого-нибудь.
Да и чуть не забыл когда будешь писать воспользуйся тремя китами парадигмы ООП, это очень важно,
удачи тебе рукодельник.
|
|
|

29.10.2008, 20:12
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме: 146826
Репутация:
17
|
|
o_OBallers, спасибо, имена дисков получил(примерно так же).
Остальное тоже покопаюсь найду
|
|
|

29.10.2008, 21:39
|
|
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме: 3371897
Репутация:
1462
|
|
Сообщение от agrofyl2
3. Как удалить ключ реестра.
Код:
Функция RegDeleteKey удаляет указанный ключ. Эта функция не может удалить ключ, которяй является подключем.
LONG RegDeleteKey(
HKEY hKey, // дескриптор открытого окна
LPCTSTR lpSubKey // адрес имени подключа на удаление
);
Параметры:
hKey Идентифицирует уже открытый ключ или один из предопределенных дескрипторов:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
Ключ, указанный в параметре lpSubKey должен быть подключем ключа, указанного в hKey.
lpSubKey Адрес нульзаканчивающейся строки, указывающей имя ключа на удаление. Этот параметр не может быть NULL, и указанный ключ не должен иметь подключей.
Возвращаемые значения:
Если функция успешна, возвращается значение ERROR_SUCCESS.
Header Declared in Winreg.h; include Windows.h.
Library Use Advapi32.lib.
© msdn
|
|
|

04.11.2008, 13:25
|
|
Новичок
Регистрация: 03.11.2008
Сообщений: 5
Провел на форуме: 69800
Репутация:
8
|
|
MSDN => функция GetLogicalDrives.
|
|
|

14.11.2008, 00:45
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 79
Провел на форуме: 272452
Репутация:
10
|
|
Сообщение от agrofyl2
Кожу я на С++, хочу написать своего мини-трояна, появилось пару вопросов:
1. Как получить свой IP.
2. Как можно получить имена всех подключенных дисков.
Система Windows.
Помогите пожалуйста.
---
И еще вспомнил:
3. Как удалить ключ реестра.
Код:
/* Заголовочный файл winsock2.h используеться для
* Виндовс систем, на Линукс дистрибутивах
* используют заголовочные файлы
* -> <arpa/net.h>
* -> <netinet/in.h>
* -> <sys/socket.h>
*
*/
#include <winsock2.h>
#include <stdio.h>
int main(void)
{
/* WSADATA структура для содержании информации
* о winsock,используеться только для виндовс */
WSADATA wsd;
struct hostent *host;
struct in_addr addr;
char name[32];
unsigned int buffsize = strlen(name);
/* Для того чтобы работать с winsock ты должен
* ее загрузить с помощью функции WSAStartup() */
if(WSAStartup(MAKEWORD(2,2),&wsd) == 0)
{
GetComputerNameA(name,&buffsize);
host = gethostbyname(name);
if(host != NULL)
{
memcpy(&addr,host->h_addr_list[0],sizeof(host->h_addr_list[0]));
printf("Your IP address is %s\n",inet_ntoa(addr));
}
}
}
Вот исходной код написанный на C,должен работать в любом C++ компиляторе,в Microsoft Visual C++ приходиться подключить библиотеку ws2_32.lib,хотя название этой библиотеки точно не помню.
|
|
|

02.02.2009, 20:27
|
|
Новичок
Регистрация: 20.08.2005
Сообщений: 14
Провел на форуме: 67271
Репутация:
0
|
|
Скомпилил я этот код,
uses winsock
function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] of Char;
begin
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then begin
if GetHostName(@Buf, 128) = 0 then begin
P := GetHostByName(@Buf);
if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
появился екзешник, при запуске окошко мелькнуло и все. Подскажите как работает эта прога?
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|