12 часов убитого об стену времени не дали ничего
Просьба посоветовать...
Как можно определить мак адрес подключенных удаленных машин к серверу средствами java?
Что бы была возможность отслеживать конкретных пользователей не только по айпи. Согласен мак тоже не ахти что, но другого нету.
Постоянных соединений много(тысячи), сервер один.
Вот два варианта. Оба неработают, даже у сетевого интерфейса — нулл.
public String getHWID()
{
String HWIDD = "";
try
{
String address = getConnection().getSocket().getInetAddress().getHostName();
if (address == null) return HWIDD;
NetworkInterface ni = NetworkInterface.getByName(address);
if (ni != null) { byte[] mac = ni.getHardwareAddress(); if (mac != null) { HWIDD = Arrays.toString(mac); return HWIDD;} }
Здравствуйте, java_yyyka, Вы писали:
_>12 часов убитого об стену времени не дали ничего _>Просьба посоветовать... _>Как можно определить мак адрес подключенных удаленных машин к серверу средствами java? _>Что бы была возможность отслеживать конкретных пользователей не только по айпи. Согласен мак тоже не ахти что, но другого нету. _>Постоянных соединений много(тысячи), сервер один.
если речь не про локальную подсеть, то никак.
Здравствуйте, java_yyyka, Вы писали:
_>12 часов убитого об стену времени не дали ничего
если вы автор клиентского ПО, то можете сделать соотв интерфейс, ну или SNMP agent в ОС поднять(но это через голый интернет не кошерно, лучше сначала VPN)
Здравствуйте, java_yyyka, Вы писали:
_>Как можно определить мак адрес подключенных удаленных машин к серверу средствами java? _>Что бы была возможность отслеживать конкретных пользователей не только по айпи. Согласен мак тоже не ахти что, но другого нету.
как тут уже сказали, более-менее возможно (но, скорее всего, запуском cmd-line утилит, а не удобными java-объектами стандартной библиотеки) только в пределах своей подсети.
в остальных случаях почти всегда ответ "не выйдет"
_>Просьба посоветовать...
затея в том, что mac подделывается, поэтому не является уникальным. потом, емнип, для некоторых протоколов его может просто не быть.
надо искать в принципе другой подход.
так что, вопрос: "Чего же на самом деле надо добиться?"
Re[2]: Как получить мак адрес удаленного компьютера?
Здравствуйте, C0s, Вы писали:
C0s>Здравствуйте, java_yyyka, Вы писали:
_>>Как можно определить мак адрес подключенных удаленных машин к серверу средствами java? _>>Что бы была возможность отслеживать конкретных пользователей не только по айпи. Согласен мак тоже не ахти что, но другого нету.
C0s>как тут уже сказали, более-менее возможно (но, скорее всего, запуском cmd-line утилит, а не удобными java-объектами стандартной библиотеки) только в пределах своей подсети. C0s>в остальных случаях почти всегда ответ "не выйдет"
_>>Просьба посоветовать...
C0s>затея в том, что mac подделывается, поэтому не является уникальным. потом, емнип, для некоторых протоколов его может просто не быть. C0s>надо искать в принципе другой подход. C0s>так что, вопрос: "Чего же на самом деле надо добиться?"
клиент не мы писали и исходников нет, хотя он и написан в достаточно открытой форме, но я в этом не силен.
сторонними скриптами — архи неудобно.
методами явы было бы проше всего, так как сервер написан на ней. — нужно лишь добавить несколько процедур — там уже слжная многопользовательская потоковая система реализована.
при каждом подключении юзера в бд записывается мак и аккаунт тем же REPLACE INTO.
таким образом когда возникнет необходимость, будет не такая уж и маленькая верятность найти аккаунты данного пользователя, сверить другие данные и определить что это именно он и смело банить.
p.s ОС — линукс.
задача: человек коннектится к серверу через клиент, у него есть аккаунты. что бы пресечь его злодеяния — нужно вычислить его аккаунты. так как нарушает правила он с аккаунтов-твинков, а не с оснвных, что бы не попасть в бан. на данный момент возможно только сами понимаете методом запросов с выборкой по айпи, и поиском конкретного значения по базе, например по переданному с одного аккаунта на другой одного и того же id.
Re[2]: Как получить мак адрес удаленного компьютера?
То есть нужно иметь максимум идентификационных данных.
Учитывая обстоятельства — кроме айпи насклько я понимаю остается только цеплятся за мак. Но и он не определяется. Все гуглы яндексы пересмотрел, ничего на эту тему нет, вот что и удивительно.
Здравствуйте, java_yyyka, Вы писали:
_>То есть нужно иметь максимум идентификационных данных. _>Учитывая обстоятельства — кроме айпи насклько я понимаю остается только цеплятся за мак. Но и он не определяется. Все гуглы яндексы пересмотрел, ничего на эту тему нет, вот что и удивительно.
Стоило все жа разобраться с тем что такое MAC Address и какова его роль в TCP/IP сетях. Чтобы потом не делать себе невыполнимых ТЗ.
Re[3]: Как получить мак адрес удаленного компьютера?
Здравствуйте, java_yyyka, Вы писали:
_>То есть нужно иметь максимум идентификационных данных. _>Учитывая обстоятельства — кроме айпи насклько я понимаю остается только цеплятся за мак. Но и он не определяется. Все гуглы яндексы пересмотрел, ничего на эту тему нет, вот что и удивительно.
на эту тему в гугле полно информации, если не зацикливаться на джаве. но, в сущности, ответ уже дан: мак-адрес можно надёжно подцепить, только если клиент в той же подсети (как уже видно, не ваш случай).
полагаю, стоит рассмотреть вариант склонения к переходу на новую реализацию клиента, написанную вами, там уже можно будет что-то навернуть, хотя особо хитрые нарушители обойдут любой наворот, взломав протокол
Re[3]: Как получить мак адрес удаленного компьютера?
Здравствуйте, java_yyyka, Вы писали:
_>То есть нужно иметь максимум идентификационных данных. _>Учитывая обстоятельства — кроме айпи насклько я понимаю остается только цеплятся за мак. Но и он не определяется. Все гуглы яндексы пересмотрел, ничего на эту тему нет, вот что и удивительно.
Публичные компьютеры идут лесом в случае с MAC'ом?
Под публичными просьба понимать компьютер, на котором работают 2 и более человек.
В Вашем, если есть самописный клиент, случае лучше зашивать логику отсеивания фейков именно в клиент.
Здравствуйте, java_yyyka, Вы писали:
_>То есть нужно иметь максимум идентификационных данных. _>Учитывая обстоятельства — кроме айпи насклько я понимаю остается только цеплятся за мак. Но и он не определяется. Все гуглы яндексы пересмотрел, ничего на эту тему нет, вот что и удивительно.
Не привычный для меня форум, поэтому отвечаю одним сообщением на все.
1.речь идет не о http сервере.
2.клиент написан на с+ и движке UT, прицепить dllку я и сам могу, а вот написать её гораздо сложнее и что бы уж тогда она пересылала кей в общем протоколе(то есть просто добавить новый тип пакета). Вариант с клиентом к сожалению не подходит в том числе и из за того что я в этом не бум бум . Я бы мог заплатить, но тут очень много тонкостей. Например, если написать хорошую защиту — часть аудитории будет потеряна и соотвественно проект пойдет в миинус.
Если ява функциями по макам определение хоть с 60% вероятности, реализовать невозможно, да и не эффективно — тогда видимо тема неактуальна, вопрос был именно в определении юзера с определенной долей вероятности с серверной части на яве.
А в клиенте разумеется все просто — главное написать новую функцию или изменить существующую не требующуюся: Генерится по железу ключик при каждом коннекте и пересылается на сервер уже в зашифрованном виде с возможностью проверки валидности(хитрую контрольную сумму вставить в ключ), алгоритм обфуксирован, ломать его никто не будет,а если кто и сломает не критично, так как в паблик это не уйдет.
Спасибо всем за ответы! Я считал что мак определять на яве возможно(странно что наоброт, так как функция востребованная).
Средств для дополнительного уточнения что это тот самый юзер — предостаточно. В базе и логах очень много записей. Про айпи уже давно знают все юзеры и архиредко удается по айпи отследить.
Суть задачи не в 100% определении, достаточно и небольшого бонуса к возможности определения. Дальше уже подключается куча других зацепок для определения человекоаккаунта. вычислить конечный аккаунт можно бы было в 90% случаев что более чем достаточно и с 95% вероятностью, если бы мак давал хотя бы раз в 10 больший шанс чем динамический айпи, который разумеется всегда меняют.
Re[5]: Как получить мак адрес удаленного компьютера?
Здравствуйте, java_yyyka, Вы писали:
_>Спасибо всем за ответы! Я считал что мак определять на яве возможно(странно что наоброт, так как функция востребованная).
Вы C++ знаете, как я понял? Предлагаю на $100 поспорить, что вы до 10 января не напишите мне на C++ программу, которая определяет удаленный MAC клиента. То есть вы пишите сервер, я захожу на него через HTTP-протокол или telnet, вы мне выводите мой MAC.
Здравствуйте, LeonidV, Вы писали:
LV>Здравствуйте, java_yyyka, Вы писали:
_>>Спасибо всем за ответы! Я считал что мак определять на яве возможно(странно что наоброт, так как функция востребованная). LV>Вы C++ знаете, как я понял? Предлагаю на $100 поспорить, что вы до 10 января не напишите мне на C++ программу, которая определяет удаленный MAC клиента. То есть вы пишите сервер, я захожу на него через HTTP-протокол или telnet, вы мне выводите мой MAC.
слабо знаю.
я кажется ясно дал понять что говорил не про сервер а про прицепление дллки и желательно зашифрованной той же темидой в клиентсую часть. вот её уже можно будет обмануть только специалисту а таких нет в той сфере. либо это будет дорого.
Re[7]: Как получить мак адрес удаленного компьютера?
Здравствуйте, java_yyyka, Вы писали: _>я кажется ясно дал понять что говорил не про сервер а про прицепление дллки и желательно зашифрованной той же темидой в клиентсую часть. вот её уже можно будет обмануть только специалисту а таких нет в той сфере. либо это будет дорого.