О сетях: всего понемногу

Что такое широковещательный DVR-сервер

Функция игрового видеорегистратора в Windows 10 позволяет записывать игровой процесс с вашего ПК. Вы можете автоматически записывать весь игровой процесс на ПК в фоновом режиме (например, на Xbox One или PlayStation 4), запускать и останавливать запись через панель игры, или транслировать онлайн-игры в режиме онлайн с помощью службы Beam от Microsoft.

Процесс широковещательного DVR-сервера связан с функцией игрового видеорегистратора Windows 10. Если вы используете Игровой видеорегистратор для записи игрового процесса в ПК или трансляции его в интернете, процесс bcastdvr.exe выполняет эту работу. Если вы не используете Game DVR для записи, этот процесс сидит молча в фоновом режиме и ничего не делает.

Causes of Net Broadcast Event Windows?

Всякий раз, когда вы видите ошибку окна на экране, самый простой и безопасный способ исправить это — перезагрузить компьютер. Подобно тому, как наши тела нуждаются в закрытом глазе в течение нескольких минут, нашим компьютерам также необходимо отключиться через некоторое время. Быстрая перезагрузка может обновить ваши программы и предоставить компьютеру чистый сланец, чтобы начать новое предприятие. Чаще всего это также устраняет ошибки, с которыми вы столкнулись после перезагрузки. Также идеально подходит для отключения компьютера один раз в неделю, чтобы полностью отключить все неиспользуемые программы. Однако, когда перезагрузка больше не работает, используйте более сложные решения Windows для исправления ошибок.

Еще немного про DHCP

Ни в коем случае DHCP нельзя рассматривать исключительно как метод получения RCE на клиентах, потому что, во-первых, мы должны ответить быстрее реального DHCP-сервера в сети, и, во-вторых, на клиенте должен быть shellshock, а это маловероятно. Протокол DHCP в первую очередь необходимо рассматривать как метод осуществления MITM.

Поговорим о том, как ответить на любой запрос быстрее DHCP-сервера. Самый очевидный вариант — быть ближе к клиенту по расположению в сети, и еще наше железо и алгоритм должны работать быстрее. Однако, в большинстве случаев это не так.

Есть второй вариант: нужно нагрузить сервер, но при этом не занимать новые IP-адреса в сети, чтобы не исчерпать весь пул свободных адресов (такая атака называется DHCP starvation). Как вы уже поняли, необходимо отправлять большое количество запросов DHCPDISCOVER, поскольку сервер должен обработать каждый из них и отправить в ответ DHCPOFFER. Однако, в рамках данной транзакции DHCPREQUEST мы отправлять не будем, поэтому сервер будет его ждать. IP-адрес не будет считаться выделенным, потому что процедура получения IP не завершена.

Давайте посмотрим, как это выглядит на практике.

Графы нагрузки и процессы до отправки DHCPDISCOVER-запросов:

На рисунках видно, что load average роутера колеблется от 0.1 до 0.3, и процесс dnsmasq занимает 0% CPU.

Графы нагрузки, процессы и список DHCP-клиентов во время отправки DHCPDISCOVER-запросов:

Load average роутера повысился до 1.96, и он уже не успевает отвечать на все запросы DHCPDISCOVER, процесс dnsmasq занимает целых 64% CPU, но при этом в списке DHCP клиентов только наш хост.

В результате, мы и сервер немного нагрузили, и IP-адреса не заняли. Если мы отфильтруем все сгенерированные нами же запросы DHCPDISCOVER, вероятнось того, что мы ответим быстрее реального DHCP-сервера, значительно увеличится. Задача выполнена, идем дальше.

Теперь поговорим о :

Value Message_Type
1 DHCPDISCOVER
2 DHCPOFFER
3 DHCPREQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNAK
7 DHCPRELEASE
8 DHCPINFORM

Первые шесть типов сообщений мы уже разобрали, осталось всего два: седьмой (DHCPRELEASE) и восьмой (DHCPINFORM). Остановимся на них подробнее.

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

