как отснифать андроид приложение

Перехват HTTPS-траффика между Android-устройством и внешним сервером

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение
Иногда бывает любопытно подсмотреть, что пересылают туда-сюда разные Android-приложения по HTTP и HTTPS протоколам. Иногда даже при разработке собственного ПО удобно видеть весь трафик в реальном времени. Для реализации этих задач давно придумано много хороших программ, таких, к примеру, как Charles или Fiddler2. На самом деле их намного больше, вот только две вышеуказанные дают возможность нормально просматривать не только HTTP, но и HTTPS.

Трудности начинаются тогда, когда речь заходит о перехвате трафика между Андроид-устройством и внешним сервером. В случае незашифрованного (HTTP-протокол) трафика всё весьма тривиально (вот и инструкция есть) — разрешаем Fiddler2 внешние соединения, в Андроиде устанавливаем прокси сервером адрес нашей машины с Fiddler2 — и вуаля, всё работает. А вот на настройку перехвата HTTPS-трафика у меня ушло чуть больше времени.

Теория

Итак, в чём же сложность? В том, что при использовании протокола HTTPS клиент по-умолчанию проверяет, а действительно ли тот сервер, к которому он подключился, является нужным. Для этого используются сертификаты. И вот у настоящего сервера этот сертификат, понятное дело, тоже настоящий и соответствует открытому URL, а вот у нашего прокси — нет. Для решения этой проблемы в десктопных операционных системах в таких случаях есть возможность сгенирировать в Fiddler2 поддельный сертификат, импортировать его в доверенные — и теперь клиент всегда будет верить, что соединение с Fiddler2 вполне безопасно. К сожалению, с мобильным устройством такой легкий финт ушами не прошел.

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

Практика

Итак, с браузером получилось. К сожалению, не все программы столь доверчивы, как браузер. К примеру, в моей собственной софтине, где я использую Apache HTTP Client, способ не прокатил — плевал апачевский клиент на доверенные сертификаты операционки. В этом случае мне пришлось отключить эту проверку вручную, таким вот образом:

где EasySSLProtocolSocketFactory взят отсюда и разрешает доверие к любым сертификатам.
Не безопасно, только для отладки!

После этого трафик моей программы стал также успешно отображаться в Fiddler2.

Источник

Как сниффить HTTPS-трафик iOS-устройства

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Привет, меня зовут Андрей Батутин, я Senior iOS Developer в DataArt, и сегодня мы будем сниффить HTTPS-трафик твоего «Айфона».

FoodSniffer и с чем его едят

Возьмем, к примеру, очень простое iOS-приложение FoodSniffer. Оно в зависимости от времени дня показывает пользователю, что можно есть.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Приложение получает от сервера JSON вида:

Сервером в данном случае выступает Dropbox, а JSON можно посмотреть здесь.

Проблема №1

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

Один из способов проверить, что пошло не так, — увидеть JSON, который вам возвращает сервер.

Как сниффить трафик?

Предположим, что ваши MacOS-компьютер и iOS-устройство находятся в одной локальной сети, которая выглядит примерно так:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Трафик идет от iOS-устройства через роутер к серверу независимо от трафика компьютера.

Чтобы читать трафик iOS-устройства, нам нужно сделать так, чтобы он шел через наш Мac. Примерно так:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Кроме того, нам понадобится HTTP/S-прокси-сервер, с помощью которого мы бы и смотрели/модифицировали проходящий трафик iOS-устройства.

Еще одна очень важная задача — иметь возможность сниффить HTTPS-трафик. Загвоздка в том, что HTTPS-протокол и создавался, чтобы, кроме клиента и сервера, никто не мог прочесть, что передается в HTTPS-запросах. Поэтому HTTPS-прокси должен поставлять с собой еще и SSL-сертификат, который нужен для работы с HTTPS-трафиком.

Иными словами, нам нужно реализовать Man-in-the-Middle-атаку на нашу собственную сеть.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Charles Web Debugging Proxy Application

Как видим, сниффить HTTPS-трафик — задача многоэтапная, поэтому чтобы максимально упростить себе жизнь, я использую Charles Proxy.

Настройка Charles и iOS-устройства

Далее будет описана процедура первоначальной настройки iOS-устройства для работы с Charles Proxy.

