eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: CSRMO (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Программирование —› Определение внешнего IP
Посл.ответ Сообщение


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 27 февраля 2016 21:19 New!
Цитата · Личное сообщение · #1

Приветствую, уважаемые. Подскажите кто знает, че-то затупил.. Играюсь с 3g-модемом, пытаюсь организовать автоматический детект внешнего IP конкретного устройства. Все бы ничего, но при поднятом подключении в свойствах коннекта только локальный.. Как же внешний заполучить все-таки?

IPCONFIG:
PPP адаптер:

DNS-суффикс этого подключения . . :
Описание . . . . . . . . . . . . : WAN (PPP/SLIP) Interface
Физический адрес. . . . . . . . . : 00-00-00-00-00-00
Dhcp включен. . . . . . . . . . . : нет
IP-адрес . . . . . . . . . . . . : 10.142.XXX.XXX
Маска подсети . . . . . . . . . . : 255.255.255.255
Основной шлюз . . . . . . . . . . : 10.142.XXX.XXX
DNS-серверы . . . . . . . . . . . : 213.87.0.1
213.87.1.1
Основной WINS-сервер . . . . . . : 10.11.12.13
Дополнительный WINS-сервер. . . . : 10.11.12.14
NetBIOS через TCP/IP. . . . . . . : отключен

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 27 февраля 2016 21:36 New!
Цитата · Личное сообщение · #2

Code:
  1. curl https://api.ipify.org


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 27 февраля 2016 21:39 · Поправил: 27 февраля 2016 21:46 Rainbow New!
Цитата · Личное сообщение · #3

Программно, на базе api.. SetupApi никак не помогут ???


Ранг: 307.7 (мудрец)
Статус: Участник

Создано: 27 февраля 2016 22:40 · Поправил: 28 февраля 2016 02:08 mysterio New!
Цитата · Личное сообщение · #4

мОй_руки_и_внешнИй_АйПишНеГ_перед_едой.vbs
Code:
  1. Option Explicit
  2. Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
  3. http.Open "GET", "http://icanhazip.com/", False
  4. http.Send
  5. ' хотим консоль WScript.StdOut.Write http.responseText
  6. MsgBox http.responseText, vbOKOnly + vbInformation, "Внешний IP" ' а не хотим MessageBox ;)
  7. Set http = Nothing


>> И только ?
Хотели внешний IP - вон он (если инет конечно есть). Либо совет выше - curl/wget и любой аналогичный сайт что вернет наш IP (да хоть: http://yandex.com/internet).


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 27 февраля 2016 22:42 · Поправил: 27 февраля 2016 23:18 Rainbow New!
Цитата · Личное сообщение · #5

И только так ?


Ранг: 525.0 (!)
Статус: Участник
оптимист

Создано: 28 февраля 2016 02:05 New!
Цитата · Личное сообщение · #6

netstat ???

Ранг: 33.3 (посетитель)
Статус: Участник

Создано: 28 февраля 2016 02:42 New!
Цитата · Личное сообщение · #7

Traceroute?


Ранг: 325.0 (мудрец)
Статус: Участник
born to be evil

Создано: 28 февраля 2016 11:06 New!
Цитата · Личное сообщение · #8

Rainbow пишет:
И только так?

угум-с. вопрос - нафига это, если он будет все равно серый. а белых в 3G я чет не припоминаю


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 28 февраля 2016 11:14 New!
Цитата · Личное сообщение · #9

Спасибо конечно за варианты, это все интересно. Но, неужели после регистрации компа в сети (завершение подключения), система остается в неведениии, какой назначается адрес ? Быть может дров как-то повежливее попросить помочь ? Просто считаю, что получать внешний адрес от сторонних ресурсов это все равно что трусы через голову одевать... Я прибегну к этому способу, только если действительно больше нет воможности это сделать...


Ранг: 325.0 (мудрец)
Статус: Участник
born to be evil

Создано: 28 февраля 2016 11:18 · Поправил: 28 февраля 2016 11:20 ajax New!
Цитата · Личное сообщение · #10

Rainbow пишет:
система остается в неведениии, какой назначается адрес

[система] -> адрес внутренней сети -> [гейт/шлюз] -> внешний серый адрес -> сайт
как-то так. каким фигом она узнает внешку, без посылки данных сайту (который видит, кто к нему лезет) ?


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 28 февраля 2016 11:24 New!
Цитата · Личное сообщение · #11

ajax пишет:
как-то так. каким фигом она узнает внешку, без посылки данных сайту (который видит, кто к нему лезет) ?


Ну прежде чем до сайта дойти надо шлюз миновать..

| Сообщение посчитали полезным: Excelvrn


Ранг: 4.0 (гость)
Статус: Участник

Создано: 28 февраля 2016 11:40 New!
Цитата · Личное сообщение · #12

Да не сидит Rainbow на *NIX-ах!


Ранг: 1975.0 (!!!!)
Статус: Модератор
retired

Создано: 28 февраля 2016 11:43 New!
Цитата · Личное сообщение · #13

Шлюзов может быть и несколько. И даже если бы они и были обязаны перед тобой отчитываться, шлюзы ли они, и какой адрес тебе дают, это всё равно работа с сетью, а не с системой, и от работы с сайтом не отличается особо.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 28 февраля 2016 11:47 New!
Цитата · Личное сообщение · #14

Archer пишет:
И даже если бы они и были обязаны перед тобой отчитываться, шлюзы ли они, и какой адрес тебе дают, это всё равно работа с сетью, а не с системой


)))))))) Ну тогда кем он в пакет вкладывается ?


