Skip to content

Latest commit

 

History

History
82 lines (64 loc) · 2.15 KB

4.md

File metadata and controls

82 lines (64 loc) · 2.15 KB

4 - Komunikacja sieciowa

Czego się nauczymy

  • Jak wysyłać zapytania http
  • Na czym polega łamianie haseł
  • Napiszemy klienta do gry w Pythonie
  1. Wyświetl stronę https://www.google.com/ w terminalu
# pip install requests
import requests
requests.post(...)
  1. Zgadnij liczbę na jaką wylosował serwer, http://192.168.1.X:5000/code akceptuje czterocyfrowe liczby

  2. Włam się na http://192.168.1.X:5000/password używając listy najpopularniejszych haseł https://github.com/danielmiessler/SecLists/tree/master/Passwords

  3. Włam się na http://192.168.1.X:5000/password-json przesyłając {"password": "pass"}

import json
json.dumps({'a':'b'})
  1. Chcesz ściągnąć napisy do serialu: https://subtitleslive.com/pl/star-trek-enterprise

# pip install beautifulsoup4 lxml

from urllib.parse import unquote
from bs4 import BeautifulSoup
import requests
season = 2

def main():
    for i in range(1, 15):
        # TODO: ściągnij zawartość strony
        response = None
        url = get_url_for_episode(response)

        # TODO: ściągnij plik z napisami
        
        # TODO: rozpakuj plik zip automatycznie (ZipFile, BytesIO)


def get_url_for_episode(response):
    page = BeautifulSoup(response.content, 'lxml')
    rows = page.find_all(text='Polski')
    names = [x.parent.find_next_sibling('td') for x in rows if x.parent.name == 'td']
    names = [n for n in names if 'TSV' in n.text]
    url = names[0].find('a').attrs['href']
    url = url.split('target=')[1]
    return unquote(url)


if __name__ == '__main__':
    main()
  1. Napisz klienta do grania w OgarIO
# pip install pygame

import pygame
import requests

s = requests.Session()
pygame.init()
pygame.display.set_caption("OgarIO")
screen = pygame.display.set_mode((300, 300))
url = 'http://192.168.0.111:5000/'

while True:
    event = pygame.event.poll()
    # quit if the quit button was pressed
    if event.type == pygame.QUIT:
        exit()
    if event.type == pygame.KEYDOWN:
        pass
        # TODO: z obiektu event możemy się dowiedzieć jaki to był klawisz