1. Запустить Charles на компьютере:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

2. Установить Charles Root Certificate на iOS устройстве:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Появится следующее окно:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

3. В настройках сети iOS-устройства указываем IP и порт Charles Proxy:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

В зависимости от архитектуры вашей сети IP-адрес, на котором работает Charles, может отличаться.

4. Открываем браузер на iOS-устройстве и переходим по ссылке — http://chls.pro/ssl.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

5. Устанавливаем Charles SSL-сертификат на устройство:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

6. Указываем в настройках устройства, что полностью доверяем данному сертификату:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Шестой этап нужен для устройств с iOS 10 и выше.

На 5–6-м этапах мы установили на устройство Charles SSL-сертификат и указали, что мы ему доверяем. Т. е. теперь весь HTTPS-трафик, подписанный этим сертификатом, не будет блокироваться ATS.

Как смотреть трафик iOS-устройства

Откройте приложение FoodSniffer. Если настройка прокси была сделана правильно, то вы должны увидеть такой экран:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

И полностью выключите кэширование на прокси-сервере.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

В приложении реализован Pull-to-refresh, после обновления списка продуктов вы должны в Charles увидеть https://www.dropbox.com в списке с левой стороны. Нажмите правой кнопкой мыши на него и выберите Enable SSL Proxing.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

После этого еще раз обновите список продуктов в приложении. Теперь вы должны увидеть примерно такую картину:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Теперь мы можем свободно читать HTTPS-трафик, который идет от приложения на Dropbox за нашим JSON.

Dropbox не отдает JSON c хоста dropbox.com напрямую. Вместо этого он возвращает 302-респонс и редиректит еще на один хост, с которого и происходит загрузка данных.

Найти его можно, просмотрев Raw Response следующего запроса:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

У вас, скорее всего, будет немного другой хост.

Затем включаем для него SSL Proxing: Enabled.

Обновляем FoodSniffer еще раз.

И теперь мы наконец можем увидеть реальный JSON, который и показывает приложение!

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Мы видим, что у нас есть всего один тип еды на вечернее время — виски, пишем об этом нашему тимлиду и идем пить кофе, проблема не на нашей стороне.

*В проекте применяется уже исправленный JSON, с двумя типами еды на вечер: пивом и виски.
*Если вы не видите хост http://uc9c29db95802af8490afc3afda9.dl.dropboxusercontent.com или похожий на него в списке в левой части окна, попробуйте обновить список продуктов в приложении несколько раз.

Проблема № 2, или Как изменять HTTPS-трафик iOS-устройства

Бэкенд-команда исправила меню на вечер, и теперь JSON формируется правильно. Но что делать, если сейчас утро, а ждать до вечера, чтобы проверить фикс, не хочется?

Один из вариантов — с помощью Charles изменять JSON, который вам приходит в ответ от Dropbox.

В данном случае нам нужно изменить consumePeriod с evening на morning.

В появившемся окне Rewrite Settings добавляем новую категорию для перезаписи — dropbox.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Добавляем хост, указывая https-порт в Edit Location меню:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

После этого добавляем правила перезаписи в Rewrite Rule меню следующим образом:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Т. е. теперь в каждом Body респонса от нашего сервера слово evening будет заменено на слово morning.

При необходимости мы можем менять любую часть HTTP-запроса/ответа, плюс использовать regex-выражение для замены текста.

Теперь, обновив список, мы должны увидеть четыре типа продуктов:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Вывод

Charles довольно простой, условно-бесплатный, обладает богатым функционалом HTTPS-прокси. С моей точки зрения, он лучше всего проявляет себя при работе с MacOS и iOS-устройствами.

Это далеко не единственный способ сниффить трафик. Для HTTP/S-трафика широко применяют и Fiddler. Если вам нужно уйти глубже в TCP/IP-стэк — есть Wireshark.

Кроме того, существует проблема certificate pinning. Если в вашем приложении он реализован, вам надо либо добавлять Charles SSL-сертификат в список разрешенных сертификатов, либо использовать такое средства, как Frida, чтобы отключить certificate pinning уже на уровне самого приложения. Об этом подробнее надеюсь рассказать в следующей статье.

