czwartek, 28 września 2017

Ze staroci - bezpieczeństwo

FFT - Free Forensic Tool is compilation of a few free programs/libraries (disk/file hexadecimal editor, checksum calculator etc.). A early beta (0.3) version developed by me in 2009/2010

WinAntiSniffer (by M. Tomaszewski) - a freeware Windows program designed to remotely detect NIC promiscuous mode. Current version (2.41) is also designed to detect ARP-spoofing attack. From M.Sc. thesis supervised by me
Ant (by M. Wardziński) - a program designed by my former student Marek Wardziński designed to compose your own ethernet frames and IP, TCP, UDP, IPX and SPX packets. It is available under GNU GPL. From M.Sc. thesis supervised by me.

Ze staroci - szachy komputerowe

 A few computer chess projects I was involved in

International Polish Computer Chess Championships - which I organized
Akiba - Chess program prototype (basic WinBoard support+Alpha-Beta 4 ply) developed by me. Warning! It is only prototype - it can move the pieces, but not seriously play chess :)
Wbunit - my Delphi unit for connect your chess program and WinBoard
Some Aspects of Chess Programming, M. Strejczek M.Sc. thesis supervised by me
Program grający w szachy, M. Rostek Dipl. Eng. thesis supervised by me (PL)

A few links concerning chess programming in Pascal and Delphi

Booot (Program from Ukraine with source code)
Chess 2000 - program with source (Delphi)
Chessfiz program without source code (Pascal, DOS) [Local copy]
Deep Ross - program with source (Delphi) [Local copy]
Geko - program with source (WinBoard interface and tournament generator)
IBCHess - interesting program with source (Delphi, bitboards) [Local copy]
JSSchach an old german Turbo Pascal chess program from 1993 with the complete source code [Local copy]
KCChess - Kevin and Craig's Chess Program - not too strong but very pleasant
Lasker an old german Turbo Pascal chess program from 1993 with the complete source code [Local copy]
Matter - checkmate seeker (minimax) in position from FEN file
Nero - engine in Pascal with WinBoard interface
P4 program in standard ISO 7185 Pascal
Resplendent Chessboard - interface and engine (Tom Simple Chess Program) as VCL object (Delphi and C++Builder) and version for Delphi XE7 (slightly modified by me)
RDChess - program with source
Schachkomponenten V.6.2 für Delphi 2.0 - VCL components (Delphi and C++Builder) in German
Tom Simple Chess Program - Pascal Version
Turbo Chess The original program from Borland Pascal with Objects 7.0
zzzzzz5 - Delphi 4 program with possibility of evaluation function changes [copy on archive.org] [local copy of the program with source]
Interesting page about pascal and chess [copy on archive.org]

A few other interesting links about chess programming

Armageddon - Grzegorz Sidorowicz page with links, resources and his chess program

ze staroci - notatki o sieciach komputerowych

Model referencyjny ISO/OSI


Ponieważ w różnych książkach na temat modelu referencyjnego wypisywane są różne rzeczy (co niestety często wynika z niskiej jakości tłumaczeń i redakcji podręczników polskojęzycznych) poniżej przedstawiam krótki opis, tego czym model jest na prawdę i czym zajmują się jego poszczególne warstwy. Zainteresowanych odsyłam do normy ISO/IEC 7498, którą można znaleźć tutaj
Celem modelu jest zaproponowanie podstawowych pojęć pomocnych przy tworzeniu standardów łączenia systemów oraz określenie obszarów działania tychże standardów. Omawiana norma ISO/OSI zawiera zatem specyfikację poszczególnych obszarów działania obecnych i przyszłych protokołów, dzieli wszystkie problemy związane z transportem danych w sieciach na grupy zwane warstwami.
Warstwa fizyczna odpowiedzialna jest za transport pojedynczych bitów oraz specyfikacje elektromagentycznych i mechanicznych właściwości mediów transmisyjnych. Uwaga: same media nie znajdują się "w modelu", albowiem nie są one "obszarem działania" ani "problemem"
Warstwa łącza danych (lub, jak wolą niektórzy "łączenia danych") zajmuje się łączeniem bitów w ramki, adresowaniem fizycznym, wykrywaniem błędów transmisyjnych i ich korekcją. W tej warstwie wprowadza się też pojęcie transmisji połączeniowej i bezpołączeniowej.
Warstwa sieci zajmuje się adresowaniem logicznym i trasowaniem (routingiem)
Warstwa transportu odpowiada za zapewnienie "przezroczystego" połączenia pomiędzy jednostkami warstwy sesji (stąd mówi się czasem, że ukrywa to co dzieje się w warstwach dolnych przed warstwami górnymi) oraz dostarcza mechanizmów połączeń typu "end-to-end" różnicując między innymi aplikacje działające na poszczególnych hostach (w przypadku protokołów stosu TCP/IP za pomocą numerów portów)
Warstwa sesji odpowiada za zarządzanie przebiegiem dialogu pomiędzy systemami (w tej warstwie występują takie pojęcia jak np. "simplex" czy "half-duplex")
Warstwa prezentacji jest odpowiedzialna za kodowanie i szyfrowanie przesyłanej informacji
Warstwa aplikacji zajmuje się specyfikacją interfejsu, który wykorzystują programy do przesyłania danych do sieci (poprzez kolejne warstwy modelu ISO/OSI).
Oprócz modelu ISO/OSI istnieje model zwany modelem Departamentu Obrony Rządu USA (Department of Defence, DoD) opisujący, to co dzieje się w stosie protokołów TCP/IP, dzielący zagadnienia sieciowe na 4 warstwy: procesów/aplikacji, host-to-host, intersieci i dostępu do sieci. Oba modele (ISO/OSI i DoD) opisują to samo, więc można je łatwo ze sobą porównać (tabela poniżej). Żeby było jeszcze trudniej, Institute of Electrical and Electronics Engineers (IEEE) wprowadził własny podział przy normalizacji protokołów I i II warstwy (w szczególności rodziny ethernet), dzieląc je odpowiednio: II warstwę na podwarstwy Logical Link Control (LLC) i Media Access Control (MAC) a I warstwę na podwarstwy Physical Coding Sublayer (PCS), Physical Medium Attachment (PMA) oraz Physical Medium Dependent (PMD). Jak się to wszystko ma do siebie, pokazuje rysunek poniżej.



Zaciskanie skrętki




Podstawowe struktury danych w sieciach



Ethernet Frame Format
    0                   1                   2                  0 1 2 3 
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2   46-1500 B
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+... ........+-+-+-+-+
   | Dest  MAC | Source MAC| T |    data octets ...           | CRC   |
   +--------------------------------------------- ... ........+-+-+-+-+

IPv4 Header Format
    0                   1                   2                   3  
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version|  IHL  |Type of Service|          Total Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Identification        |Flags|      Fragment Offset    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Time to Live |    Protocol   |         Header Checksum       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Source Address                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Destination Address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TCP Format
    0                   1                   2                   3  
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Source Port          |       Destination Port        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Acknowledgment Number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Data |           |U|A|P|R|S|F|                               |
   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
   |       |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |         Urgent Pointer        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

User Datagram Header Format
  
     0      7 8     15 16    23 24    31  
    

+--------+--------+--------+--------+ 
    
|     Source      |   Destination   | 
    
|      Port       |      Port       | 
    
+--------+--------+--------+--------+ 
    
|                 |                 | 
    
|     Length      |    Checksum     | 
    
+--------+--------+--------+--------+ 
    
|                                     
    
|          data octets ...            
    
+---------------- ...                 



User Datagram Pseudo Header Format

     0      7 8     15 16    23 24    31 
    

+--------+--------+--------+--------+
    
|          source address           |
    
+--------+--------+--------+--------+
    
|        destination address        |
    
+--------+--------+--------+--------+

|  zero  |protocol|   UDP length    |
    
+--------+--------+--------+--------+