Сообщение информации DHCPINFORM предназначено для определения дополнительных сетевых параметров теми клиентами, у которых IP-адрес настроен вручную. Исходя из своего опыта, можем сказать, что такие сообщения отправляют только Windows хосты :(. Сервер отвечает на подобный запрос DHCPACK без выделения IP-адреса. Для этих сообщений существует свой проект rfc. Вы уже поняли, что мы можем выставить в DHCPACK свой шлюз, DNS, и т.д. Главное — ответить раньше реального DHCP сервера, а эта проблема уже решена выше.

Частные IP-адреса

Однако есть такие случае, когда вы создаете сеть, которая использует IP адреса, но при этом она не подключена к Интернету. Например, внутренняя сеть организации или внутренняя сеть класса, в которой вы просто тестируете какие-то сетевые технологии. Было бы очень неудобно обращаться к региональному регистратору,  для того чтобы просить IP адреса для такой сети. Специально для этого случая выделены несколько диапазонов частных IP адресов, это такие IP адреса, которые можно использовать в подсетях, которые не подключаются к интернету. При этом обращаться к ICANN для получения IP адреса не нужно. Диапазон частных IP адресов определен в документе RFC 1918 и он включает следующее:

  • 10.0.0.0/8
  • 172.168.0.0/12
  • 192.168.0.0/16

Особенность этих адресов в том, что они не маршрутизируются в Интернет. Однако, есть возможность подключить сеть, построенную на основе частных адресов к  Интернет, для этого используется технология Трансляция сетевых адресов NAT (Network Address Translation). В этом случае адрес из частной подсети заменяется на реальный IP адрес.

Math Example

If a system has the IP address 192.168.12.220 and a network mask of 255.255.255.128, what should the broadcast address for the system be? To do this calculation, convert all numbers to binary values. For bitwise, remember that any two values where at least one value is 1, the result will be 1, otherwise the result is 0.

IP Address: 11000000.10101000.00001100.11011100
Reverse Mask: 00000000.00000000.00000000.01111111
bitwise OR: ———————————————–
Broadcast: 11000000.10101000.00001100.11111111

Convert the binary value back to octal and the resulting value is 192.168.12.255. The tech-faq.com subnet calculator can assist in calculating network IP address values.

Альтернативы Broadcast Receivers

Чтобы упростить навигацию по всем этим ограничениям, ниже приводится разбивка других компонентов, которые можно использовать при отсутствии широковещательного приемника. У каждого из них своя ответственность и свой вариант использования, поэтому постарайтесь определить, какой из них отвечает вашим потребностям.

  • LocalBroadcastManager — Как я уже упоминал выше, это действительно только для трансляций в вашем приложении
  • Scheduling A Job (Планирование задания) — задание может быть запущено в зависимости от полученного сигнала или триггера, поэтому вы можете обнаружить, что прослушиваемая трансляция может быть заменена заданием. Кроме того, JobScheduler гарантирует, что ваша работа будет завершена, но он будет учитывать различные системные факторы (время и условия), чтобы определить, когда он должен работать. При создании задания вы переопределите метод с именем onStartJob. Этот метод выполняется в основном потоке, поэтому убедитесь, что он завершает свою работу за ограниченное время. Если вам нужно выполнить сложную логику, подумайте о запуске фоновой задачи. Кроме того, возвращаемое значение для этого метода является логическим, где true означает, что определенные действия все еще выполняются, а false означает, что задание выполнено.

Безопасность и конфиденциальность

Википедия, Безопасность GSMХабрахабр, Безопасность GSM сетей: шифрование данныхКуча презентаций и статей на данную тему в моем GitHub-репозитории

3.1 Основные векторы атак

прямые руки

  • Сниффинг
  • Утечка персональных данных, СМС и голосовых звонков
  • Утечка данных о местоположении
  • Спуфинг (FakeBTS или IMSI Catcher)
  • Удаленный захват SIM-карты, исполнение произвольного кода (RCE)
  • Отказ в обслуживании (DoS)

3.3 Аутентификация

  1. Абонент выполняет Location Update Request, затем предоставляет IMSI.
  2. Сеть присылает псевдослучайное значение RAND.
  3. SIM-карта телефона хэширует Ki и RAND по алгоритму A3. A3(RAND, Ki) = SRAND.
  4. Сеть тоже хэширует Ki и RAND по алгоритму A3.
  5. Если значение SRAND со стороны абонента совпало с вычисленным на стороне сети, значит абонент прошел аутентификацию.

Способы атаки

3.4 Шифрование трафика

  • A5/0 — формальное обозначение отсутствия шифрования, так же как OPEN в WiFi-сетях. Сам я ни разу не встречал сетей без шифрования, однако, согласно gsmmap.org, в Сирии и Южной Корее используется A5/0.
  • A5/1 — самый распространенный алгоритм шифрования. Не смотря на то, что его взлом уже неоднократно демонстрировался на различных конференциях, используется везде и повсюду. Для расшифровки трафика достаточно иметь 2 Тб свободного места на диске, обычный персональный компьютер с Linux и программой Kraken на борту.
  • A5/2 — алгоритм шифрования с умышленно ослабленной защитой. Если где и используется, то только для красоты.
  • A5/3 — на данный момент самый стойкий алгоритм шифрования, разработанный еще в 2002 году. В интернете можно найти сведения о некоторых теоретически возможных уязвимостях, однако на практике его взлом еще никто не демонстрировал. Не знаю, почему наши операторы не хотят использовать его в своих 2G-сетях. Ведь для СОРМ это далеко не помеха, т.к. ключи шифрования известны оператору и трафик можно довольно легко расшифровывать на его стороне. Да и все современные телефоны прекрасно его поддерживают. К счастью, его используют современные 3GPP-сети.

Способы атакипродемонстрировал

Unicast

Тип передачи данных Unicast (индивидуальный) используется для обычной передачи данных от хоста к хосту. Способ Unicast работает в клиент-серверных и пиринговых (peer-to-peer, от равного к равному) сетях.

В unicast пакетах в качестве IP адреса назначения используется конкретный IP адрес устройства, для которого этот пакет предназначен. IP адрес конкретного устройства состоит из порции адреса сети (в которой находится это устройство) и порции адреса хоста (порции, определяющей это конкретное устойчиво в его сети). Это все приводит к возможности маршрутизации unicast пакетов по всей сети.

Multicast и broadcast пакеты, в отличие от unicast пакетов, имеют свои собственные специальные (зарезервированные) IP адреса для использования их в заголовке пакетов в качестве пункта назначения. Из-за этого, broadcast пакеты в основном ограничены пределами локальной сети. Multicast трафик также может быть ограничен границами локальной сети, но с другой стороны также может и маршрутизироваться между сетями.

В IP сетях unicast адрес является адресом, то есть адресом конечного устройства (например, компьютера). Для типа передачи данных unicast, адреса хостов назначаются двум конечным устройствам и используются (эти адреса) как IP адрес источника и IP адрес получателя.

В течение процесса инкапсуляции передающий хост размещает свой IP адрес в заголовок unicast пакета в виде адреса источника, а ИП адрес принимающего хоста размещается в заголовке в виде адреса получателя. Используя эти два IP адреса, пакеты unicast могут передаваться через всю сеть (т.е. через все подсети).

Специальные типы IP-адресов

Какие бывают специальные типы IP адресов:

В номере хоста нельзя использовать только битовые 0, и только битовые 1. Если мы укажем только битовые 0, то это получится не адрес хоста, а адрес подсети 213.180.193.0.

А если укажем только битовые 1, то это будет широковещательный адрес. 213.180.193.255.

Часто, маршрутизатору по умолчанию в сети, или шлюзу, через которые все компьютеры сети попадают в интернет, присваивают адрес с номером 1. Однако четких правил нет, так делать не обязательно 213.180.193.1.Адрес который состоит из всех 0.0.0.0 это адрес текущего хоста. Он используется, когда компьютер еще не получил свой IP адрес.

Адрес из всех битовых единиц, 255.255.255.255 это все хосты в текущей подсети (ограниченный широковещательный адрес).

127.0.0.0/8 это обратная петля, специальный диапазон адресов, который выделен для того чтобы отлаживать сетевые приложения, если у вас нет сетевого оборудование  или оно настроено не так как вам нужно, в этом случае данные не отправляются в сеть, а приходят обратно на компьютер. Часто из этой сети используется адрес 127.0.0.1 это текущий компьютер (localhost). Однако не обязательно для этой цели использовать адрес с хостом 1, можно использовать 2, 3 или другой любой IP адрес из этого диапазона. IP адреса из подсети 169.254.0.0/16 называются Link-local адреса. Случае если вы не настроили IP адрес на своем ПК вручную или каким либо другим способом, например с помощью протокола DHCP, то операционная система сама может назначить компьютеру адрес из этого диапазона. Такие адреса могут использоваться только в пределах подсети и не проходят через маршрутизатор.

Для чего нужны Broadcast Receivers?

Допустим, у вас есть приложение, которое зависит от постоянного интернет-соединения. Вы хотите, чтобы ваше приложение получало уведомление при изменении интернет-соединения. Как ты это делаешь? Возможным решением будет сервис, который всегда проверяет интернет-соединение. Эта реализация плоха по разным причинам, поэтому мы не будем ее рассматривать. Решением этой проблемы является широковещательный приемник (Broadcast Receiver), который прослушивает изменения, о которых вы сообщаете. Получатель трансляции всегда будет получать уведомления о трансляции, независимо от состояния вашего приложения

Неважно, работает ли ваше приложение в фоновом режиме или вообще не работает

Broadcast (Широковещание)

Из-за того, что тип передачи broadcast используется для отправки пакетов ко всем хостам в сети, пакеты использую специальный broadcast IP адрес. Когда хост получает пакет, в заголовке которого в качестве адреса получателя указан broadcast адрес, он обрабатывает пакет так, как будто это unicast пакет.

Когда хосту необходимо передать какую-то информацию всем хостам в сети используется способ передачи данных broadcast. Еще когда адрес специальных сервисов (служб) или устройств заранее неизвестен, то для обнаружения также используется broadcast (широковещание).

Примеры, когда используется broadcast передача данных:

  • создание карты принадлежности адресов верхнего уровня к нижним (например, какой IP адрес на конкретном устройстве со своим MAC адресом)
  • запрос адреса (в качестве примера можно взять протокол ARP)
  • протоколы маршрутизации обмениваются информацией о маршрутах (RIP, EIGRP, OSPF)

Когда хосту нужна информация, он отправляет запрос на широковещательный адрес. Все остальные хосты в сети получат и обработают этот запрос. Один или несколько хостов вложат запрашиваемую информацию и ответят на запрос. В качестве типа передачи данных, отвечающие на запрос будут использовать unicast.

Подобным образом, когда хосту необходимо отправить информацию всем хостам в сети, он создаёт широковещательный пакет с его информацией и передаёт его в сеть.

В отличие от unicast передачи, где пакеты могут быть маршрутизированы через всю сеть, broadcast пакеты, как правило, ограничиваются локальной сетью. Это ограничение зависит от настройки маршрутизатора, который ограничивает сеть и следит за типом широковещания (broadcast).

Существует два типа broadcast передачи данных: направленное широковещание и ограниченное широковещание.

Направленный broadcast (направленное широковещание)

Направленный broadcast отправляется всем хостам какой-то конкретной сети. Этот тип широковещания удобно использовать для отправки broadcast трафика всем хостам за пределами локальной сети.

Например, хост хочет отправить пакет всем хостам в сети 172.16.5.0/24, но сам хост находится в другой сети. В данном случае хост-отправитель вложит в заголовок пакета в качестве адреса пункта назначения broadcast адрес 172.16.5.255. Хотя маршрутизаторы должны ограничивать (не передавать) направленный широковещательный трафик, их можно настроить на разрешение передачи broadcast трафика.

Ограниченный broadcast (ограниченное широковещание)

Ограниченный broadcast используется для передачи данных всем хостам в локальной сети. В такие пакеты в качестве пункта назначения вставляется IP адрес 255.255.255.255. Маршрутизаторы такой широковещательный трафик не передают. Пакеты, переданные ограниченным broadcast будут распространяться только в локальной сети. По этой причине локальные сети IP также называют широковещательным доменом (broadcast domain). Маршрутизаторы образуют границу для широковещательного домена. Без границы пакеты бы распространялись по всей сети, каждому хосту, уменьшая быстродействие сетевых устройств и забивая пропускную способность каналов связи.

Приведу пример ограниченного broadcast: хост находится внутри сети 172.16.5.0/24 и хочет передать пакет всем хостам в его сети. Используя в качестве пункта назначения IP адрес 255.255.255.255, он отправляет широковещательный пакет. Этот пакет примут и обработают все хосты только в этой локальной сети (172.16.5.0/24).

Трансляция события

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

Есть три способа отправки трансляций:

  1. Метод обеспечивает одновременную отправку широковещательных сообщений только одному получателю. Каждая широковещательная трансляция может, в свою очередь, передавать данные той, которая следует за ней, или останавливать распространение широковещательной трансляции для следующих получателей.
  2. Метод похож на метод, упомянутый выше, с одним отличием. Все широковещательные приемники получают сообщение и не зависят друг от друга.
  3. Метод отправляет широковещательные сообщения только получателям, определенным в вашем приложении, и не выходит за рамки вашего приложения.

Реализация Broadcast Receivers

Чтобы создать собственный широковещательный приемник, вы должны сначала расширить родительский класс BroadcastReceiver и переопределить обязательный метод onReceive:

MyBroadcastReceiver.java

public void onReceive(Context context, Intent intent) {
//Implement your logic here
}

1
2
3

publicvoidonReceive(Context context,Intent intent){

//Implement your logic here

}

Собрав все вместе, получим:

MyBroadcastReceiver.java

public class MyBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
StringBuilder sb = new StringBuilder();
sb.append(«Action: » + intent.getAction() + «\n»);
sb.append(«URI: » + intent.toUri(Intent.URI_INTENT_SCHEME).toString() + «\n»);
String log = sb.toString();
Toast.makeText(context, log, Toast.LENGTH_LONG).show();

}
}

1
2
3
4
5
6
7
8
9
10
11
12

publicclassMyBroadcastReceiverextendsBroadcastReceiver{

@Override

publicvoidonReceive(Context context,Intent intent){

StringBuilder sb=newStringBuilder();

sb.append(«Action: «+intent.getAction()+»\n»);

sb.append(«URI: «+intent.toUri(Intent.URI_INTENT_SCHEME).toString()+»\n»);

Stringlog=sb.toString();

Toast.makeText(context,log,Toast.LENGTH_LONG).show();

}

}

Если выполняется долгий процесс, система может завершить процесс после возврата метода. Чтобы обойти это, рассмотрите возможность использования или планировщиков заданий (scheduling a job). Вы можете прочитать больше об этом в нижней части этой статьи.

Какие номера используют операторы России

Номер телефона любого российского оператора начинается с 8, для набора в международном формате надо набирать +7. Однако внутри России звонок будет одинаково удачным при наборе и с восьмерки и с +7.

После международного кода следуют цифры префикса — это DEF-код, используемый в сетях мобильной связи. Префиксы российских операторов начинаются с 9, т. е. общий вид кода всегда такой: 9хх. Для компаний, оказывающих услуги мобильной связи, выделен один или несколько таких кодов. Это дает возможность определить оператора и регион звонящего: 926, 916, 977 — московские номера, а 911, 921 или 981 — питерские.