Буду рад, если вы поделитесь вашим опытом в мониторинге трафика, в том числе HTTP/S, советам и лайфхаками.

Примечание. Используйте эту технику только для своих приложений, пожалуйста. Будьте белыми зайчиками хакерами!

Примечание 2. Недавно история об этом выходила на украинском, но по-русски я ее публикую впервые.

Источник

Получаем пользовательские данные на Android с экранов сторонних приложений

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

С версии 1.6 в Android существует «сервис специальных возможностей». Нетрудно догадаться, с какой целью он был создан, но нас, как людей, стремящихся как раз к неограниченным возможностям, этот сервис интересует с несколько другой стороны. Сегодня мы будем писать программу, которая позволит следить за вводом в других приложениях!

Зачем нужен сервис специальных возможностей?

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

В Android есть стандартный сервис спецвозможностей — TalkBack. При необходимости разработчики могут реализовать и свои собственные. Такие сервисы стало возможно писать с незапамятных времен (Android 1.6, API уровень 4), а с Android 4.0 (API уровня 14) они получили значительные улучшения. Через «библиотеку поддержки» эти улучшения реализованы и для устройств с API версией ниже 14.

Данный сервис позволяет просмотреть описание всех окон, работающих приложений и получить набранные пользователем данные (кроме вводимых паролей; согласись, что логинов и текстовых сообщений тоже во многих случаях достаточно).

В этой статье я расскажу, как максимально просто реализовать сервис для перехвата клавиатурного ввода.

Если все сделано верно, то в логе можно увидеть что-то вроде этого:

Класс AccessibilityServiceInfo позволяет выставить фильтры для определенных приложений (кто сказал «мобильных банков» или «клиентов социальных сетей»?). По нужному нам событию можно делать скриншоты.
Совсем просто это делается на рутованном устройстве, а если рута нет, то нужно искать сторонние библиотеки для получения скриншотов из сервиса.
Пример кода получения скриншота из сервиса на рутованном устройстве:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение Настройки доступа спецсервисов

Хакер #202. Скажи нет большому брату!

Запускаем настройки программно:

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение Запрос доступа к сервису спецвозможностей

В старых версиях Android (которых еще довольно много в дикой природе) пользователя можно было и не спрашивать. Такие права можно было задать программно:

Разрешения для манифеста:

где pkgname — имя твоего пакета и classname — имя класса сервиса. В новых версиях ОС без согласия пользователя не обойтись.

Заключение

С точки зрения программиста, Accessibility Services позволяет немного расширить узкие рамки песочницы для взаимодействия с другими приложениями. Пользователя можно просто попросить дать доступ к спецвозможностям и таким образом получить доступ к данным других программ. Также стоит отнестись внимательно к сервису TalkBack, который озвучивает все элементы экрана, беря описание из свойства contentDescription. Компания Google дает приоритет в поисковой выдаче маркета тем приложениям, которые более оптимизированы для TalkBack.

Пользователям же, как всегда, советуем три раза подумать, устанавливать ли вообще новое приложение, а если и устанавливать, то какие права ему дать. В последней версии Android 6.0 это можно делать более гибко.

Источник

Анализ трафика Android-приложений: обход certificate pinning без реверс-инжиниринга

Иногда нужно исследовать работу бэкенда мобильного приложения. Хорошо, если создатели приложения не заморачивались и все запросы уходят по «голому» HTTP. А что, если приложение для запросов использует HTTPS, и отказывается принимать сертификат вашего корневого удостоверяющего центра, который вы заботливо внедрили в хранилище операционной системы? Конечно, можно поискать запросы в декомпилированом приложении или с помощью реверс-инжиниринга вообще отключить применение шифрования, но хотелось бы способ попроще.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Что такое certificate pinning?

Даже при использовании HTTPS пользователь не защищен от атак «Человек посередине», потому что при инициализации соединения злоумышленник может подменить сертификат сервера на свой. Трафик при этом будет доступен злоумышленнику.

Справиться с такой атакой поможет certificate pinning. Эта защитная мера заключается в том, что разработчик «зашивает» в приложение доверенный сертификат. При установке защищенного соединения приложение проверяет, что сертификат, посылаемый сервером, совпадает с (или подписан) сертификатом из хранилища приложения.

Обход certificate pinning