Ранг: 1975.0 (!!!!)
Статус: Модератор
retired

Создано: 28 февраля 2016 12:09 New!
Цитата · Личное сообщение · #15

Роутер заменяет по таблице твой адрес на свой внешний при прохождении через него пакета. При прохождении обратного пакета заменяет обратно. И?


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 28 февраля 2016 12:12 New!
Цитата · Личное сообщение · #16

Ну так че теперь? Это Private Key ? xD

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 28 февраля 2016 12:50 New!
Цитата · Личное сообщение · #17

Теперь вопрос: откуда винде знать, какой адрес был выставлен в пакете на последнем роутере в цепочке перед "выходом во внешнюю сеть" без посылки данных?


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 28 февраля 2016 12:53 New!
Цитата · Личное сообщение · #18

Kaimi пишет:
Теперь вопрос: откуда винде знать, какой адрес был выставлен в пакете на последнем роутере в цепочке перед "выходом во внешнюю сеть" без посылки данных?


Запрашивать при подключении.

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 28 февраля 2016 12:57 New!
Цитата · Личное сообщение · #19

Rainbow пишет:
Запрашивать при подключении.

Т.е. посылать запрос в сеть.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 28 февраля 2016 13:02 · Поправил: 28 февраля 2016 13:04 Rainbow New!
Цитата · Личное сообщение · #20

Kaimi пишет:
Т.е. посылать запрос в сеть.

Гениально ))))

P.S. Ты у своего шлюза, он у следущего и так далее. Но только при подключении. В активном состоянии данные будут актуальны. Ну а нет- значит нет. Поэтому и спрашиваю как у знатоков.


Ранг: 325.0 (мудрец)
Статус: Участник
born to be evil

Создано: 28 февраля 2016 13:08 New!
Цитата · Личное сообщение · #21

Rainbow
rtfm по сетям (nat, ip-маскарадинг и т.п). уже как бэ 4 чела сказали, что без вариантов


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 28 февраля 2016 13:08 · Поправил: 28 февраля 2016 13:15 Rainbow New!
Цитата · Личное сообщение · #22

Ну ок.


Ранг: 1975.0 (!!!!)
Статус: Модератор
retired

Создано: 28 февраля 2016 16:33 New!
Цитата · Личное сообщение · #23

Rainbow пишет:
Но только при подключении. В активном состоянии данные будут актуальны.

Неага, ничего не мешает сети перестроиться, изменив твой внешний адрес, а твой комп этого и не заметит. Да, если TCP-коннекты куда-то висят, могут и отвалиться, хотя могут и нет, но общий статус коннекта компа к интернету всяко не изменится.

Ранг: 370.2 (мудрец)
Статус: Участник

Создано: 28 февраля 2016 20:32 New!
Цитата · Личное сообщение · #24

Внешний IP определяется только через внешний сайт и никак иначе.

Ранг: 3.4 (гость)
Статус: Участник

Создано: 4 марта 2016 04:13 New!
Цитата · Личное сообщение · #25

