nopasaran 0.2.91__tar.gz → 0.2.93__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nopasaran-0.2.91 → nopasaran-0.2.93}/PKG-INFO +1 -1
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/dns_primitives.py +10 -13
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran.egg-info/PKG-INFO +1 -1
- {nopasaran-0.2.91 → nopasaran-0.2.93}/setup.py +1 -1
- {nopasaran-0.2.91 → nopasaran-0.2.93}/LICENSE +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/README.md +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/__main__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/controllers/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/controllers/controller.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/controllers/factory.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/controllers/protocol.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/decorators.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/definitions/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/definitions/commands.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/definitions/control_channel.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/definitions/events.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/definitions/transitions.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/errors/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/errors/parsing_error.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/http_2_utils.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/interpreters/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/interpreters/action_interpreter.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/interpreters/condition_interpreter.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/interpreters/interpreter.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/interpreters/transition_interpreter.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/machines/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/machines/action_queue.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/machines/state_machine.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/parsers/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/parsers/interpreter_parser.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/parsers/state_machine_parser.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/action_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/certificate_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/client_echo_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/control_channel_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/data_channel_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/data_manipulation.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/event_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/http_1_request_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/http_1_response_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/http_2_client_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/http_2_server_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/http_simple_client_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/https_1_request_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/https_1_response_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/icmp_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/io_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/ip_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/nested_machine_utils.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/probing_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/replay_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/server_echo_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/signaling_primitive.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/tcp_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/timing_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/tls_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/udp_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/condition_primitives/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/condition_primitives/condition_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/condition_primitives/variable_comparisons.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/transition_primitives/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/transition_primitives/assignment_transitions.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/transition_primitives/transition_primitives.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/sniffers/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/sniffers/sniffer.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/__init__.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/checks.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/echo_socket_server.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/http_1_socket_server.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/http_2_overwrite.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/http_2_socket_base.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/http_2_socket_client.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/http_2_socket_server.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/tools/https_1_socket_server.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/utils.py +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran.egg-info/SOURCES.txt +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran.egg-info/dependency_links.txt +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran.egg-info/entry_points.txt +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran.egg-info/requires.txt +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran.egg-info/top_level.txt +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/setup.cfg +0 -0
- {nopasaran-0.2.91 → nopasaran-0.2.93}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nopasaran
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.93
|
4
4
|
Summary: NoPASARAN is an advanced network tool designed to detect, fingerprint, and locate network middleboxes in a unified framework.
|
5
5
|
Home-page: https://github.com/BenIlies/NoPASARAN
|
6
6
|
Author: Ilies Benhabbour
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/dns_primitives.py
RENAMED
@@ -3,7 +3,6 @@ import random
|
|
3
3
|
import string
|
4
4
|
import logging
|
5
5
|
from nopasaran.decorators import parsing_decorator
|
6
|
-
from scapy.layers.dns import dnsqtypes
|
7
6
|
|
8
7
|
|
9
8
|
class DNSPrimitives:
|
@@ -837,15 +836,10 @@ class DNSPrimitives:
|
|
837
836
|
48: "DNSKEY", 255: "ANY"
|
838
837
|
}
|
839
838
|
|
840
|
-
dnsqtypes = dnsatypes # if you meant dnsatypes to cover both
|
841
|
-
|
842
839
|
dns_layer = None
|
843
840
|
|
844
|
-
# Try to get DNS layer from packet
|
845
841
|
if hasattr(packet, 'haslayer') and packet.haslayer(DNS):
|
846
842
|
dns_layer = packet.getlayer(DNS)
|
847
|
-
|
848
|
-
# Try to parse DNS from Raw if not directly available
|
849
843
|
elif hasattr(packet, 'haslayer') and packet.haslayer('Raw'):
|
850
844
|
try:
|
851
845
|
dns_layer = DNS(packet['Raw'].load)
|
@@ -869,33 +863,36 @@ class DNSPrimitives:
|
|
869
863
|
"answers": []
|
870
864
|
}
|
871
865
|
|
872
|
-
# Handle DNS
|
866
|
+
# Handle DNS questions
|
873
867
|
if getattr(dns_layer, "qdcount", 0) > 0 and getattr(dns_layer, "qd", None):
|
874
868
|
try:
|
875
869
|
question = dns_layer.qd
|
876
870
|
formatted_response["questions"].append({
|
877
871
|
"qname": question.qname.decode() if isinstance(question.qname, bytes) else question.qname,
|
878
872
|
"qtype": question.qtype,
|
879
|
-
"qtype_name":
|
873
|
+
"qtype_name": dnsatypes.get(question.qtype, f"Unknown({question.qtype})"),
|
880
874
|
"qclass": question.qclass
|
881
875
|
})
|
882
876
|
except Exception as e:
|
883
877
|
logging.error(f"[Parsing] Failed to parse DNS question: {e}")
|
884
878
|
|
885
|
-
# Handle DNS answers
|
879
|
+
# Handle DNS answers (support for lists and chained payloads)
|
886
880
|
try:
|
887
|
-
ans = dns_layer.an
|
888
|
-
|
881
|
+
ans = dns_layer.an
|
882
|
+
for _ in range(getattr(dns_layer, "ancount", 0)):
|
883
|
+
if not isinstance(ans, DNSRR):
|
884
|
+
break
|
889
885
|
answer_info = {
|
890
886
|
"rrname": ans.rrname.decode() if isinstance(ans.rrname, bytes) else ans.rrname,
|
891
887
|
"type": ans.type,
|
892
888
|
"type_name": dnsatypes.get(ans.type, f"Unknown({ans.type})"),
|
893
889
|
"rclass": ans.rclass,
|
894
890
|
"ttl": ans.ttl,
|
895
|
-
"rdata": str(ans.rdata),
|
891
|
+
"rdata": ans.rdata.decode() if isinstance(ans.rdata, bytes) else str(ans.rdata),
|
892
|
+
"rdlen": getattr(ans, "rdlen", None)
|
896
893
|
}
|
897
894
|
formatted_response["answers"].append(answer_info)
|
898
|
-
ans = ans.payload
|
895
|
+
ans = ans.payload
|
899
896
|
except Exception as e:
|
900
897
|
logging.error(f"[Parsing] Failed to parse DNS answers: {e}")
|
901
898
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: nopasaran
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.93
|
4
4
|
Summary: NoPASARAN is an advanced network tool designed to detect, fingerprint, and locate network middleboxes in a unified framework.
|
5
5
|
Home-page: https://github.com/BenIlies/NoPASARAN
|
6
6
|
Author: Ilies Benhabbour
|
@@ -13,7 +13,7 @@ with open(requirements_file, "r") as f:
|
|
13
13
|
# Version will automatically be updated when pushed on the main branch
|
14
14
|
setup(
|
15
15
|
name="nopasaran",
|
16
|
-
version='0.2.
|
16
|
+
version='0.2.93',
|
17
17
|
author="Ilies Benhabbour",
|
18
18
|
author_email="ilies.benhabbour@kaust.edu.sa",
|
19
19
|
description="NoPASARAN is an advanced network tool designed to detect, fingerprint, and locate network middleboxes in a unified framework.",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/action_primitives.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/data_manipulation.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/event_primitives.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/icmp_primitives.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/io_primitives.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/ip_primitives.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/nested_machine_utils.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/probing_primitives.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/replay_primitives.py
RENAMED
File without changes
|
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/signaling_primitive.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/tcp_primitives.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/timing_primitives.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/tls_primitives.py
RENAMED
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/action_primitives/udp_primitives.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nopasaran-0.2.91 → nopasaran-0.2.93}/nopasaran/primitives/transition_primitives/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|