IO-Ports Fuzzer

https://chacker.pl/

Czas napisać nasz pierwszy fuzzer! Celem jest nauczenie się, jak różne części struktury pasują do siebie. W tym przypadku skupimy się na prostocie, a nie na użyteczności. Ten fuzzer będzie naiwnym generatorem losowych instrukcji IN/OUT:

Do tej nowej podklasy Fuzzer dodano dwie właściwości: listę odkrytych portów (1) (początkowo pustą) i czarną listę (2), która została zainicjowana portami używanymi przez port szeregowy, dzięki czemu możemy uniknąć bałaganu w transporcie protokołu. Pierwszą rzeczą, którą robi fuzz, jest sprawdzenie, czy odpowiedź ostatniej iteracji zawiera dane wynikające z poprzedniego wykonania instrukcji IN. Jeśli te dane nie mają ustawionych wszystkich bitów (3), oznacza to, że odczytaliśmy prawidłowy port, więc dodajemy go do listy odkrytych portów. Porty docelowe to losowo generowane 16-bitowe liczby całkowite (4) lub są pobierane z elementów listy odkrytych portów (5), ale nie mogą znajdować się na czarnej liście. Instrukcje IN lub OUT są wybierane losowo. IN zawiera dodatkowy kod do wysłania odpowiedzi, w tym numer portu i wartość operandu docelowego (6). OUT przyjmuje losową wartość (7) w swoim operandie źródłowym i odsyła pustą odpowiedź. Wywoływany jest fuzzer, który przekazuje argument wartości początkowej:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *