# Notatki o wydaniu v1.2.0.0 (2026-01-25)

LLMS index: [llms.txt](/llms.txt)

---

## Dodano

* **NOWOŚĆ**: Obsługa wieloliniowych rekordów dla bloków szczegółów DNS PACKET
  * Wpisy w kontekście PACKET mogą teraz zawierać szczegółowe informacje o połączeniu TCP/UDP oraz strukturze komunikatu DNS
  * Bloki szczegółów są analizowane do ustrukturyzowanego formatu JSON w nowej kolumnie `Details`
  * Zawiera: informacje o gnieździe, adres/port zdalny, dane czasowe, strukturę komunikatu (XID, Flags, QCOUNT itd.)
  * Sekcje DNS (QUESTION, ANSWER, AUTHORITY, ADDITIONAL) są przechwytywane z pełnymi szczegółami rekordów
  * Zakodowane nazwy domen w blokach szczegółów są automatycznie konwertowane do formatu FQDN
* **NOWOŚĆ**: Kolumna `Details` w wyjściu CSV
  * Zawiera ustrukturyzowane dane JSON dla wpisów PACKET z blokami szczegółów
  * Pusta dla wpisów PACKET bez szczegółów oraz dla wszystkich kontekstów innych niż PACKET
  * Umożliwia głęboką analizę pakietów i dochodzenia kryminalistyczne zapytań/odpowiedzi DNS
* **NOWOŚĆ**: Przełącznik `NoDetailsParsing` dla optymalizacji wydajności
  * Pomija kosztowne parsowanie JSON bloków szczegółów PACKET
  * ***Może poprawić*** szybkość przetwarzania o **30-50%** dla logów z wieloma blokami szczegółów
  * Używaj przy przetwarzaniu bardzo dużych plików (100MB+) gdy szczegółowa struktura pakietów nie jest potrzebna
  * Bloki szczegółów nadal są zbierane w kolumnie Information, ale kolumna Details pozostaje pusta
* **NOWOŚĆ**: Obsługa wieloliniowego kontynuowania dla kontekstów innych niż PACKET
  * Konteksty EVENT, Note, DSPoll i inne mogą teraz rozciągać się na wiele linii
  * Wcięte linie kontynuacji są automatycznie łączone z polem Information głównego rekordu
  * Zachowuje kompletne komunikaty o błędach, aktualizacje stref i dane diagnostyczne
* **NOWOŚĆ**: `ContextFilter` rozpoznaje dodatkowe typy kontekstów: `DSPoll`, `Init`, `Lookup`, `Recurse`, `Remote`, `Tombstone`
  * Efekt: `Convert-DNSDebugLogFile` może teraz uwzględniać/wykluczać te wpisy diagnostyczne i cyklu życia za pomocą `-ContextFilter`
* **NOWOŚĆ**: Wyjście statystyk zawiera teraz dwa dedykowane pliki
  * `_Statistic.csv`: Dzienne liczniki rekordów według typu kontekstu (Date, Context, Count, ComputerName)
  * `_PacketStatistic.csv`: Dzienne liczniki PACKET według klienta/protokołu/kierunku/typu (Date, ClientIP, Protocol, Direction, QuestionType, Count, ComputerName)
  * Korzyść: Bardziej ukierunkowane raportowanie (wolumen kontekstów operacyjnych vs. rozkład ruchu DNS)
* Generowanie JSON dla bloków szczegółów PACKET jest zoptymalizowane pod kątem wydajności (ręczne parsowanie zamiast regex)

## Zmiany

* **PRZEŁOMOWA**: Wyjście CSV zawiera teraz 18 kolumn (dodano kolumnę `Details` przed `ComputerName`)
  * Nowy porządek kolumn: DateTime, ThreadId, Context, PacketId, Protocol, Direction, ClientIP, Xid, Type, Opcode, FlagsHex, FlagsChar, ResponseCode, QuestionType, QuestionName, Information, **Details**, ComputerName
  * Wpływ: Skrypty opierające się na pozycjach kolumn muszą zostać zaktualizowane
  * Korzyść: Zaawansowane możliwości analizy pakietów bez zmiany dotychczasowego zachowania kolumny Information
* Przetwarzanie linii danych zostało zrefaktoryzowane do wczytywania wszystkich linii do pamięci dla efektywnego wykrywania wieloliniowych rekordów
  * Wydajność: Minimalny wpływ dzięki zoptymalizowanemu użyciu List<string>
  * Korzyść: Umożliwia dokładne przewidywanie bloków szczegółów i linii kontynuacji
* Nazwy zapytań, które są brakujące lub zakodowane jako puste, są teraz obsługiwane łagodnie (bez błędów parsowania); wyjście CSV będzie zawierać pustą wartość QuestionName, gdy brak

## Ulepszenia

* Parsowanie `Convert-DNSDebugLogFile` jest bardziej odporne: surowsza walidacja linii i lepsze wyodrębnianie zmniejszają fałszywe/nieprawidłowe wiersze z uszkodzonych logów, zachowując format wyjścia CSV/statystyk
* Wykrywanie kontekstu PACKET rozróżnia proste zapytania i zapytania z blokami szczegółów
* Puste linie po wpisach PACKET bez szczegółów są prawidłowo pomijane
* Dekodowanie nazw domen w blokach szczegółów korzysta z istniejącej funkcji `ConvertTo-Fqdn` dla spójności

## Wydajność

* Utrzymano szybkość przetwarzania dla logów bez bloków szczegółów
* Przełącznik `NoDetailsParsing` zapewnia 30-50% poprawę szybkości, gdy parsowanie JSON nie jest potrzebne
* Efektywne zarządzanie stanem podczas przetwarzania wieloliniowych rekordów
* Zoptymalizowane operacje na łańcuchach (TrimStart, Join) zamiast regex do obsługi linii kontynuacji

## Uwagi

* Te zmiany są zaprojektowane tak, aby były kompatybilne wstecz dla normalnego użytkowania. Jeśli polegasz na dokładnym zestawie nazw kontekstów lub wcześniej ścisłym parsowaniu, prosimy o weryfikację skryptów downstream
* Nowa kolumna `Details` jest zawsze obecna w wyjściu CSV; użyj `NoDetailsParsing`, aby pozostawić ją pustą dla wydajności
* Istniejące skrypty parsujące CSV według pozycji kolumn muszą uwzględnić nową kolumnę `Details` (pozycja 17, przed ComputerName)
