МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра «Захист інформації»
/
ЗВІТ
до практичної роботи №3
ВИВЧЕННЯ МОВИ КОМПЛЕКСНИХ ЗАПИТІВ ТА
МОВИ ОПИСУ РЕГУЛЯРНИХ ВИРАЗІВ.
ПОШУК ОКРЕМИХ ТА ЗБІГ
НАБОРУ СИМВОЛІВ, МЕТАСИМВОЛИ
з курсу: “Менеджмент у сфері захисту інформації”
Львів 2019
Мета роботи – ознайомитися з мовою комплексних запитів та регулярними виразами, основами їх застосування в сфері захисту інформації; навчитися виконувати прості операції пошуку одного, декількох, наборами символів; використання метасимволів; навчитися створювати та тестувати регулярні вирази в AlertCenter Client «Контуру інформаційної безпеки SearchInform».
ЗАВДАННЯ ДО ПРАКТИЧНОЇ РОБОТИ
Створити базу даних (у вигляді текстового документу) об’єктів (згідно варіанту у Додатку А). База даних повинна складатися не менше ніж зі 100 об’єктів!
Детально описати властивості об’єкта пошуку (згідно варіанту у Додатку А).
Створити та протестувати регулярні вирази в AlertCenter Client «Контуру інформаційної безпеки SearchInform» для пошуку об’єктів (згідно варіанту у Додатку А).
№ варіанту
Об’єкт для пошуку
1
Мобільні телефони (окремий регулярний вираз для пошуку: номерів оператора Golden Telecom; МТС; life:); Київстар; Beeline; PEOPLEnet; Інтертелеком; усіх вище наведених операторів мобільного зв’язку).
1. Призначення регулярних виразів
Регулярні вирази (regular expressions), або скорочено регвир (regex) – інструментальні засоби, які призначені для вирішення дуже конкретних завдань. До таких завдань належать:
знайти файл, який містить текст car (незалежно від регістру), але не вказуючи місцезнаходження тексту car – в середині, на початку або в кінці слова (наприклад, scar, carry та incarcerate).
відобразити список усіх файлів у файловій системі комп’ютера і відфільтрувати цей список так, щоб визначити місцезнаходження лише тих файлів, які містять текст конфіденційно.
знайти у файлі певний текст, але лише в певному місці розташування (наприклад, на початку рядка або в кінці речення).
Кожне з вище наведених завдань може бути вирішене за допомогою відповідних інструкцій, які коротко записані рядком, у якому є текст і спеціальні інструкції-команди, що можуть виглядати так:
\b [Сс] [Аа] [Rr] \b.
1.1. Пошук за допомогою регулярних виразів
Регулярні вирази використовуються для пошуку тексту, причому шуканий текст може мати різний вигляд, як у випадку пошуку car в описаному вище прикладі. Завдання може полягати в тому, щоб відшукати car або CAR, або CaR. Складніша частина полягає в тому, щоб гарантувати, що відшукане входження car не входить в scar, carry або incarcerate. В цьому випадку необхідно використовувати регулярний вираз, а не просто текст car.
Зауваження. Перевірка на рівність (тобто рішення завдання: чи відповідає вказана користувачем адреса електронної пошти даному регулярному виразу?) і є операцією пошуку (пошук співпадіння). Виконується операція пошуку за усім введеним користувачем рядком (а не операція пошуку підрядка).
Регулярні вирази – це рядки, які використовуються для пошуку та оброблення тексту. Регулярні вирази записуються мовою регулярних виразів, тобто, за допомогою спеціалізованої мови, яка розроблена і призначена для вирішення завдань пошуку і заміни тексту. Як і будь-яка мова, мова регулярних виразів має спеціальний синтаксис і команди, які необхідно освоїти.
Мова регулярних виразів – не повноцінна мова програмування. Це зазвичай навіть не програма або утиліта, яку можна встановити і використовувати. Найчастіше регулярними виразами є «міні мови», які вбудовані в інші мови чи програми. На цей час практично будь-яка сучасна мова програмування (Perl, ASP, Visual Basic, .NET, С#, Java, JSP, РНР, ColdFusion тощо) або інструмент підтримує регулярні вирази.
Прикладами правильних (допустимих) регулярних виразів є:
Ben
.
www\. forta \. com
[a-zA-Z0-9_. ] *
< [Нh] 1>. *</ [Hh] 1>
\r \n \r \n
\d {3,3} – \d {3,3} – \d {4,4}
Використовуючи регулярні вирази практично завжди існує декілька рішень будь-якого завдання. Одні з них є простішими, інші – швидші або зручніші для перенесення, або зручніші для узагальнення. Досить рідко існує один єдино правильний спосіб запису регулярного виразу (мається на увазі, звичайно, що при усіх формах запису поставлена задача вирішується правильно).
2. Пошук окремих символів
2.1. Пошук заданого тексту
Ben – регулярний вираз. Регулярні вирази можуть містити простий текст (і можуть навіть складатися лише з простого тексту). Такий тип регулярних виразів практично не використовується.
Приклад 1.
Текст
Hello, my name is Ben. Please visit my website at http://www.forta.com/. (Привіт, мене звати Бен. Будь-ласка, відвідайте мій web-сайтів http://www.forta.com/).
Регулярний вираз
Ben
Результат
Hello, my name is Ben. Please visit my website at http://www.forta.com/.
Аналіз
Використаний в цьому випадку регулярний вираз – текст, і він знаходить входження Ben у вихідному тексті.
Приклад 2. Розглянемо інший приклад, використовуючи такий самий текст для пошуку, але інший регулярний вираз:
Текст
Hello, my name is Ben. Please visit my website at http://www.forta.com/. (Привіт, мене звати Бен. Будь-ласка, відвідайте мій web-сайтів http://www.forta.com/).
Регулярний вираз
my
Результат
Hello, my name is Ben. Please visit my website at http://www.forta.com/.
Аналіз
my – також статичний текст, проте, було виявлено два входження регулярного виразу у вихідному тексті.
Кількість входжень. За замовчуванням більшість механізмів оброблення регулярних виразів повертає лише перше входження. У попередньому прикладі зазвичай було б знайдено лише перше входження my, але не друге. У більшості реалізацій регулярних виразів передбачений механізм отримання списку всіх входжень (зазвичай повертаються в масиві або в деякому іншому спеціальному форматі). У JavaScript, наприклад, використовуючи додатковий прапорець g (глобальний), можна отримати масив, що містить всі входження.
Залежність від регістру. Регулярні вирази чутливі до регістру, так що Ben не відповідатиме ben. Проте, більшість реалізацій регулярних виразів дає змогу знаходити входження незалежно від регістру. У JavaScript, наприклад, можна вказати додатковий прапорець i, щоб під час пошуку не враховувався регістр.
2.2. Пошук будь-яких символів
Поки за допомогою регулярних виразів завданням було відшукати статичний (тобто заздалегідь заданий) текст. Тепер необхідно буде відшукати невідомі символи. Щоб ідентифікувати те, що розшукується, в регулярних виразах використовуються спеціальні символи або набори символів. Символ « . » (крапка) відповідає будь-якому символу.
Тому, операція пошуку с.t знайде cat і cot (та інші незмістовні слова).
Приклад 3.
Текст
salesl.xls sales3.xls nal.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Регулярний вираз
sales.
Результат
salesl.xls sales3.xls nal.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Аналіз
В цьому випадку використовується регулярний вираз sales. Для того, щоб відшукати усі імена файлів, що починаються з sales, за яким знаходиться ще один символ. Три з цих дев’яти файлів відповідають шаблону.
Зауваження. Часто термін шаблон, зразок, модель позначають регулярний вираз.
Символ « . » відповідає будь-якому символу – символу алфавіту, цифрі і навіть самій крапці:
Приклад 4.
Текст
salesl.xls sales3.xls nal.xls sales.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Регулярний вираз
sales.
Результат
salesl.xls sales3.xls nal.xls sales.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Аналіз
Цей приклад містить один додатковий файл – sales. xls. Файл був знайдений за допомогою шаблону sales., оскільки « . » знаходить будь-який символ.
У шаблоні можна використовувати декілька символів « . » або разом (один за одним: « .. » буде відповідати будь-яким двом символам один за одним), або в різних місцях шаблону.
Розглянемо інший приклад, в якому використовується такий самий текст. Цього разу необхідно відшукати всі файли для Північної Америки (na) і Південної Америки (sa) незалежно від того, яка цифра стоїть після цих скорочень:
Приклад 5.
Текст
salesl.xls sales3.xls nal.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Регулярний вираз
.а.
Результат
salesl.xls sales3.xls nal.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Аналіз
Регулярний вираз .а. дійсно знаходить nal, na2 і sal, але він також знайшов чотири інших входження, які не є необхідними. Це відбувається у зв’язку з тим, що шаблон відповідає будь-яким трьом символам, середній з яких а.
В цьому випадку необхідним є шаблон, який відповідає .а., за яким стоїть крапка.
Приклад 6.
Текст
salesl.xls sales3.xls nal.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Регулярний вираз
.а..
Результат
salesl.xls sales3.xls nal.xls
orders3.xls apacl.xls na2.xls
sales2.xls europe2.xls sal.xls
Аналіз
Шаблон .а.. в цьому випадку працює не краще, ніж .а.; додана після а. крапка відповідає будь-якому наступному символу. Пошук крапки, якщо спеціальний символ « . » відповідає будь-якому символу, наведено далі.
Текст
380501000001
380501000032
380671000030
380501000002
380501000033
380671000031
380501000003
380671000001
380671000032
380501000004
380671000002
380671000033
380501000005
380671000003
380631000001
380501000006
380671000004
380631000002
380501000007
380671000005
380631000003
380501000008
380671000006
380631000004
380501000009
380671000007
380631000005
380501000010
380671000008
380631000006
380501000011
380671000009
380631000007
380501000012
380671000010
380631000008
380501000013
380671000011
380631000009
380501000014
380671000012
380631000010
380501000015
380671000013
380631000011
380501000016
380671000014
380631000012
380501000017
380671000015
380631000013
380501000018
380671000016
380631000014
380501000019
380671000017
380631000015
380501000020
380671000018
380631000016
380501000021
380671000019
380631000017
380501000022
380671000020
380631000018
380501000023
380671000021
380631000019
380501000024
380671000022
380631000020
380501000025
380671000023
380631000021
380501000026
380671000024
380631000022
380501000027
380671000025
380631000023
380501000028
380671000026
380631000024
380501000029
380671000027
380631000025
380501000030
380671000028
380631000026
380501000031
380671000029
380631000027
Регулярний вираз
МТС: .050.
Київстар: .067.
Лайф: .063.
Результат для МТС
380501000001
380501000002
380501000003
380501000004
380501000005
380501000006
380501000007
380501000008
380501000009
380501000010
380501000011
380501000012
380501000013
380501000014
380501000015
380501000016
380501000017
380501000018
380501000019
380501000020
380501000021
380501000022
380501000023
380501000024
380501000025
380501000026
380501000027
380501000028
380501000029
380501000030
380501000031
380501000032
380501000033
Аналіз
В цьому випадку використовується регулярний вираз .050. для того, щоб відшукати усі імена файлів, що містять .050. і символи попереду та позаду.
ВИСНОВКИ
За допомогою різних операторів можна здійснювати пошук будь-яких запитів з будь-якою відомою інформацією.