В качестве подопытного выберем приложение Uber. Для анализа HTTP-трафика будем использовать Burp Suite. Также нам понадобится JDK и Android SDK (я использую все последней версии). Из Android SDK нам понадобится только утилита zipalign, так что при желании можно не скачивать весь SDK, а найти ее на просторах интернета.
Заранее облегчим себе жизнь, добавив следующие пути к нужным утилитам в переменную окружения PATH:

Открываем Burp, заходим в Proxy – Options – Add и добавляем Proxy Listener на интерфейсе, который будет доступен подопытному Android-устройству (или эмулятору). На устройстве в свою очередь настраиваем используемую Wi-Fi сеть на использование только что включенного прокси.

Скачаем apk-файл через apkpure.com, установим приложение на устройство и попытаемся войти в свой аккаунт – приложение зависнет на этапе аутентификации.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

В логах Burp Suite (вкладка Alerts) при этом мы увидим множественные отчеты о неудачных SSL-рукопожатиях. Обратите внимание на первую строчку – именно через сервер cn-geo1.uber.com в моем случае осуществляется аутентификация, поэтому и не удается войти в приложение.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Дело в том, что Burp Suite при перехвате HTTPS-соединений (а мы помним, что все соединения устройства проксируются через него) подменяет сертификат веб-сервера на свой, который, естественно, не входит в список доверенных. Чтобы устройство доверяло сертификату, выполняем следующие действия. В Burp заходим в Proxy – Options и нажимаем Import/export CA certificate. Далее в диалоге выбираем Export Certificate. Копируем сертификат на устройство, переходим в Настройки – Безопасность – Установить сертификаты и устанавливаем наш сертификат в качестве сертификата для VPN и приложений.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Опять пытаемся войти в свой аккаунт. Сейчас приложение Uber сообщит нам только о неудачной попытке аутентификации – значит прогресс есть, осталось только обойти certificate pinning.

Откроем приложение в вашем любимом архиваторе как zip-архив. В папке res/raw можно заметить файл с говорящим названием ssl_pinning_certs_bk146.bks.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

По его расширению можно понять, что Uber использует хранилище ключей в формате BouncyCastle (BKS). Из-за этого нельзя просто заменить сертификат в приложении. Сначала нужно сгенерировать BKS-хранилище. Для этого качаем jar для работы с BKS.

Теперь генерируем BKS-хранилище, которое будет содержать наш сертификат:

На вопрос о доверии сертификату отвечаем «yes». Опять открываем apk в архиваторе и заменяем оригинальное хранилище на наше (сохраняем при этом оригинальное название).

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

Удаляем из apk папку META-INF со старой подписью приложения и приступаем к генерации новой.
Создаем хранилище ключей и генерируем в нем ключ для подписи apk:

Подписываем только что сгенерированным ключом наш APK:

Теперь осталось выровнять данные в архиве по четырехбайтной границе:

Источник

Чем можно сниффить конкретную программу?

Мне надо посмотреть, куда в сеть лезет программа (Chromium). Чем это можно сделать? Есть ли путь сниффить программу, а не фильтровать все то, что показывает, например, Wireshark?

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Google is your bitch!

Тут есть решение с strace.

TOMOYO (1, не 2), например.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Запускать на виртуалке, снифать туннель к хосту.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

Но гугол ничего ему сам не предлагает и не делает для него.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

покажет все слушающие порты и установленные соединения. А твой хромиум скорее всего лезет в гугл.

а зачем? хром стучит в гугль.

Да, лезет немного в гугл, погань!

А для SRWare написать ебилд не выходит.

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

К слову сказать и mail.ru тем же страдает, мне на их сайт уже страшно заходить, только зайдешь и сразу у тебя устанавливается маил спутник маил агент. сцука.

Криворукие виндузятники должны страдать.

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

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

как отснифать андроид приложение. Смотреть фото как отснифать андроид приложение. Смотреть картинку как отснифать андроид приложение. Картинка про как отснифать андроид приложение. Фото как отснифать андроид приложение

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

Во-первых, в линуксе без админских прав хрен они что мне поставят. Во-вторых, в винде, на самом деле, тоже, поэтому я и сказал не просто «виндузятники», а именно «криворукие виндузятники».

Источник

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

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