Где это я?

Что это за сайт, спросите вы?

Это личный блог Михаила Романова (c 1998 года известного, как 891rpm).

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

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

Если мы с вами уже работаем и вы хотите внести вознаграждение за работу, то различные способы оплаты можно найти на соответствующей странице.

Для работодателей и соискателей ответственного и профессионального работника, есть страничка, под названием Работа.

P.S. На картинке, кстати, изображен одноименный со мной тахометр 🙂

Linux cgroups

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

Пример:

Утилиты для работы входят в пакет libcgroup-tools (для CentOS). При желании таким же макаром можно прописать ограничения для системных пользователей или групп.

Собственно контейнера lxc по такому принципу и работают.

https://habrahabr.ru/post/266083/#comment_8560049

GPG и PGP

Создание своего ключа

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

Создаем ключ:

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

Шифрование/расшифровка на локальном хосте

Теперь мы можем зашифровать/расшифровать файл с именем foo.txt на своем локальном хосте, — это выглядет так:

Шифрование файла для передачи адресату

Расшифровка

Подписание файлов

Ссылки по теме

HDD SMART

Таблица расшифровки показаний SMART

Имя атрибута Описание
01 Raw Read Error Rate Частота ошибок при чтении данных с диска, происхождение которых обусловлено аппаратной частью диска.
02 Throughput Performance Общая производительность диска. Если значение атрибута уменьшается, то велика вероятность, что с диском есть проблемы.
03 Spin-Up Time Время раскрутки пакета дисков из состояния покоя до рабочей скорости.
04 Start/Stop Count Полное число запусков/остановок шпинделя. У дисков некоторых производителей (например, Seagate) — счётчик включения режима энергосбережения. В поле raw value хранится общее количество запусков/остановок диска.
05 Reallocated Sectors Count Число операций переназначения секторов. Когда диск обнаруживает ошибку чтения/записи, он помечает сектор «переназначенным» и переносит данные в специально отведённую область. Вот почему на современных жёстких дисках нельзя увидеть bad-блоки — все они спрятаны в переназначенных секторах. Этот процесс называют remapping, а переназначенный сектор — remap. Чем больше значение, тем хуже состояние поверхности дисков. Поле raw value содержит общее количество переназначенных секторов.
06 Read Channel Margin Запас канала чтения. Назначение этого атрибута не документировано. В современных накопителях не используется.
07 Seek Error Rate Частота ошибок при позиционировании блока головок. Чем их больше, тем хуже состояние механики и/или поверхности жёсткого диска.
08 Seek Time Performance Средняя производительность операции позиционирования магнитными головками. Если значение атрибута уменьшается, то велика вероятность проблем с механической частью.
09 Power-On Hours (POH) Число часов (минут, секунд — в зависимости от производителя), проведённых во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ (MTBF — mean time between failure).
10 Spin-Up Retry Count Число повторных попыток раскрутки дисков до рабочей скорости в случае, если первая попытка была неудачной. Если значение атрибута увеличивается, то велика вероятность неполадок с механической частью.
11 Recalibration Retries Количество повторов запросов рекалибровки в случае, если первая попытка была неудачной. Если значение атрибута увеличивается, то велика вероятность проблем с механической частью.
12 Device Power Cycle Count Количество полных циклов включения-выключения диска.
13 Soft Read Error Rate Число ошибок при чтении по вине программного обеспечения.
184 End-to-End error Данный атрибут — часть технологии HP SMART IV, это означает, что после передачи через кэш памяти буфера данных паритет данных между хостом и жестким диском не совпадают.
187 Reported UNC Errors Ошибки, которые не могли быть восстановлены, используя методы устранения ошибки аппаратными средствами.
190 Airflow Temperature (WDC) Температура воздуха внутри корпуса жёсткого диска для дисков Western Digital. Для дисков Seagate рассчитывается по формуле (100 — HDA temperature).
191 G-sense error rate Количество ошибок, возникающих в результате ударных нагрузок.
192 Power-off retract count Число циклов выключений или аварийных отказов.
193 Load/Unload Cycle Количество циклов перемещения блока магнитных головок в парковочную зону / в рабочее положение.
194 HDA temperature Здесь хранятся показания встроенного термодатчика.
195 Hardware ECC Recovered Число коррекции ошибок аппаратной частью диска (ошибок чтения, ошибок позиционирования, ошибок передачи по внешнему интерфейсу).
196 Reallocation Event Count Число операций переназначения. В поле «raw value» атрибута хранится общее число попыток переноса информации с переназначенных секторов в резервную область. Учитываются как успешные, так и неуспешные попытки.
197 Current Pending Sector Count В поле хранится число секторов, являющихся кандидатами на замену. Они не были ещё определены как плохие, но считывание с них отличается от чтения стабильного сектора, это так называемые подозрительные или нестабильные сектора. В случае успешного последующего прочтения сектора он исключается из числа кандидатов. В случае повторных ошибочных чтений накопитель пытается восстановить его и выполняет операцию переназначения.
198 Uncorrectable Sector Count Число неисправимых ошибок при обращении к сектору. {Возможно, имелось в виду «число некорректируемых секторов», но никак не число самих ошибок!} В случае увеличения числа ошибок велика вероятность критических дефектов поверхности и/или механики накопителя.
199 UltraDMA CRC Error Count Число ошибок, возникающих при передаче данных по внешнему интерфейсу.
200 Write Error Rate /
Multi-Zone Error Rate
Показывает общее количество ошибок, происходящих при записи сектора. Может служить показателем качества поверхности и механики накопителя.
201 Soft read error rate Частота появления «программных» ошибок при чтении данных с диска.
Данный параметр показывает частоту появления ошибок при операциях чтения с поверхности диска по вине программного обеспечения, а не аппаратной части накопителя.
202 Data Address Mark errors Number of Data Address Mark (DAM) errors (or) vendor-specific.
203 Run out cancel Количество ошибок ECC.
204 Soft ECC correction Количество ошибок ECC, скорректированных программным способом.
205 Thermal asperity rate (TAR) Number of thermal asperity errors.
206 Flying height Высота между головкой и поверхностью диска.
207 Spin high current Amount of high current used to spin up the drive.
208 Spin buzz Number of buzz routines to spin up the drive.
209 Offline seek performance Drive’s seek performance during offline operations.
220 Disk Shift Дистанция смещения блока дисков относительно шпинделя. В основном возникает из-за удара или падения. Единица измерения неизвестна.
221 G-Sense Error Rate Число ошибок, возникших из-за внешних нагрузок и ударов. Атрибут хранит показания встроенного датчика удара.
222 Loaded Hours Время, проведённое блоком магнитных головок между выгрузкой из парковочной области в рабочую область диска и загрузкой блока обратно в парковочную область.
223 Load/Unload Retry Count Количество новых попыток выгрузок/загрузок блока магнитных головок в/из парковочной области после неудачной попытки.
224 Load Friction Величина силы трения блока магнитных головок при его выгрузке из парковочной области.
226 Load ‘In’-time Время, за которое привод выгружает магнитные головки из парковочной области на рабочую поверхность диска.
227 Torque Amplification Count Количество попыток скомпенсировать вращающий момент.
228 Power-Off Retract Cycle Количество повторов автоматической парковки блока магнитных головок в результате выключения питания.
230 GMR Head Amplitude Амплитуда «дрожания» (расстояние повторяющегося перемещения блока магнитных головок).
231 Temperature Температура жёсткого диска.
240 Head flying hours Время позиционирования головки.
250 Read error retry rate Число ошибок во время чтения жёсткого диска.

Webpack

  1. Устанавливаем Bootstrap и Jquery через Bower

     
  2. Устанавливаем необходимые плагины через npm

     
  3. Создаем webpack.config.js и app.js:


     
  4. Запускаем команду «webpack«
  5. Подключаем получившиеся bundle к странице:
  6. Проверяем и радуемся что все работает.

 

Установка NPM пакетов глобально без sudo

Node.js набирает огромную популярность. Одна из самых его замечательных особенностей — NPM пакеты или модули. По-умолчанию они устанавливаются локально, в директорию откуда вы запустили команду. Однако есть способ установки NPM пакетов глобально. Проблема в том что для этого вам нужно запускать команду установки пакетов с правами root пользователя.

К счастью эту проблему можно исправить простыми шагами.

1. Создание директории для глобальных пакетов

2. Указать где будут находиться пакеты с помощью .bashrc

3. Указать npm где вы собираетесь хранить глобальные пакеты

Для этого откройте файл ~/.npmrc с помощью текстового редактора и вставьте следующую строку:

4. Убедитесь, что Node.js будет знать где находятся пакеты

Откройте опять ~/.bashrc с помощью текстового редактора и вставьте следующие строки:

Если все предыдущие шаги вам кажутся слишком сложными, то можете воспользоваться скриптом npm-g_nosudo, он все предыдущие шаги делает автоматически.

How to monitor traffic at Cisco router using Netflow

By default Cisco IOS doesn’t provide any traffic monitoring tools like iftop or iptraff available in Linux. While there are lots of proprietary solutions for this purpose including Cisco Netflow Collection, you are free to choose nfdump and nfsen open source software to monitor traffic of one or many Cisco routers and get detailed monitoring data through your Linux command line or as graphs at absolutely no cost.

Below is beginner’s guide that helps to quickly deploy netflow collector and visualizer under Linux and impress everybody by cute and descriptive graphs like these:

It is highly recommended to look through Netflow basics to get brief understanding of how it works before configuring anything. For example, here is Cisco’s document that gives complete information about Netflow. In a few words to get started you should enable netflow exporting on Cisco router and point it to netflow collector running under Linux. Exported data will contain complete information about all packets the router has received/sent so nfdump and nfsen working under Linux will collect it and visualize to present you the graph like above example.

Cisco Router Setup

1. Enable flow export on ALL Cisco router’s interfaces that send and receive some traffic, here is an example:

2. Setup netflow export:

Where 1.1.1.1 is IP address of Linux host where you plan to collect and analyze netflow data. 23456 is port number of netflow collector running on Linux.

Linux Setup

1. Download and install nfdump.

2. Download and install nfsen.

It requires web server with php module and RRD so make sure you have the corresponding packages installed. I hope you’re running httpd with php already so below are rrd/perl related packages installation hints only.

Fedora/Centos/Redhat users should type this:

Ubuntu/Debian:

If you run some exotic Linux distribution just install everything that is related to rrd + perl.

At last, nfsen installation:

In order to continue you should edit file etc/nfsen.conf to specify where to install nfsen, web server’s username, its document root directory etc. That file is commented so there shouldn’t be serious problems with it.

One of the major sections of nfsen.conf is ‘Netflow sources’, it should contain exactly the same port number(s) you’ve configured Cisco with — recall ‘ip flow-export …’ line where we’ve specified port 23456. E.g.

Now it’s time to finish the installation:

In case of success you’ll see corresponding notification after which you will have to start nfsen daemon to get the ball rolling:

From this point nfdump started collecting netflow data exported by Cisco router and nfsen is hardly working to visualize it — just open web browser and go to http://linux_web_server/nfsen/nfsen.php to make sure. If you see empty graphs just wait for a while to let nfsen to collect enough data to visualize it.

That’s it!

RTMP сервер на Debian Linux

Установка

Затем устанавливаем дополнительные пакеты:


Установка Red5

Запускаем:

В результате увидим работающий сервер Red5 по адресу: http://localhost:5080

Если работает firewall, то добавляем порты:

В качестве плеера советую как вариант использовать video.js.

RainbowCrack

rainbowcrack

Собрал на днях полигон для прогона RainbowCrack «тестов».

Пока доступны алгоритмы: SHA1, MD5

Таблицы:

md5_mixalpha-numeric#1-8
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789)
Вероятность подбора: 99.9%
127GB

md5_mixalpha-numeric#1-9
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789)
Вероятность подбора: 96.8%
1009GB

md5_mixalpha-numeric-all-space#1-8
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 )
Вероятность подбора: 99.9%
1049GB

sha1_mixalpha-numeric#1-8
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789)
Вероятность подбора: 99.9%
127GB

sha1_mixalpha-numeric#1-9
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789)
Вероятность подбора: 96.8%
690GB

 

Конфигурация железа в данной генерации:

Основной просчет ведется на 2-х GPU, но для тестов производительности доступен также вариант с прогоном на CPU.

 

Производительность для 1 хэша

В текущей конфигурации скорость вычислений доходит до:

8.96E+12 (Plaintexts per Second) на 2-х GPU GeForce GTX 680

9.21E+11 (Plaintexts per Second) при использовании CPU i7 4790.

Открыт ограниченный бесплатный 🙂 доступ по адресу: http://891rpm.com/rc/

0. [2016-01-20] Доступ предоставляется по запросу на странице сервиса.
1. [2016-01-20] Введено ограничение на количество одновременных запусков тестов.
2. [2016-01-26] Введено ограничение на обращение к сервису с одного IP.

В планах:

0. Добавить кириллицу в таблицы
1. Добавить алгоритмы RIPEMD-160 и MySQL SHA1

P.S. Front-End для сервиса (для своей тренировки) написан на Django.
Позже выложу исходники 🙂

Визуальное распознавание хэшей

john-to-crack-the-password

13-символьный хэш:

DES (UNIX)

 

16-символьный хэш:

MySQL

 

32-символьные хэши:

без соли: md5 или md5($md5)

с солью 2 символа: md5($salt.$pass)

с солью 3,30 символов: md5(md5($pass).$salt)

с солью 5,8 символов: md5(md5($salt).md5($pass))

с солью 16,32 символа: md5($pass.$salt)

 

40-символьные хэши:

MySQL 5

признак: верхний регистр символов

SHA-1

признак: нижний регистр символов

​SHA1($username.$pass)

признак: наличие 4-символьной соли, обязательно наличие имени пользователя (username)

 

Другие хэши:

MD5 (UNIX)

признак: наличие $1$ в начале хэша

MD5 (WordPress)

признак: наличие $P$B или $P$9 в начале хэша

MD5 (PHPBB3)

признак: наличие $H$7 или $H$9 в начале хэша

​MD5 (APR)

признак: наличие $apr1$ в начале хэша

​OpenBSD Blowfish

признак: наличие $2a$ в начале хэша

SHA-256 (UNIX)

признак: наличие $5$ в начале хэша

SHA-512 (UNIX)

признак: наличие $6$ в начале хэша

Adding ES7 Class Properties to an ES6 React Component

ECMAScript 6

I’ve been investigating React and Flux over the last three posts, but one thing really didn’t sit right with me. That one thing is the React PropTypes in an ES6 class. I had to do something like this:

It’s ES6 code, but the fact that I have to munge the class after it has been created did not sit well. I wanted the propTypes to be a part of the class – just like a class in just about every other language.

Fortunately, there is a current proposal for class properties in ES7 (or ES2016 or ES vNext). It’s not ratified yet and the proposal may change. The ES6 version (above) is ratified and perfectly valid code. Let’s look at what the alternate ES7 version would look like:

I like the aesthetics of this version much more than the ES6 version. The propTypes is in the right place.

The bad news: This doesn’t lint and it doesn’t compile.
The good news: We can fix that!

Linting

I use eslint for my linter. You can change the parser that eslint uses so that it uses babel just like the compiler stage. Anything that would go through the compiler will go through the linter as well. To do this I need another package –babel-eslint:

Then I need to adjust my .eslintrc file to use the new parser:

Linting will pass if you run eslint on that JSX file, or if you run gulp eslint from my tutorial code. If you introduce an error (say, removing the semi-color from the return statement), eslint will still catch that.

Transpiling

To fix the transpiling, I need to make changes to my task. Here is the new task:

Of course, you will put the requires at the top of your gulp file, and have extra stuff in the config and files objects. However, the task itself works. Note that I need to configure babelify to add in an optional configuration list that enables es7.classProperties. If your code uses one of the other optional experimental features, you can list those too.

Thanks to this, I can now convert all my React components to use the ES7 class properties syntax. I hope this proposal makes it in.

http://shellmonger.com/2015/08/21/adding-es7-class-properties-to-an-es6-react-component/