nopasaran 0.2.100__py3-none-any.whl → 0.2.102__py3-none-any.whl

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.
@@ -10,11 +10,12 @@ class TCPDNSResponsePrimitives:
10
10
  state_machine.set_variable_value(outputs[0], server)
11
11
 
12
12
  @staticmethod
13
- @parsing_decorator(input_args=2, output_args=0)
13
+ @parsing_decorator(input_args=3, output_args=0)
14
14
  def start_tcp_dns_server(inputs, outputs, state_machine):
15
15
  server = state_machine.get_variable_value(inputs[0])
16
- port = int(state_machine.get_variable_value(inputs[1]))
17
- server.start(port)
16
+ listening_ip = int(state_machine.get_variable_value(inputs[1]))
17
+ port = int(state_machine.get_variable_value(inputs[2]))
18
+ server.start(listening_ip, port)
18
19
 
19
20
  @staticmethod
20
21
  @parsing_decorator(input_args=4, output_args=1)
@@ -28,7 +29,7 @@ class TCPDNSResponsePrimitives:
28
29
  """
29
30
  server = state_machine.get_variable_value(inputs[0])
30
31
  timeout = int(state_machine.get_variable_value(inputs[2]))
31
- response_spec = state_machine.get_variable_value(inputs[3]) # can be None
32
+ response_spec = state_machine.get_variable_value(inputs[3])
32
33
 
33
34
  result, _ = server.wait_for_query(timeout, response_spec)
34
35
  state_machine.set_variable_value(outputs[0], result)
@@ -10,11 +10,12 @@ class UDPDNSResponsePrimitives:
10
10
  state_machine.set_variable_value(outputs[0], server)
11
11
 
12
12
  @staticmethod
13
- @parsing_decorator(input_args=2, output_args=0)
13
+ @parsing_decorator(input_args=3, output_args=0)
14
14
  def start_udp_dns_server(inputs, outputs, state_machine):
15
15
  server = state_machine.get_variable_value(inputs[0])
16
- port = int(state_machine.get_variable_value(inputs[1]))
17
- server.start(port)
16
+ listening_ip = int(state_machine.get_variable_value(inputs[1]))
17
+ port = int(state_machine.get_variable_value(inputs[2]))
18
+ server.start(listening_ip, port)
18
19
 
19
20
  @staticmethod
20
21
  @parsing_decorator(input_args=4, output_args=1)
@@ -10,13 +10,13 @@ class TCPDNSSocketServer:
10
10
  def __init__(self):
11
11
  self.sock = None
12
12
 
13
- def start(self, port):
13
+ def start(self, listening_ip, port):
14
14
  self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
15
15
  self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
16
- self.sock.bind(('', port))
16
+ self.sock.bind((listening_ip, port))
17
17
  self.sock.listen(5)
18
- logging.info(f"TCP DNS server started on port {port}")
19
- return EventNames.SERVER_STARTED.name, f"TCP DNS server started on port {port}"
18
+ logging.info(f"TCP DNS server started on {listening_ip}:{port}")
19
+ return EventNames.SERVER_STARTED.name, f"TCP DNS server started on {listening_ip}:{port}"
20
20
 
21
21
  def wait_for_query(self, timeout, response_spec=None):
22
22
  timeout = float(timeout)
@@ -1,7 +1,4 @@
1
1
  import socket
2
- import struct
3
- import select
4
- import time
5
2
  from dnslib import DNSRecord, RR, QTYPE, A, CNAME, MX, TXT, NS, SOA, PTR, AAAA, SRV, DS, RRSIG, NSEC, DNSKEY
6
3
  from nopasaran.definitions.events import EventNames
7
4
  import logging
@@ -10,12 +7,12 @@ class UDPDNSSocketServer:
10
7
  def __init__(self):
11
8
  self.sock = None
12
9
 
13
- def start(self, port):
10
+ def start(self, listening_ip, port):
14
11
  self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
15
12
  self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
16
- self.sock.bind(('', port))
17
- logging.info(f"UDP DNS server started on port {port}")
18
- return EventNames.SERVER_STARTED.name, f"UDP DNS server started on port {port}"
13
+ self.sock.bind((listening_ip, port))
14
+ logging.info(f"UDP DNS server started on {listening_ip}:{port}")
15
+ return EventNames.SERVER_STARTED.name, f"UDP DNS server started on {listening_ip}:{port}"
19
16
 
20
17
  def wait_for_query(self, timeout, response_spec=None):
21
18
  self.sock.settimeout(timeout)
nopasaran/utils.py CHANGED
@@ -426,7 +426,7 @@ def send_tcp_dns_query(server_ip, server_port, domain, query_type="A"):
426
426
 
427
427
  try:
428
428
  logging.debug(f"Building DNS query for domain {domain} with type {query_type_str} ({qtype})")
429
- dns_query = DNSRecord.question(domain, qtype=qtype)
429
+ dns_query = DNSRecord.question(domain, qtype=dnsatypes[qtype])
430
430
  dns_query.header.id = random.randint(0, 65535)
431
431
  query_packet = dns_query.pack()
432
432
  result["query"] = dns_query.toZone()
@@ -463,7 +463,7 @@ def send_tcp_dns_query(server_ip, server_port, domain, query_type="A"):
463
463
 
464
464
  except Exception as e:
465
465
  result["error"] = f"Exception occurred: {str(e)}"
466
- logging.exception("An error occurred while sending the TCP DNS query")
466
+ logging.error("An error occurred while sending the TCP DNS query")
467
467
  return result
468
468
 
469
469
  def send_udp_dns_query(server_ip, server_port, domain, query_type="A"):
@@ -495,7 +495,7 @@ def send_udp_dns_query(server_ip, server_port, domain, query_type="A"):
495
495
 
496
496
  try:
497
497
  logging.debug(f"Building DNS query for domain {domain} with type {query_type_str} ({qtype})")
498
- dns_query = DNSRecord.question(domain, qtype=qtype)
498
+ dns_query = DNSRecord.question(domain, qtype=dnsatypes[qtype])
499
499
  dns_query.header.id = random.randint(0, 65535)
500
500
  query_packet = dns_query.pack()
501
501
  result["query"] = dns_query.toZone()
@@ -516,5 +516,5 @@ def send_udp_dns_query(server_ip, server_port, domain, query_type="A"):
516
516
 
517
517
  except Exception as e:
518
518
  result["error"] = f"Exception occurred: {str(e)}"
519
- logging.exception("An error occurred while sending the UDP DNS query")
519
+ logging.error("An error occurred while sending the UDP DNS query")
520
520
  return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nopasaran
3
- Version: 0.2.100
3
+ Version: 0.2.102
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
@@ -2,7 +2,7 @@ nopasaran/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  nopasaran/__main__.py,sha256=9dY9M5gbwdR74rBezoSAvQPO3acAVHFA5Kov9KkrXO8,2461
3
3
  nopasaran/decorators.py,sha256=4QcUtZAMYZqNWwv7OsIAhHcec8C_MfxThA8kmUXw1Xo,2941
4
4
  nopasaran/http_2_utils.py,sha256=eQL8uG2USCN5ab2brrYtxcTnYk-g3s_b7v4bZ3YdA-Y,26324
5
- nopasaran/utils.py,sha256=eIb6i_qo-dOpemccP0X9b2NFnGOhpSt81vYv8eoiD6E,16442
5
+ nopasaran/utils.py,sha256=eCmEOHO9XJEmlrhr-0wHfbO9zrvTCw4XO24dszjWQHA,16456
6
6
  nopasaran/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  nopasaran/controllers/controller.py,sha256=kh6_ByvSMRiz8o8DgfR00WfylmClVZKdHe1OIcnltp8,7326
8
8
  nopasaran/controllers/factory.py,sha256=e1c6oea4ePiSZcQuAUn-515kjgmBIOqFXQ_78huEXHw,1287
@@ -52,12 +52,12 @@ nopasaran/primitives/action_primitives/replay_primitives.py,sha256=pRMq6eZsm82rf
52
52
  nopasaran/primitives/action_primitives/server_echo_primitives.py,sha256=CSw99moDTUqWnwJ19kcLmsRsUZfsysWk50N8pJWqcbo,6660
53
53
  nopasaran/primitives/action_primitives/signaling_primitive.py,sha256=4gmG3r5lXX1KsicPwepGTrnouNpc6j0Bkf8pV5jJTmw,6634
54
54
  nopasaran/primitives/action_primitives/tcp_dns_request_primitives.py,sha256=sJGSc0bl7LtE_dFE0ezj1HWvY-cWEIUBQuXaQAVk2K0,1328
55
- nopasaran/primitives/action_primitives/tcp_dns_response_primitives.py,sha256=Ogf9idWfMgoo3oXFSzyG358jsgDybdti7JXHF-xVMmo,1657
55
+ nopasaran/primitives/action_primitives/tcp_dns_response_primitives.py,sha256=kxePHX62tdKpcce--RsbC9pRwNVg-v_z_lKAEioiwP0,1728
56
56
  nopasaran/primitives/action_primitives/tcp_primitives.py,sha256=H4lpqeL5uhqqwC0RYrelO0BlrTocrfGl4dbd6FUi5FI,16909
57
57
  nopasaran/primitives/action_primitives/timing_primitives.py,sha256=hq4Q2_9nbL9ihf5TRAMRPWZuybqP4CXZxfstelAF6R8,980
58
58
  nopasaran/primitives/action_primitives/tls_primitives.py,sha256=UZ-bwYBDCVxPrZjodGTTdICYGjfA9WPymIAqaOeaZYI,6163
59
59
  nopasaran/primitives/action_primitives/udp_dns_request_primitives.py,sha256=p-FsvWJUDTOI34oeuV46oPh8FEvT0LR23lc_oAwuNI8,1328
60
- nopasaran/primitives/action_primitives/udp_dns_response_primitives.py,sha256=F93weT7OU6Qsu3g26k6Frdiclr67pLWQ2hBhcthOWFo,1657
60
+ nopasaran/primitives/action_primitives/udp_dns_response_primitives.py,sha256=MpuVE66QIa6U2T1WjCel4cPfqdO4UipeLLCM1DxBzYY,1743
61
61
  nopasaran/primitives/action_primitives/udp_primitives.py,sha256=SHYzi1FS4EEIssSwMEUOTyQlSnyung8iWR6LzJLrarM,7533
62
62
  nopasaran/primitives/condition_primitives/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
63
  nopasaran/primitives/condition_primitives/condition_primitives.py,sha256=-AQdtK_lQfy7Qo3CVVII8MKPKtE9nvea2fh8sDOjdlc,307
@@ -76,12 +76,12 @@ nopasaran/tools/http_2_socket_base.py,sha256=KDfkU4Nr_TXxqzp1-ZHec_UawfDZ5oIIj-J
76
76
  nopasaran/tools/http_2_socket_client.py,sha256=5mmc8FuT2dNVAihbMdvyytVwME_xSc7mez_jwU3YZOA,6256
77
77
  nopasaran/tools/http_2_socket_server.py,sha256=8W-bxmdoGyK5moxpC87V1EGuZ9jJpIKhokvZrDV84kk,5551
78
78
  nopasaran/tools/https_1_socket_server.py,sha256=ytLVYdH5je4L6ElCKKhhsbU_53gT6QF9l5ym7q5TMmo,8162
79
- nopasaran/tools/tcp_dns_socket_server.py,sha256=RHbeydTHZ5nIe3llGGX81BLcVSV0pkM38rhxJgn5Edw,7924
80
- nopasaran/tools/udp_dns_socket_server.py,sha256=OlQYNfnoLP_A-H61qyfVMvXFK-dg0rmx8r-wnQYMKRk,5600
79
+ nopasaran/tools/tcp_dns_socket_server.py,sha256=SoocyqybKYeU0Oq4Zjk2bkekWWQ2GGmZYUc6MbvSIyE,7968
80
+ nopasaran/tools/udp_dns_socket_server.py,sha256=5V-iELbdqM1zGSpZU2T8HqkHgiQqZtKXaSO-MqnSeaI,5604
81
81
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- nopasaran-0.2.100.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
83
- nopasaran-0.2.100.dist-info/METADATA,sha256=ptgsvI-vdzT9TSRfI_h1GxXnAqde_5IAjT-OJeY1foo,5497
84
- nopasaran-0.2.100.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
85
- nopasaran-0.2.100.dist-info/entry_points.txt,sha256=LaOz5GlWuMLjzg4KOEB5OVTattCXVW6a4nSW-WQajCw,55
86
- nopasaran-0.2.100.dist-info/top_level.txt,sha256=60R1FzpprzU8iiJ1cBMNOA0F083_lYoctFo7pzOpMwY,16
87
- nopasaran-0.2.100.dist-info/RECORD,,
82
+ nopasaran-0.2.102.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
83
+ nopasaran-0.2.102.dist-info/METADATA,sha256=8t0cs78NA8q-fX3Gsn_yMXc_CF2xv44hGyYcko18b9Y,5497
84
+ nopasaran-0.2.102.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
85
+ nopasaran-0.2.102.dist-info/entry_points.txt,sha256=LaOz5GlWuMLjzg4KOEB5OVTattCXVW6a4nSW-WQajCw,55
86
+ nopasaran-0.2.102.dist-info/top_level.txt,sha256=60R1FzpprzU8iiJ1cBMNOA0F083_lYoctFo7pzOpMwY,16
87
+ nopasaran-0.2.102.dist-info/RECORD,,