суббота, 25 августа 2018 г.

Выявление ссылки на файл torrent


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

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

Однако ресурсов так много, что регистрироваться на каждом вскоре надоедает, тем более что магнитная ссылка меня вполне устраивает.

Однако вчера имела место ситуация, когда на интересующий меня контент трекера vanila.org


магнитная ссылка предоставлена не была. А была возможность скачать с MediaGet, которого, как выражался главный герой фильма "Ожидание полковника Шалыгина", терпеть ненавижу. Тем более, что это ПО не разрабатывается для Linux.


Мне сразу вспомнился подобный случай из личной практики. По аналогии было решено осуществить попытку получить сам файл torrent.

Как только мышка была подведена к кнопке, то ниже появилась всплывающая информационная строка, содержащая ссылку:


Появилась надежда найти в этих данных cсылку на загрузку файла torrent

Правым кликом мыши на кнопке "Скачать с помощью Mediaget" вызываю копировать адрес ссылки и далее вставляю её в свой простой текстовый редактор. В результате получена длинная строка:

http://dl.s7k.sk/sb/clk/s/5562/h/9f51ce/o/145/sub/0?a=1&f=%D0%92%D1%8F%D1%87%D0%B5%D1%81%D0%BB%D0%B0%D0%B2%20%D0%9D%D0%B5%D0%BA%D0%BB%D1%8E%D0%B4%D0%BE%D0%B2%20|%20%D0%A6%D0%B8%D0%BA%D0%BB%20%C2%AB%D0%A1%D0%BF%D0%B8%D1%80%D0%B0%D0%BB%D1%8C%20%D0%A4%D0%B8%D0%B1%D0%BE%D0%BD%D0%B0%D1%87%D1%87%D0%B8%C2%BB%20[3%20%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8]%20(2018)%20[FB2]&u=http://vanila.org/./download/file.php?id=1802069&sid=1d661b13bc43e266373c1d5da929b0ea

Пробую копировать часть данных, которые, как предполагаю, соответствуют команде загрузки с сайта vanila.org:

http://vanila.org/./download/file.php?id=1802069

Вставляю их в адресную строку браузера и перехожу по получившейся ссылке.

В данном частном случае хотелось воскликнуть: "Как мало нужно для счастья".


четверг, 23 августа 2018 г.

Доступ к общей папке Windows из Linux

Несмотря на кажущуюся простоту доступа к общей папке Windows из Linux некоторые пользователи, особенно начавшие пользоваться Linux, могут столкнуться с проблемой, которая, на первый взгляд, может оказаться неразрешимой. При этом пользователи Windows будут говорить "ничего не знаю – от меня пули вылетают". Чтобы не возникло впечатления о "глючности" Linux попробуем в этом вопросе разобраться.

Рассматривается частный вопрос о работе в домашней сети Linux с общей папкой Windows XP с целью изменения в ней данных, то есть записи и удаления. Содержание публикации не раскрывает работу с более поздними версиями Windows (хотя ситуация с ними может быть похожей), а также работу в доменных сетях, то есть в сетях с централизованным управлением политикой паролей и базой данных пользователей, например, Windows Active Directory.

Итак, на Windows открывается папка общего доступа. Но при обращении пользователя Linux к этой папке через сетевое окружение оказывается, что "достучаться" невозможно даже к узлу.

В самом начале можно столкнуться с проблемой отсутствия доступа даже к рабочей группе.


Это может объясняется небольшой инерционностью при первом обращении по протоколу SMB, который используется для доступа к папкам и файлам Windows из сети. Подождите немного, хотя бы несколько секунд, и повторите попытку. В конечном счёте Вы компьютер "увидите".


При дальнейшем обращении высветится форма запроса полномочий доступа, например:


Пользователь Linux вводит свой пароль и ... снова на экране получает эту же форму запроса. И так может продолжаться до бесконечности.

Причина в том, что как в Linux, так и в Windows, в целях обеспечения безопасности на уровне файловой системы действуют так называемые права на файлы и папки. А в данном случае пользователь Linux пытается обратиться к папке Windows под своим именем и паролем, о котором Windows не имеет никакого представления. Обращаться к ресурсу необходимо с использованием тех данных, о которых "знает" Windows. То есть, используя какие-то имя пользователя и пароль Windows, которые Windows известны.

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


у которого будет постоянный пароль и он будет находиться в группе "Пользователи". Этим можно исключить возможные дальнейшие случаи "системного непонимания" между Linux и Windows.

Права на предоставляемую в доступ папку нуждаются в некоторой корректировке, так как по умолчанию для пользователей назначаются права "только чтение".

Пояснение. Чтобы увидеть полное содержание вкладки "Безопасность" на системе Windows откройте Проводник и в разделе "Сервис – Свойства папки – Вид" снимите галочку в поле "Использовать простой общий доступ к файлам".






Не нужно выставлять "Полный доступ" ни на вкладке "Доступ – Разрешения", ни на вкладке "Безопасность", хотя очень многие поступают именно так. Полный доступ подразумевает разрешение на смену как разрешений на объект, так и его владельца. И если в какой-то мере это может быть допустимо в рамках домашней сети из 2-3 компьютеров, то в других случаях лучше так не делать.

Лучше поставить галочку в поле "Изменение" (Все – это активные, то есть не отключенные, учётные записи пользователей на компьютере Windows).


Далее необходимо перейти к вкладке "Безопасность" и для пользователей компьютера Windows поставить галочку в поле "Запись".



Но и это ещё не всё. Нужно нажать на кнопку "Дополнительно" и для строки с внесённым изменением (столбец "Разрешение – Запись") добавить галочки в полях "Обзор папок", "Содержание папки", "Удаление подпапок и файлов", "Удаление".




При этом установить галочку в поле "Применять эти разрешения к объектам и контейнерам только внутри этого контейнера" (см. рисунок выше).

Ого, сколько всего. Прямо страсти какие-то мексиканские. И всё это надо сделать на Windows.


Теперь вернёмся к вопросу обращения к папке из Linux. Вводим правильные значения. Вместо


укажем имя пользователя в формате компьютер\пользователь. Так как компьютер, к которому осуществляется обращение называется H-38, а функционирующий в моей маленькой сети сервер DHCP назначает имя домена vot, то ввожу необходимые данные и, наконец-то, получаю перечень общих ресурсов компьютера H-38.



Как видно из рисунка, клиент Samba отобразил не только папку Data, но и скрытые ресурсы ADMIN и C, используемые системой Windows для целей администрирования (скрытые ресурсы Windows отображаются значком $ после имени ресурса).

Однако при попытке обращения к папке Data система снова выдаёт запроc на введение учётных данных. При этом по умолчанию предлагается подключиться анонимно.


Вспомните, что общий доступ был предоставлен для пользователей Windows. Поэтому необходимо вводить имя и пароль конкретного пользователя.

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


Теперь попробуйте в общую папку Data записать какой-нибудь файл и какую-нибудь папку. Должно получиться.



При удалении данных из общей папки (как отдельных файлов, так и папок вместе с их содержимым) у Вас будет показываться предупреждение о том, что удаляемые объекты восстановлению в дальнейшем не подлежат.



Если имеется необходимость помещения удаляемых по сети объектов в Корзину, то на Windows необходимо устанавливать специальное ПО, которое, как правило, всегда коммерческое. Наилучшим решением в этой области, по моему мнению, является Executive Software Undelete.

Если Вы дочитали до конца, то, надеюсь, убедились в том, что изначально со стороны Windows оказывается пули не совсем вылетают. И кто в таком случае более "глючный"?

Увы, но виноваты в данном случае не Linux или Windows, а их пользователи. Один не до конца настроил предоставление доступа на своей системе, а второй неправильно обращается к предоставленному в доступ ресурсу.

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


среда, 22 августа 2018 г.

Отключение WebRTC

