Мови програмування для кібербезпеки

Середовище для програмування 1
Середовище для програмування 2

Уроки 69, 70

26.05.2026

Геолокація. Метадані

Вітаю! Сьогодні завершуємо вивчення напрясків дослідження OSINT

Крок 1: Що таке метадані

Метадані — це інформація, яка надає контекст чи опис даних. 

Це дані про дані. 

Метадані містять різні характеристики та властивості даних, такі як назва, опис, формат, дата створення, автор, розмір, місце збереження та інші деталі, які допомагають зрозуміти, організувати та керувати цими даними. 

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

Метадані є важливими для організації, пошуку та аналізу даних в різних контекстах, включаючи дослідження OSINT.

Мета дослідження:
вивчення ролі метаданих, зокрема метаданих фотографій, у процесі OSINT-досліджень.

Методологія:

  • Визначення типів метаданих, пов’язаних з фотографіями.
  • Збір прикладів фотографій та їхніх метаданих.
  • Оцінка інструментів для видобутку та аналізу метаданих фотографій.
Предметом дослідження є роль метаданих, зокрема тих, що стосуються фотографій, у процесі проведення досліджень OSINT.

А що може бути обʼєктом дослідження?

Приклад завдання.

Що можна дізнатися з фото яблука? 

  1. Завантажте зображення яблука, яке ви бачите на екрані.
  2. Завантажте оригінальне фото.
  3. Знайдіть інструменти, які допомагають визначити метадані.
Крок 2: Метадані. Завдання

1. Завантажте зображення з метаданими.

2. Використовуйте інструменти для аналізу метаданих фотографії. Наприклад, можна використовувати бібліотеку Python під назвою exifread для отримання метаданих.

3. Перевірте метадані зображення на наявність інформації про місцеперебування (геотеги), дату та час знімання, інші відомості про фотографію.

4. Спробуйте визначити, чи міститься в метаданих інформація, що ідентифікує певні відомості, такі як модель камери або автор фотографії.

5. Зробіть висновки на основі аналізу метаданих. Наприклад, можна спробувати визначити, де і коли була зроблена фотографія, і можливо, встановити, хто її автор.

▶️ Чи завжди ми можемо щось визначити за зображенням?


Крок 3: Геолокація

📍 Геолокація — це процес визначення місцеперебування об’єкта або особи на Землі.

Геолокація може бути важливою складовою OSINT-досліджень, оскільки вона дозволяє встановлювати, де було створено або опубліковано певну інформацію.

Перевірте себе:
- Як смартфон визначає нашу геолокацію?
 -Якими способами можна визначити власну геолокацію (програми, застосунки)?
 -Як можна приховати відстеження геолокації?

Мета дослідження:

 - Розгляд можливостей геолокації для визначення місця створення або розміщення інформації.

 - Дослідження методів збору геолокаційних даних та їх точності.

 - Об'єктом дослідження будуть методи та інструменти визначення геолокації, такі як GPS, Wi-Fi, IP-адреси.

А що буде предметом такого дослідження?

Методологія:

Аналіз різних джерел геолокаційних даних, таких як GPS, Wi-Fi, IP-адреси тощо.

Вивчення інструментів для аналізу та інтерпретації геолокаційних даних.

Порівняння точності різних методів геолокації.


Крок 4: Геолокація. Завдання

1. Знайдіть інформацію про географічне місце фотографії (геолокацію).

2. Знайдіть максимум додаткової інформації про фотографію.

3. Опишіть алгоритм пошуку та створіть список використаних ресурсів.

Підказка ⤵️

Вам буде нескладно знайти геолокацію зображення за допомогою одного з інструментів Google.

Але пошук геолокації за фото може виконуватися за допомогою різних інструментів та сервісів, окрім Google.

Спробуйте знайти та використати інші інструменти.



________________________________

Уроки 67, 68

19.05.2026

OSINT

Вітаю! Сьогодні вивчаємо OSINT як процес збору та аналізу інформації з відкритих дверей

Крок 1: Що таке OSINT

OSINT (Open Source Intelligence) — це процес збору та аналізу інформації з відкритих джерел для отримання розуміння певних ситуацій, осіб, організацій або подій. Цю інформацію можна отримати з таких джерел, як соціальні мережі, вебсайти, новинні ресурси, блоги тощо.

На практиці OSINT використовується для:

  • Проведення розвідувальних досліджень. Особи та організації можуть використовувати OSINT для збору інформації про конкурентів, можливих партнерів чи клієнтів.
  • Безпеки та кібербезпеки. Виявлення потенційних загроз і слабкостей в системах, моніторинг активності в мережах, виявлення шахраїв та загроз в інтернеті.
  • Отримання правдивої інформації. Перевірка правдивості даних, поданих особами або організаціями, і підтвердження чи спростування інформації.
  • Збору інформації для рішень. Допомагає приймати обґрунтовані рішення в різних сферах, включно з бізнесом, політикою, кібербезпекою тощо.

OSINT є потужним інструментом, який можна використовувати в різних сферах діяльності для отримання важливої інформації з відкритих джерел.

👉Хто цим займається в Україні?👈

З чого починати знайомство з OSINT?

👉Першим кроком може бути пошук зображень (наприклад, пам’яток у своєму районі, цікавих місць на планеті, споруд та особистостей)

👉Алгоритм пошуку


Крок 2: Пошук за фото

В сучасному світі інформаційних технологій, велике значення надається можливостям пошуку та ідентифікації об’єктів на основі зображень. Методи виявлення та аналізу фотографій стали важливими інструментами для OSINT-досліджень.

Можливості пошуку за фото містять у собі розпізнавання облич, об’єктів, локацій тощо. Зокрема, для цього використовуються алгоритми комп’ютерного бачення, штучного інтелекту та нейронних мереж. Пошук за фотографіями може бути важливим інструментом при встановленні інформації про людей, події або предмети.

Мета дослідження:

  • Вивчення сучасних методів пошуку та аналізу фотографій у контексті OSINT;
  • Оцінка ефективності доступних інструментів для пошуку за зображеннями.

Об'єкт дослідження: засоби та методи для аналізу даних за фото. 

Предмет дослідження: ефективність методів пошуку та аналізу фотографій у контексті OSINT (які саме атрибути ми можемо знайти на наданих фото).

Методологія:

  • Проведення огляду доступних технологій та алгоритмів для пошуку за фотографіями;
  • Збирання та аналіз прикладів успішних пошуків за допомогою фотофіксації;
  • Порівняння різних інструментів та методів для пошуку об’єктів на фотографіях.

ЗАВДАННЯ

Що вам вдасться знайти, окрім місця, де зроблено це фото? 👇

______________________________________________

Уроки 65, 66

12.05.2026

Python проти хробака Морріса. 

Безпечний цифровий простір

Вітаю! Сьогодні вивчаємо створення створення програм, які б не перевантажували пам'ять комп'ютера

Крок 1: Python проти хробака Морріса

Переповнення буфера, яке вважається однією з найбільш стійких вразливостей у сфері програмного забезпечення, є серйозною загрозою безпеки систем і часто використовується зловмисниками для здійснення атак. Воно виникає, коли дані записуються за межі буфера фіксованої довжини, що може призвести до пошкодження даних, виконання шкідливого коду або збою програми.


Крок 2: Приклад

Хоча Python дає змогу створювати масиви та керувати ними різними способами, при використанні масиву попередньо визначеного розміру програма може видавати IndexError, щоб уникнути переповнення буфера:

buffer = [0]*10
for i in range(0,14):
    buffer[i] = 7

У цьому коді помилка IndexError може виникати або не виникати залежно від кількості введених елементів:

tests = [0]*10
count = int(input("Введіть кількість елементів: "))

for i in range (0,count):
    test = int(input("Введіть значення: "))
    testі[i] = test
print(tests)

Крок 3: Завдання

посилання на завдання

ДОШКА ДЛЯ ВІДПОВІДЕЙ

___________________________________________

Уроки 63, 64

05.05.2026

Словники та списки. 

Криптографічні бібліотеки Python

Вітаю! Сьогодні працюємо із символьними даними

Крок 1: Словники та списки

Для роботи з наборами даних Python надає такі вбудовані типи: списки, кортежі, множини та словники. 

👉Списки

Список — це тип даних, який зберігає набір або послідовність елементів.

#Приклад 1
#Заповнення та виведення списку
list_lit = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
print(list_lit)



#Приклад: 2

known_words = ['Apple', 'Garbage', 'Monkey', 'Pepper', 'Cardamon', 'Caracas']
REAL_PASSWORD = "CardamonGarbage"
for word1 in known_words:
   for word2 in known_words:  
      pass_try = word1 + word2
      if pass_try == REAL_PASSWORD:
        print("password: ", pass_try)
        break

👉Словники

Словник є типом даних, який базується на відображенні пар типу (ключ: значення).

Приклад словника:

dict_cod = {1:"A", 2:"B", 3:"C", 4:"D", 5:"E", 6:"F", 7:"G", 8:"H", 9:"I", 10:"J", 11:"K",
12:"L", 13:"M", 14:"N", 15:"O", 16:"P", 17:"Q", 18:"R", 19:"S", 20:"T", 21:"U", 22:"V", 23:"W",
24:"X", 25:"Y", 26:"Z" }
print(dict_cod)


Крок 2: Шифр Атбаш (зворотній шифр) з використанням списку

dict_cod = {"A":"Z", "B":"Y", "C":"X", "D":"W", "E":"V", "F":"U",
"G":"T", "H":"S",  "I":"R", "J":"Q", "K":"P", "L":"O", "M":"N", "N":"M", "O":"L", "P":"K",
"Q":"J", "R":"I", "S":"H", "T":"G", "U":"F", "V":"E", "W":"D", "X":"C", "Y":"B", "Z":"A"}

text = input()
for i in text:
    print(dict_cod[i], end="")

🔑 Розшифруйте повідомлення XSVXPBLFIKZHHDLIW та надішліть відповідь.

Крок 3: Криптографічна бібліотека

Бібліотека cryptography містить криптографічні алгоритми, такі як симетричні шифри, дайджести повідомлень і функції виведення ключів.

Симетрична криптографія

Щоб зашифрувати щось за алгоритмом симетричного шифрування, достатньо імпортувати бібліотеку та викликати метод генерації ключа.

Повідомлення буде зашифровано методом encrypt:

from cryptography.fernet import Fernet

key = Fernet.generate_key()
f = Fernet(key)
text = input("Введіть текст: ")
encrypted = f.encrypt(text.encode())
print(encrypted)

Для розшифровки повідомлення можна використовувати метод decrypt:

decrypted = f.decrypt(encrypted)


Крок 4:  Завдання

на 8 балів - виконай завдання із Крок 2

на 12 балів 👇

from cryptography.fernet import Fernet
key = Fernet.generate_key()
f = Fernet(key)
print("Защифруємо")
text = input("Введіть текст: ")
encrypted = f.encrypt(text.encode())
print(encrypted)
print("Розшифруємо")
decrypted = f.decrypt(encrypted)
print(decrypted)

▶️ Виконайте завдання:

  1. Перевірте роботу програми.
  2. Додайте коментарі до кожного рядка з поясненням, що саме виконується.
  3. Знайдіть, які ще методи є в бібліотеці cryptography.
  4. Попрацюйте з запитами до нейронної мережі щодо інших методів та протестуйте запропоновані коди.

_____________________________

Уроки 61, 62

28.04.2026

Рядки. Кодування текстової інформації


Вітаю! Сьогодні працюємо із символьними даними

Крок 1: Рядки

Рядки — це об’єкти, що складаються з послідовності символьних даних. Рядок можна вводити або ініціалізувати (присвоїти значення):

s1 = input()
s2 = ‘Просто присвоїли’
s3 = "I можна в подвійних лапках"

 

Що можна робити із рядковими змінними?

Є багато методів, які дають змогу робити з рядками всі можливі операції: копіювання, поєднання, пошук, зміну регістра, перевірку на тип даних тощо.

Крок 2: Приклади використання методів роботи з рядками

1. len()
Функція len() повертає довжину рядка, тобто визначає кількість символів, що містить рядок, включно із пропусками:

# Довжина рядка
s = input("Введіть рядок: ")
print("В рядку «", s, "» знаходиться ", len(s), "символів")

2. in
Оператор приналежності in перевіряє, чи входить деякий підрядок у вказану строку. Цей оператор повертає значення True або False в залежності від результату.

# Пошук підряшка
a = input("Введіть код картки, який потрібно знайти у великому тексті")
b = "Номер картки 444925101000999"
if a in b:
        print(a)
else:
        print("Не знайдено")

3. reversed()
Функція reversed() просто перевертає рядок.

# Рядок в зворотному порядку

for elem in reversed("password"):
            print(elem)

Приклад:

print("--- Професійний Дешифратор Повідомлень ---")

user_input = input("Введіть зашифровані коди (через дефіс, наприклад 72-105): ")

if not user_input:

    print("Помилка: рядок порожній!")

else:

    try:

    

        codes_list = user_input.split("-")

        

        decoded_message = ""


        for code in codes_list:

            clean_code = code.strip()

           

            decoded_message += chr(int(clean_code))


        print("\n[РЕЗУЛЬТАТ РОЗШИФРУВАННЯ]")

        print(f"Повідомлення: {decoded_message}")

        

    except ValueError:

        print("Помилка: переконайтеся, що ви вводите лише числа, розділені дефісом.")


print(f"Розшифроване повідомлення: {decoded_message}")

Що тут закодовано:
72-97-99-107-32-116-104-101-32-112-108-97-110-101-116


80-121-116-104-111-110-32-105-115-32-115-97-102-101

Створи власний пароль і обміняйся повідомленнями з однокласниками:

for i in range(65, 91):  # Латинські літери від A до Z

    print(f"Число {i} відповідає символу {chr(i)}")

Крок 3: Кодування текстової інформації

У версії мови Python усі рядки є послідовностями символів  Кожному символу відповідає одне число, і кожному числу відповідає один символ.

Python не підтримує символьний тип, символ розглядається як рядок з довжиною 1. Усі символи в рядку індексовані з 0. Доступ до символів здійснюється за допомогою індексів.


Для визначення символу і його коду можна використовувати функції:

ord — код символу;
chr
 — символ по коду.

#Приклад 1
#Літери та їхні коди:

lit = 'A'
print(ord(lit))
next = ord(lit) + 1
print(chr(next))
#Приклад 2
#Виведення англійських літер:

for i in range(65, 92):
    print (i, chr(i))
#Приклад 3
#Виведення кодів символів тексту:

s = "PYTHON"
for i in range(len(s)):
     print(ord(s[i]), end="")

Приклад:

char = input("Введіть одну літеру для тесту: ")

secret_code = ord(char) + 1

secret_char = chr(secret_code)

print(f"Оригінал: {char} -> Код: {ord(char)}")

print(f"Зашифровано: {secret_char} -> Код: {secret_code}")

Крок 4: Завдання

 Напишіть програму, яка розшифровує повідомлення: "CRYPTOGRAPHY"

def decrypt_caesar_cipher(text, shift=1):

  decrypted_text = ""


  for char in text:

      if char.isalpha():

          ascii_offset = ord('a') if char.islower() else ord('A')

          decrypted_text += chr((ord(char) - ascii_offset - shift) % 26 + ascii_offset)

      else:

          decrypted_text += char


  return decrypted_text


encrypted_word = "CRYPTOGRAPHY"

decrypted_word = decrypt_caesar_cipher(encrypted_word, shift=1)


print(f"The decrypted word is: {decrypted_word}")

ПРАКТИЧНА РОБОТА


______________________________________________________

Уроки 59, 60

21.04.2026

Умови. Цикли

Вітаю! Сьогодні пригадуємо алгоритми опису умов та циклів у Python, також застосовуємо їх для створення програм з кібербезпеки

Крок 1: Умови

Часто у програмуванні виникає ситуація, коли за певних обставин необхідно виконати одні дії, а за інших обставин — інші. У такому випадку використовується умовний оператор.

Умови можуть бути короткої, повної або складеної форми.


Для побудови складніших умовних конструкцій використовуються поєднання умов та логічних операцій.

Python дуже вибагливий до відступів і пробілів, бо саме так він об’єднує команди у групи (блоки). 

В умовних конструкціях, порівнюючи, використовують оператор «==», а не «=». 

Крок 2: Цикли

Для повторення команд і блоків команд використовують цикли. Це не просто робить код коротким й структурованим, але й дає змогу запрограмувати процеси, що повторюються за певних умов або певну кількість разів.

Крок 3: Завдання
Змушуємо користувача вводити пароль, доки він не збігається з еталонним:
pasw_et = "@__Ab1"
pasw = input("Введіть пароль")
while pasw_et != pasw:
    print("Паролі не збігаються. Введіть ще раз")
    pasw = input("Введіть пароль")
print("Ок")

на 8 балів - запусти програму і зроби скриншот виконання
на 12 балів - ускладни 1 рядок, щоб користувач вводив пароль самостійно та у 3 рядоку встанови кількість спроб

Скриншот роботи програми надішли на електронну скриньку teacheritschool1@gmail.com

____________________________________________

Уроки 57, 58

14.04.2026

Мови програмування для кібербезпеки. 

Змінні

Вітаю! Сьогодні починаємо вивчення третьої теми "Програмування для кібербезпеки". У фільмах про хакерів можна побачити сцени, де кібергеній вводить щось на чужому комп’ютері, а тоді в один момент усі проблеми вирішені! Пароль підібрано, сайт зламано, гроші прямо через принтер з банку падають у руки. При цьому хакеру десь років 14 і він все вивчимо сам, бо в нього хороший інтернет.

То в фільмах.
А що в реальності?
Навчання кібербезпеки потребує багато часу, бажання і терпіння. Й окрім хорошої математики та логіки, звичайно ж потребує і другої грамотності — вміння кодувати.

Крок 1: Які мови програмування використовують у кібербезпеці?
Для професіонала з кібербезпеки розуміння мов кодування є важливим, оскільки лише так можна «розмовляти» мовою тих, від кого потрібен захист. Розуміння того, як саме різні мови програмування використовуються в кібербезпеці, допоможе визначити методи зловмисника та зменшити потенційну шкоду. Крім того, можна створювати інструменти, які будуть захищати системи та мережі від кібератак. 
Найпопулярніші мови програмування, які використовуються в кібербезпеці:
Крок 2: Python і кібербезпека 
Python є надзвичайно корисною мовою програмування для професіоналів з кібербезпеки, оскільки ця мова може виконувати безліч функцій, зокрема аналіз шкідливих програм, сканування чи тестування на проникнення. Саме через широке використання та найкоротшу криву навчання Python часто рекомендують як першу мову, яку повинні вивчати не знайомі з кібербезпекою люди.

Python став добре відомим і широко використовуваним завдяки великій кількості бібліотек, тобто фахівцям з кібербезпеки наразі не потрібно винаходити велосипед зі звичайними завданнями, і в більшості випадків вони можуть швидко знайти вже доступний інструмент аналізу загроз кібербезпеки або провести тестування на проникнення.
Крок 3: Змінні
У задачі будь-якої складності ми оцінюємо:
  • З якими даними працює програма (що на вході)?
  • Що має бути на виході програми (вихідні дані)?
  • Які є обмеження по швидкості виконання програми та обчислювальним ресурсам?
  • Як це зробити, враховуючи дані обмеження?

Дані зберігаються у змінних. Ми одразу домовимося давати змінним такі назви латиницею, щоб розуміти, за яку інформацію вони відповідають. Змінні можна ініціалізувати, присвоївши їм значення, при цьому змінні отримують певний тип (наприклад, число або рядок символів).

Знайдіть у прикладах, яка змінна є числом, а яка — рядком.

Крок 4: Завдання+ практична робота

«Забули пароль?»

У цьому прикладі ми перевіряємо, чи збігаються два введені паролі. Опісля повідомляємо результат користувачу. У коді описана ситуація, коли паролі мають однакове значення. Допишіть варіант виконання, коли вони не будуть однаковими.

pasw_new1= input()
pasw_new2= input()
if (pasw_new1 == pasw_new2):
print("Пароль успішно підтверджено")
Скриншот роботи програми надішли на електронну скриньку teacheritschool1@gmail.com

Немає коментарів:

Дописати коментар