Для «мобильной тройки» выделены серии кодов, в которых совпадают еще и вторые цифры. Например, 91х или 98х — это номера МТС, а 92х или 93х — Мегафона.

Следующие 7 цифр — это номер абонента, по которому невозможно определять принадлежность к региону проживания или провайдеру. Диапазон номеров Билайна может подсказать принадлежность к региону, если используется одинаковый префикс. Код 905 используется в Питере (диапазон с 250-00-00 по 289-99-99), а также в Ульяновской обл. (диапазон с 183-00-00 по 184-99-99).

Но иногда определить оператора помогают только начальные цифры номера абонента. Например, DEF-код 958 используют более 20 операторов, среди которых есть и мелкие компании (с охватом 1 региона и емкостью 10 000 номеров), и крупные (несколько десятков регионов и сотни тысяч номеров).

В качестве примера: префикс номеров компании «ТрансТелеком» — 7958, но поскольку компанией обслуживаются 30 регионов страны, надо знать начальные цифры номера абонента, чтобы определить принадлежность исходящего звонка (-00х-хх-хх — Башкирия, а -03х-хх-хх — Калининградская обл. и т .д.).

Этот же префикс используют «Газпром Телеком», «Деловая сеть Иркутск», ГУП «Автоматическая телефонная станция Смольного», «Межрегиональный ТранзитТелеком», «Систематикс», «Т2 Мобайл», «Центральный телеграф» и др.

Нумерация DEF-кодов тоже меняется по мере необходимости. Московские номера МТС были переведены с 495 на 985, а номера Мегафона — с 495 на 925.

Телефонный код, который использует только Мегафон, — 920. Номерная емкость составляет более 10 млн, а используются номера с таким кодом в 17 регионах Российской Федерации.

Кодировка, которой пользуется Теле2 — 900. Но такой же код используют еще 16 российских операторов разного калибра по емкости и охвату регионов — «Антарес», «Архангельские Мобильные Сети», «Екатеринбург-2000», «Кемеровская Мобильная связь», «Скай-1800» и др.

«Теле2» — самая крупная из компаний, применяющих префикс 900: «Т2 Мобайл» — это 17 регионов и 3 140 000 номеров (регион определяется по цифрам номера абонента), «Теле2-Омск» — 3 региона (Еврейская АО, Омская область и Чукотский АО) и 210 000 номеров, «Теле2-Санкт-Петербург» — 1 млн номеров на 4 региона (Вологодская обл, Карелия, Псковская обл., Ленинградская обл. и СПб.).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *