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

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

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

Урок № 69, 70

28.05.2025

Повторення вивченого за 10 клас. Рефлексія

асинхронно

Вітаю! Маємо останній урок з інформатики у 10 класі. Вітаю із закінченням навчального року, бажаю гарного літнього відпочинку

👉Виконаємо рефлексію

Посилання на дошку

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

_______________________________

Уроки 67, 68

21.05.2025

OSINT

АСИНХРОННО

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Завдання просте, але в ньому є особливий зміст.

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

Крок 3: Приклад пошуку за фото

Посилання на приклад

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

Перше видання «Кобзаря» Тараса Шевченка мало лише 8 творів та було видано накладом у 1000 примірників на цигарковому папері. Зараз же «Кобзарем» часто називають усі збірки поетичних творів Тараса Шевченка і видаються вони у різних варіаціях. Так існують і досить незвичайні книги, одну з яких ви бачите на зображенні.

Посилання на зображення

Завдання

1. За фото знайдіть місце його створення, матеріал книги. Доповніть цікавими фактами знайденими під час пошуків.

💬 Прокоментуйте методи пошуку кожного пункту запитання.

2. Проаналізуйте місцевість, де було зроблене перше фото. Припустіть, де могло бути зроблене друге фото. 

Підказка ⤵️

Для цього зручно скористатися Google Maps*.

 Напишіть хід пошуку та відповідь. Надішліть покликанням на документ.

_____________________________

Уроки 65, 66

14.05.2025

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

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

Урок у Meet о 12.55 за посиланням

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

Крок 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: Завдання

Проведіть тестування обох прикладів. 

Перевірте питання зі списку безпеки коду:

  1. Чи вдалося змінити Приклад 1, щоб він не видавав помилку?
  2. Виправте помилку у Приклад 2 (на 12 балів)

___________________________________________

Уроки 63, 64

07.05.2025

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

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

Урок у Meet о 12.55 за посиланням

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

Крок 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

30.04.2025

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

АСИНХРОННО

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

Крок 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)

Крок 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="")

Крок 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}")


8 балів - просто протестувати код

10 балів - замінити "CRYPTOGRAPHY" на іше слово

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

_______________________

Уроки 59, 60

23.04.2025

Умови. Цикли

Урок у Meet о 12.55 за посиланням

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

Крок 1: Умови

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

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


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

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

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

Крок 2: Цикли

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

Крок 3: Завдання
Змушуємо користувача вводити пароль, доки він не збігається з еталонним:

pasw_et = "@__Ab1"
pasw = input("Введіть пароль")
while pasw_et != pasw:
print("Паролі не збігаються. Введіть ще раз")
pasw = input("Введіть пароль")
print("Ок")


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

_______________________________________________________

Уроки 57, 58

16.04.2025

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

Змінні

Урок у Meet о 12.55 за посиланням

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

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

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

    Python;
    Крок 2: Python і кібербезпека 
    Python є надзвичайно корисною мовою програмування для професіоналів з кібербезпеки, оскільки ця мова може виконувати безліч функцій, зокрема аналіз шкідливих програм, сканування чи тестування на проникнення. Саме через широке використання та найкоротшу криву навчання Python часто рекомендують як першу мову, яку повинні вивчати не знайомі з кібербезпекою люди.

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

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

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

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

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

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

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

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

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