сорри за яп)
Code:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls;
  8.  
  9. const
  10.   MAXIMUM_ADAPTER_ADDRESS_LENGTH = 8;
  11.   MAXIMUM_ADAPTER_DESCRIPTION_LENGTH = 128;
  12.   MAXIMUM_ADAPTER_NAME_LENGTH = 256;
  13.  
  14. type
  15.   TForm1 = class(TForm)
  16.     Button1: TButton;
  17.     Memo1: TMemo;
  18.     procedure Button1Click(Sender: TObject);
  19.   private
  20.     { Private declarations }
  21.   public
  22.     { Public declarations }
  23.   end;
  24.  
  25.   TIP_ADDRESS_STRING = packed record
  26.     _String: Array[0..15] of Char;
  27.   end;
  28.  
  29.   TIP_MASK_STRING = TIP_ADDRESS_STRING;
  30.   PIP_MASK_STRING = ^TIP_MASK_STRING;
  31.  
  32.   PIP_ADDR_STRING = ^TIP_ADDR_STRING;
  33.   TIP_ADDR_STRING = packed record
  34.      Next: PIP_ADDR_STRING;
  35.      IpAddress: TIP_ADDRESS_STRING;
  36.      IpMask: TIP_MASK_STRING;
  37.      Context: Cardinal;
  38.   end;
  39.  
  40.   PIP_ADAPTER_INFO = ^TIP_ADAPTER_INFO;
  41.   TIP_ADAPTER_INFO = packed record
  42.     Next: PIP_ADAPTER_INFO;
  43.     ComboIndex: Cardinal;
  44.     AdapterName: Array[0..MAXIMUM_ADAPTER_NAME_LENGTH + 3] of Char;
  45.     Description: Array[0..MAXIMUM_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;
  46.     AddressLength: Cardinal;
  47.     Address: Array[0..MAXIMUM_ADAPTER_ADDRESS_LENGTH - 1] of Byte;
  48.     Index: Cardinal;
  49.     _Type: Cardinal;
  50.     DHCPEnabled: Cardinal;
  51.     CurrentIpAddress: PIP_ADDR_STRING;
  52.     IpAddressList: TIP_ADDR_STRING;
  53.     GatewayList: TIP_ADDR_STRING;
  54.     DHCPServer: TIP_ADDR_STRING;
  55.     HaveWins: Boolean;
  56.     PrimaryWinsServer: TIP_ADDR_STRING;
  57.     SecondaryWinsServer: TIP_ADDR_STRING;
  58.     LeaseObtained: Integer;
  59.     LeaseExpires: Integer;
  60.   end;
  61.  
  62. var
  63.   Form1: TForm1;
  64.  
  65.   function GetAdaptersInfo(IP_ADAPTER_INFO: PIP_ADAPTER_INFO; var OutputBufferLength: Cardinal): Cardinal; stdcall; external 'iphlpapi.dll';
  66.  
  67. implementation
  68.  
  69. {$*.dfm}
  70.  
  71. procedure TForm1.Button1Click(Sender: TObject);
  72. var
  73.   InterfaceInfo: PIP_ADAPTER_INFO;
  74.   IAS: PIP_ADDR_STRING;
  75.   Len: Cardinal;
  76. begin
  77.   if GetAdaptersInfo(nil, Len) = ERROR_BUFFER_OVERFLOW then
  78.     begin
  79.       GetMem(InterfaceInfo, Len);
  80.         try
  81.           if GetAdaptersInfo(InterfaceInfo, Len) = ERROR_SUCCESS then
  82.             repeat
  83.               IAS := @InterfaceInfo.IpAddressList;
  84.                 repeat
  85.                   Memo1.Lines.Add(Format('%s - [%s]', [IAS^.IpAddress._String, InterfaceInfo.Description]));
  86.                   IAS := IAS.Next;
  87.                 until IAS = nil;
  88.               InterfaceInfo := InterfaceInfo.Next;
  89.             until InterfaceInfo = nil;
  90.         finally
  91.           FreeMem(InterfaceInfo);
  92.         end;
  93.     end;
  94. end;
  95.  
  96. end.

| Сообщение посчитали полезным: Rainbow


Ранг: 231.8 (наставник)
Статус: Участник

Создано: 4 марта 2016 06:32 New!
Цитата · Личное сообщение · #26

dex015, ваш кодес сработает только в том случае, если у вас подключение идет через какой-ниубдь PPPoE, бриджом, ну или Dial-up. Бред короче.
 eXeL@B —› Программирование —› Определение внешнего IP

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS