Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Вниз

Как программно изменить IP-адрес   Найти похожие ветки 

 
GoldMedium   (2003-06-15 17:04) [0]

Необходимо программно изменять IP-адрес на компьютере при работе программы.
Пробововал менять IP через реестр (заменил везде, где встречал). При просмотре в свойствах TCP/IP адрес действительно после этого становился новый, но фактически (при просмотре, например, в ipconfig) оставался старым. Может где еще что-то подправить нужно или есть другой способ?
Надеюсь на вашу помощь.

P.S. Признаюсь, уже порядком отчаялся найти толковое решение - как узнать айпишник - никаких проблем, как заменить на другой - тишина :( Может здесь кто подскажет


 
mef   (2003-06-16 19:30) [1]

если я правильно помню то только через прокси-сервер,а по другому вроде никак такое только в Linux"е можно


 
GoldMedium   (2003-06-16 20:22) [2]

mef
:( А через прокси это как? Хоть в каком направлении копать?


 
k$v   (2003-06-16 20:38) [3]

То, что говорит mef очевидно не подходит т.к. proxy server это отдельная программа находящаяся на локальном компьютере или в сети на другом... и она не меняет адреса в прямом понимании...


 
digester   (2003-06-16 23:48) [4]

Реестр тут не при чём. :)
Реально изменить ip адрес вполне возможно, есть исходники в интернете структуры ip пакета. В этой структуре нужно поменять адрес с которого поступает данный пакет.
Логика такая: посылать пакеты с ложного IP - РЕАЛЬНО, Но! ответ на эти пакеты - ответ на запрос, от удалённой машины получать нельзя, они уйдут на тот ip которым подменили реальный, т.е. ложный. Т.е. в данном случае мы имеем дело только с посылкой пакетов ТУДА но НЕОБРАТОНО!
В интернете лежит куча исходников по этому делу, они могут быть встроены в различные expoits. Только небольшая проблемка - большинство, а точнее все, которые я встречал и которыми пользовался были написаны на cpp. Так что дерзай!
Да, и ещё, подмена ip адреса наз-ся "Spoofing" в простонародии



 
GoldMedium   (2003-06-17 11:55) [5]

<k$v>
похоже действительно не подходит :(

<digester>
Спасибо за комментарии, но мне на самом деле необходимо не ПОДменять IP-адрес, а просто вместо 1.1.1.1 на текущей машине поставить 2.2.2.2 (обучить каждого пользователя делать это вручную нет никакой возможности).

Просто при установленном 1.1.1.1 - пользователям доступна работа только в локальной сети, а при 2.2.2.2 - только в интернет.
Неужели нет никакого способа заменить ручное изменение текущего IP-адреса на программный?
Кстати, с этим вопросом сталкивался не я один, а ответ так и не был найден :(
Help!


 
MikeP   (2003-06-17 12:10) [6]

ipconfig /renew попробуй


 
GoldMedium   (2003-06-17 15:34) [7]

MikeP
Попробовал - не работает :(
Но удалось найти другой способ заставить винду обновить информацию о IP-адресе - если отключить "Подключение по локальной сети" (Настройки - Сеть и удаленнный доступ к сети), а затем его снова включить - обновление происходит.

Осталось только найти способ программно отключать/включать подключение по локальной сети :)

Может тут кто чего подскажет? Должно же быть какое-то решение


 
GoldMedium   (2003-06-17 20:41) [8]

Может быть кто-то знает, как переинициализировать сетевое окружение?
Не проходите мимо, плиз


 
Malder   (2003-06-17 21:34) [9]

Исходя из принципов работы протокола TCP/IP - это конечно, возможно. Особенно в одноранговой сети, где любой компьютер может себе присвоить хоть 10 адресов. Но реестр тут не поможет. Тут должна быть соответствующая функция в windows, которой, по моему, нет. или обман windows, что чревато. Так чт видимо никак.

Единственное, что иногда советуют - поменять IP адрес, потом програмно удалить протокол TCP/IP и затем снова его добавить. Вероятно, должна произойти переинициализация, но я так не пробовал. И вероятно способ для w9x


 
GoldMedium   (2003-06-18 15:16) [10]

Malder
При разрыве подключения по локальной сети (удалять протокол TCP/IP не пробовал, да и аналогичная задача, в общем-то)переинициализация действительно происходит.
Это уже доказано.
Загвоздка лишь в "самой малости" - как сделать это программно.
Думаю, это возможно, но не знаю где копать.

По-прежнему очень требуется help.


 
Polevi   (2003-06-18 17:52) [11]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/ip_helper_functions.asp


 
Andrey Klimov   (2003-06-18 18:10) [12]

Копать надо NetApi32

NetServerComputerNameDel Disconnects each network transport protocol from an emulated server name set by a previous call to the NetServerComputerNameAdd function.


The NetServerComputerNameDel function causes the specified server to cease supporting the emulated server name set by a previous call to the NetServerComputerNameAdd function. The function does this by unbinding network transports from the emulated name.

Security Requirements
Only members of the Administrators or Account Operators local group can successfully execute the NetServerComputerNameDel function.

NET_API_STATUS NetServerComputerNameDel(
LPWSTR ServerName,
LPWSTR EmulatedServerName
);
Parameters
ServerName
[in] Pointer to a null-terminated Unicode character string that specifies the name of the remote server on which the function is to execute. The string must begin with \\. If this parameter is NULL, the local computer is used.
EmulatedServerName
[in] Pointer to a null-terminated character string that contains the emulated name the server should stop supporting. The server continues to support all other server names it was supporting.
Return Values
If the function succeeds, the return value is NERR_Success.

If the function fails, the return value can be one of the following error codes.

Value Meaning
ERROR_ACCESS_DENIED The user does not have access to the requested information.
ERROR_INVALID_PARAMETER The specified parameter is invalid.
ERROR_NOT_ENOUGH_MEMORY Insufficient memory is available.
NERR_NetNameNotFound The share name does not exist.


Requirements
Windows NT/2000: Requires Windows NT 4.0 or later.
Windows 95/98: Unsupported.
Header: Declared in Lmserver.h; include Lm.h.
Library: Use Netapi32.lib.



 
Andrey Klimov   (2003-06-18 18:11) [13]

О да, Polevi © прав больше чем я.


 
Andrey Klimov   (2003-06-18 18:17) [14]

Реализации для Дельфи найдешь здесь:

http://members.chello.nl/m.vanbrakel2/
http://www.delphi-jedi.org/Jedi:APILIBRARY:421962
ftp://delphi-jedi.org/api/IPHlpAPI.zip


 
GoldMedium   (2003-06-18 22:52) [15]

Polevi, Andrey Klimov
Йеес!!!!
Это именно то, что нужно. И без всякого реестра.
Причем указанные функции дают доступ к большому количеству других сетевых параметров и настроек.

Огромное спасибо, вы меня здорово выручили :))

Вопрос исчерпан



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-81633
sergg
2003-08-12 17:47
2003.08.25
Определение является ли строка числом


14-81956
sheff
2003-08-06 17:56
2003.08.25
как настроить TCP/IP под Win98?


3-81543
stud
2003-07-30 16:29
2003.08.25
sql - запрос


1-81839
Narmo
2003-08-13 12:24
2003.08.25
ProgressBar


14-81947
Silentor
2003-08-06 20:32
2003.08.25
Разработка клиент-серверных игрушек





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский