From 6875c01cf2119ed06e1758a072ad656cffcd4f52 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20De=20Keersmaeker?=
 <francois.dekeersmaeker@uclouvain.be>
Date: Fri, 12 May 2023 11:27:49 +0200
Subject: [PATCH] DNS fix: do not modify last dot character

---
 src/packet/DNS.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/packet/DNS.py b/src/packet/DNS.py
index ce8fb30..52ebe42 100644
--- a/src/packet/DNS.py
+++ b/src/packet/DNS.py
@@ -76,10 +76,13 @@ class DNS(Packet):
         # Field is query name
         elif field == "qname" and question_record is not None:
             old_value = question_record.getfieldval("qname")
+            suffix = old_value[-1]
+            old_value_trimmed = old_value[:-1]
             # Randomly change one character in query name
-            new_value = old_value
-            while new_value == old_value:
-                new_value = Packet.bytes_edit_char(old_value)
+            new_value_trimmed = old_value_trimmed
+            while new_value_trimmed == old_value_trimmed:
+                new_value_trimmed = Packet.bytes_edit_char(old_value_trimmed)
+            new_value = new_value_trimmed + bytes(chr(suffix), "utf-8")
             question_record.setfieldval("qname", new_value)
         
         # Update checksums
-- 
GitLab