При посещении ресурса 2ip.ru, который отображает мой реальный адрес в Интернет с отправляемой в него информацией об используемой мной операционной системе, браузере, разрешении экрана и т.п., меня заинтересовала любопытная ссылка,


при переходе по которой выяснилось, что адрес IP включён в один из "чёрных" списков. Причиной явилось использование IP при рассылке электронной почты коммерческого характера.

Для восприятия картинок кликайте по ним, они будут показаны в реальном размере. 


Так как мной не осуществлялось таких действий, то понятно, что с используемого мной на момент посещения 2ip.ru адреса IP такие действия производились кем-то другим. Причин для беспокойства, на первый взгляд, не наблюдается, так как внешний адрес IP мне назначается провайдером Интернет и данный IP постоянно меняется, не оставаясь одним и тем же (мной не используется услуга предоставления статического IP).

Однако собственное любопытство от природы подвигло на получение более детальных сведений по данному вопросу.


Пояснения предоставил ресурс https://whatleaks.com/ru/ , на котором указано, что

Самая частая утечка IP адреса – это прохождение запросов от WebRTC и Flash мимо вашего proxy, socks или vpn соединения.

Проект WebRTC создан Google для передачи потоковых данных (аудио и видео) преимущественно прямо между браузерами пользователей (p2p-соединения), без участия сторонних программ (например, Skype) или плагинов. Это подразумевает не просто доступ браузера с поддержкой WebRTC к сетевой среде (независимо от используемой операционной системы), а возможность определения публичного и локального IP-адреса посредством протокола STUN для установки p2p-соединения в обход всех видов NAT.

Показ всех IP-адресов Вашего компьютера/планшета/телефона посредством WebRTC – это не проблема или недостаток VPN/tor/socks, это проблема и недостаток браузера, которым Вы пользуетесь.

На данный момент известно, что по умолчанию WebRTC включён в браузерах Chrome (с версии 23), Firefox (с версии 22) и Opera (с версии 18), что в общем случае сводит на нет все способы анонимизации для пользователей этих браузеров. Чтобы нельзя было через WebRTC определить ваш публичный и локальный IP-адрес, нужно, как это ни странно, отключить его поддержку.

Там же были предложены и способы решения данной проблемы (если она Вас волнует, конечно).

Firefox

В адресной строке набрать about:config и нажать Enter

В строке Поиск ввести "media.peerconnection.enabled" и выполнить двойной клик по найденной строке, выставив тем самым поле Значение в "false".



Chrome и Opera

На данный момент неизвестен способ отключения WebRTC средствами самих браузеров, а альтернативные решения в виде расширений придётся найти и установить самостоятельно на свой страх и риск), поскольку их эффективность "оставляет желать лучшего". Поэтому, видимо, остаётся только посоветовать не пользоваться этими браузерами, пока разработчики не реализуют возможность отключения средствами самих браузеров (по аналогии с Firefox).

Android в Chrome

В последних версиях браузера Chrome для Android невозможно отключить WebRTC, хотя такая опция есть в настройках. Если необходимо использовать браузер с отключенным WebRTC на Android, рекомендуется использовать Firefox для Android. Отключение WebRTC производится тем же способом, что для Firefox на ПК.

Да уж, воистину, мы не одиноки во Вселенной.


среда, 15 августа 2018 г.

Клиент SNTP в MikroTik

  Начиная с версии прошивки 6.27 в MikroTik имеется соединение с облаком Cloud (IP – Cloud), позволяющем синхронизировать время на MikroTik, который не имеет энергонезависимого источника питания.


Детальных сведений в сети на русском языке о синхронизации времени через Cloud мне найти не удалось. Единственная найденная мной информация на Wiki MikroTik указывает, что:

а) точность устанавливаемого времени при выключенном клиенте NTP может составить несколько секунд: approximate time (accuracy of several seconds, depends on UDP packet latency, useful when NTP is not available);

б) опросы производятся каждые 60 секунд, а ожидание ответа от Cloud составляет 15 секунд: Router checks for outgoing IP address change: every 60 seconds
Router waits for cloud server response: 15 seconds

в) при включённом режиме Cloud зашифрованные пакеты upd передаются на порт 15252 узла cloud.mikrotik.com: UPD When enabled '/ip cloud' will send encrypted packets to hosts UDP/15252 port that resolves from cloud.mikrotik.com

Если на MikroTik нужен сервер NTP, синхронизация времени в Cloud отключена (галочка в поле "Update Time" отсутствует), а клиент DHCP не настроен или не получает адресов серверов NTP от провайдера (Use Peer NTP),


то имеется необходимость настройки клиента NTP (SNTP Client).

Когда клиент DHCP получает адреса DNS и NTP серверов от вышестоящего MikroTik, то ничего делать не надо, достаточно включить SMTP Client.




Встроенный в MikroTik клиент SNTPклиент получает синхронизацию от серверов времени NTP. При его активизации (System – SNTP Client) вводятся адреса IP основного и дополнительного серверов точного времени NTP, например:


Если вместо адреса IP водить имена конкретных серверов, то клиент распознает их адреса IP и автоматически подставит необходимые значения.

В процессе работы клиент опрашивает основной и дополнительный серверы, выбирает из них наилучший и синхронизирует с ним своё время. После успешной синхронизации времени повторный цикл "опрос – выборы – синхронизация" проводится через 64 секунды, затем интервал между циклами возрастает (128, 256, 300 секунд), пока не достигнет значения в 900 секунд.


Клиент SNTP MiroTik имеет недостаток. Дело в том, что адреса IP серверов точного времени могут меняться. В частности, в течение суток при пингах сервера времени timeserver.ru были возвращены значения 185.22.183.74 и 185.22.183.73  Клиент же SNTP MikroTik такие изменения не отслеживает, продолжая использовать предыдущий адрес IP. Поэтому может возникнуть ситуация, при которой синхронизация времени произведена не будет и в поле (см. рис. выше) Last Bad Packet From будет указан IP сервера NTP, с которым ему синхронизироваться не удалось.

Можно, конечно, периодически пингом опрашивать доступность введённых IP серверов NTP и при изменении их IP вносить новые адреса, а можно доверить решение данного вопроса скрипту автоматической коррекции адресов серверов IP.

Сам скрипт заимствован с одного из комментариев то ли к публикации на сайте, то ли одного из форумов (сейчас уже и не вспомню). Надеюсь, что автор комментария не станет мне выставлять претензию на "нарушение его авторских прав", тем более что, по его же словам, текст скрипта "//честно стибрен с официальной вики".

Текст скрипта следующий:

# Change the following line as needed as progName should match script name
:local progName "SetNtpServers";

# Array of NTP pools to use (check www.pool.ntp.org) one or a maximum of two, a primary & secondary
# Modify the following line and array variable based on your locale (default is north america).
:local arrNtpSystems ("0.us.pool.ntp.org", "1.us.pool.ntp.org");
# Alternatively the US related pool below can be used.
#:local arrNtpSystems ("0.us.pool.ntp.org", "1.us.pool.ntp.org");
#
# No modification is necessary beyond this line.
:put "$progName: Running...";
:log info "$progName: Running...";
:set arrNtpSystems [ :toarray $arrNtpSystems ];
:if (( [ :len $arrNtpSystems ] < 1 ) or ( [ :len $arrNtpSystems ] > 2 )) do={
:put "$progName: ERROR NTP Systems array (\$arrNtpSystems) must be either one or two DNS names.";
:log info "$progName: ERROR NTP Systems array (\$arrNtpSystems) must be either one or two DNS names.";
} else={
:local arrRosNtpSetting ("primary-ntp", "secondary-ntp");
:local i 0;
:foreach strNtpSystem in ($arrNtpSystems) do={
:local ipAddrNtpSystem [ :resolve $strNtpSystem ];
:local strRosNtpSetting [ :pick $arrRosNtpSetting $i ];
:local strCurrentNtpIp [ /system ntp client get $strRosNtpSetting ];
:put "$progName: NTP server DNS name $strNtpSystem resolves to $ipAddrNtpSystem.";
:log info "$progName: NTP server DNS name $strNtpSystem resolves to $ipAddrNtpSystem.";
:put "$progName: Current $strRosNtpSetting setting is $strCurrentNtpIp.";
:log info "$progName: Current $strRosNtpSetting setting is $strCurrentNtpIp.";
:if ( [ :toip $ipAddrNtpSystem ] != [ :toip $strCurrentNtpIp ] ) do={
:put "$progName: Changing $strRosNtpSetting setting to $ipAddrNtpSystem.";
:log info "$progName: Changing $strRosNtpSetting setting to $ipAddrNtpSystem.";
:local strCommand [ :parse "/system ntp client set $strRosNtpSetting=\"$ipAddrNtpSystem\"" ];
$strCommand;
} else={
:put "$progName: No changes were made for the $strRosNtpSetting NTP setting.";
:log info "$progName: No changes were made for the $strRosNtpSetting NTP setting.";
}
:set i ($i + 1);
}
}
:put "$progName: Done.";
:log info "$progName: Done.";

Обратите внимание на строку

       :local arrNtpSystems ("0.us.pool.ntp.org", "1.us.pool.ntp.org");

В ней указаны серверы NTP. Вы можете указать свои серверы NTP или пулы серверов NTP.

Какие адреса серверов NTP использовать? Можно их поискать. Например, при просмотре результатов русскоязычного поиска меня заинтересовал ntp.time.in.ua (подробности), в описании которого указано, что он имеет 1-й уровень точности. А сервер в Донецке уровня stratum2 на своей странице даже покажет смещение часов компьютера.

Можете указать целые пулы серверов NTP, для чего кликните на регион и на странице найдите страну своего пребывания:


Например, для Российской Федерации найдены записи:

0.ru.pool.ntp.org
1.ru.pool.ntp.org
2.ru.pool.ntp.org
3.ru.pool.ntp.org

Результирующий текст скрипта (без воды в виде комментариев) будет следующим (пример):

:local progName "SetNtpServers";
:local arrNtpSystems ("0.ru.pool.ntp.org", "1.ru.pool.ntp.org");
:put "$progName: Running...";
:log info "$progName: Running...";
:set arrNtpSystems [ :toarray $arrNtpSystems ];
:if (( [ :len $arrNtpSystems ] < 1 ) or ( [ :len $arrNtpSystems ] > 2 )) do={
:put "$progName: ERROR NTP Systems array (\$arrNtpSystems) must be either one or two DNS names.";
:log info "$progName: ERROR NTP Systems array (\$arrNtpSystems) must be either one or two DNS names.";
} else={
:local arrRosNtpSetting ("primary-ntp", "secondary-ntp");
:local i 0;
:foreach strNtpSystem in ($arrNtpSystems) do={
:local ipAddrNtpSystem [ :resolve $strNtpSystem ];
:local strRosNtpSetting [ :pick $arrRosNtpSetting $i ];
:local strCurrentNtpIp [ /system ntp client get $strRosNtpSetting ];
:put "$progName: NTP server DNS name $strNtpSystem resolves to $ipAddrNtpSystem.";
:log info "$progName: NTP server DNS name $strNtpSystem resolves to $ipAddrNtpSystem.";
:put "$progName: Current $strRosNtpSetting setting is $strCurrentNtpIp.";
:log info "$progName: Current $strRosNtpSetting setting is $strCurrentNtpIp.";
:if ( [ :toip $ipAddrNtpSystem ] != [ :toip $strCurrentNtpIp ] ) do={
:put "$progName: Changing $strRosNtpSetting setting to $ipAddrNtpSystem.";
:log info "$progName: Changing $strRosNtpSetting setting to $ipAddrNtpSystem.";
:local strCommand [ :parse "/system ntp client set $strRosNtpSetting=\"$ipAddrNtpSystem\"" ];
$strCommand;
} else={
:put "$progName: No changes were made for the $strRosNtpSetting NTP setting.";
:log info "$progName: No changes were made for the $strRosNtpSetting NTP setting.";
}
:set i ($i + 1);
}
}
:put "$progName: Done.";
:log info "$progName: Done.";

При указании серверов точного времени рекомендуют использовать региональные пулы адресов серверов NTP. Хотя причина данной рекомендации больше обусловлена тем, что региональные серверы NTP просто географически ближе. А так разницы нет. Главное, чтобы какой-нибудь сервер NTP "не банил" Ваш IP.  Меня, например, смутила такая запись на странице https://ntp-servers.net/servers.html:

"При использовании наших NTP серверов, старайтесь не отправлять слишком много запросов за короткий промежуток времени, в противном случае ваш IP адрес может быть заблокирован на срок не менее 30 суток с момента начала блокировки."

Как понимать высказывание "слишком много запросов"? Запросы с моего MikroTik с интервалами 64, 128, 256 c. (см. пояснение выше) это "слишком много" или нормально?

При вводе имён серверов точного времени необходимо вводить так, как они указаны. Например:

:local arrNtpSystems ("ntp.time.in.ua", "ntp2.time.in.ua");

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

Создайте скрипт (System – Scripts)


укажите ему имя (в приводимом примере timeservers), а в поле Source вставьте текст скрипта.


Далее вызовите планировщик заданий "System – Sheduler", в котором определите с какого времени и с какой периодичностью производить запуск скрипта timeservers (или определённого Вами наименования скрипта):



В поле On Event впишите  /system script run имя_вашего_скрпта

Периодичность (Interval) установите такую, которую считает нужной. В приводимом примере она указана как 1d:00:00:00, то есть каждые 24 часа (раз в сутки). Если это нужно делать, например, каждые 4 часа, то укажите 00:04:00:00  То есть, формат представления состоит из 4 групп цифр – дней:часов:минут:секунд

После отработки скрипта в протоколе работы MikroTik (Log) должны появиться записи, касающиеся результатов выполнения созданного скрипта:


Если будут присутствовать строки "No changes made for the primary-ntp NTP settings" и "No changes made for the secondary-ntp NTP settings", то это означает, что адреса IP при их очередном распознавании не изменились и никаких изменений в IP адреса серверов точного времени клиента SNTP MikroTik внесено не было.

А в разделе System – SNTP Client можно посмотреть результат последней синхронизации времени. На рисунке ниже видно, что состоялись "выборы" и с наилучшим сервером произведена синхронизация часов MikroTik, в ходе которой осуществлена коррекция на 779 микросекунд.


Обратите внимание, что при добавлении сервера NTP такой подробной картинки в клиенте SNTP Вы наблюдать не будете. Вместо SNTP Client у Вас будет отображаться NTP Client c уведомлением о том, что время синхронизировано (synchronized).


Может возникнуть вопрос: зачем а настройках SNTP Client указано значение 192.168.224.81 в поле Server DNS Names, которое в приводимом примере соответствует адресу сервера DNS MikroTik в локальной сети.

Если Вами используется Peer DNS Names, то это поле можно и не заполнять. Но если Вы не используете имени серверов, предоставляемых провайдером, предпочитая для распознавания имён использовать другие DNS интернета, а в статических адресах DNS сервера MikroTik такие значения как time.windows.com, ntp.ubuntu.com, time.google.com указывают на определённые адреса IP, не совпадающие с их действительными значениями (например, ближайшим сервером NTP), то есть вероятность получить невозможность синхронизации времени клиентским компьютером (server-ip-mismatch).


Второй причиной ввода значений в поля Server DNS Names является ситуация, при которой сервер DNS MikroTik не используется, поэтому для распознавания имён серверов точного времени требуется указание адресов серверов DNS, используемых для преобразования имён серверов NTP в адреса IP. Это отражено в Wiki MiroTik.

В протоколе MikroTik работа скрипта помечена записями SetNtpServers. Чтобы установить своё наименование измените его в самой первой строчке скрипта:

       :local progName "SetNtpServers";