Exemple #1
0
    def compute_sslv2_key_material(self):
        if self.master_secret is None:
            warning("Missing master_secret while computing key_material!")
        if self.sslv2_challenge is None:
            warning("Missing challenge while computing key_material!")
        if self.sslv2_connection_id is None:
            warning("Missing connection_id while computing key_material!")

        km = self.pwcs.prf.derive_key_block(self.master_secret,
                                            self.sslv2_challenge,
                                            self.sslv2_connection_id,
                                            2 * self.pwcs.cipher.key_len)
        self.sslv2_key_material = km
        if conf.debug_tls:
            log_runtime.debug("TLS: master secret: %s", repr_hex(self.master_secret))  # noqa: E501
            log_runtime.debug("TLS: key material: %s", repr_hex(km))
Exemple #2
0
    def compute_sslv2_key_material(self):
        if self.master_secret is None:
            warning("Missing master_secret while computing key_material!")
        if self.sslv2_challenge is None:
            warning("Missing challenge while computing key_material!")
        if self.sslv2_connection_id is None:
            warning("Missing connection_id while computing key_material!")

        km = self.pwcs.prf.derive_key_block(self.master_secret,
                                            self.sslv2_challenge,
                                            self.sslv2_connection_id,
                                            2*self.pwcs.cipher.key_len)
        self.sslv2_key_material = km
        if conf.debug_tls:
            print("master secret: %s" % repr_hex(self.master_secret))
            print("key material: %s" % repr_hex(km))
Exemple #3
0
 def debug_repr(self, name, secret):
     if conf.debug_tls and secret:
         log_runtime.debug("TLS: %s %s %s: %s",
                           self.connection_end,
                           self.row,
                           name,
                           repr_hex(secret))
Exemple #4
0
 def debug_repr(self, name, secret):
     if conf.debug_tls and secret:
         log_runtime.debug("TLS: %s %s %s: %s",
                           self.connection_end,
                           self.row,
                           name,
                           repr_hex(secret))
Exemple #5
0
 def vprint_sessioninfo(self):
     if self.verbose:
         s = self.cur_session
         v = _tls_version[s.tls_version]
         self.vprint("Version       : %s" % v)
         cs = s.wcs.ciphersuite.name
         self.vprint("Cipher suite  : %s" % cs)
         if s.tls_version >= 0x0304:
             ms = s.tls13_master_secret
         else:
             ms = s.master_secret
         self.vprint("Master secret : %s" % repr_hex(ms))
         if s.server_certs:
             self.vprint("Server certificate chain: %r" % s.server_certs)
         if s.tls_version >= 0x0304:
             res_secret = s.tls13_derived_secrets["resumption_secret"]
             self.vprint("Resumption master secret : %s" %
                         repr_hex(res_secret))
         self.vprint()
Exemple #6
0
 def vprint_sessioninfo(self):
     if self.verbose:
         s = self.cur_session
         v = _tls_version[s.tls_version]
         self.vprint("Version       : %s" % v)
         cs = s.wcs.ciphersuite.name
         self.vprint("Cipher suite  : %s" % cs)
         ms = s.master_secret
         self.vprint("Master secret : %s" % repr_hex(ms))
         if s.client_certs:
             self.vprint("Client certificate chain: %r" % s.client_certs)
         self.vprint()
Exemple #7
0
 def vprint_sessioninfo(self):
     if self.verbose:
         s = self.cur_session
         v = _tls_version[s.tls_version]
         self.vprint("Version       : %s" % v)
         cs = s.wcs.ciphersuite.name
         self.vprint("Cipher suite  : %s" % cs)
         ms = s.master_secret
         self.vprint("Master secret : %s" % repr_hex(ms))
         if s.client_certs:
             self.vprint("Client certificate chain: %r" % s.client_certs)
         self.vprint()
Exemple #8
0
    def compute_master_secret(self):
        if self.pre_master_secret is None:
            warning("Missing pre_master_secret while computing master_secret!")
        if self.client_random is None:
            warning("Missing client_random while computing master_secret!")
        if self.server_random is None:
            warning("Missing server_random while computing master_secret!")

        ms = self.pwcs.prf.compute_master_secret(self.pre_master_secret,
                                                 self.client_random,
                                                 self.server_random)
        self.master_secret = ms
        if conf.debug_tls:
            log_runtime.debug("TLS: master secret: %s", repr_hex(ms))
Exemple #9
0
    def compute_master_secret(self):
        if self.pre_master_secret is None:
            warning("Missing pre_master_secret while computing master_secret!")
        if self.client_random is None:
            warning("Missing client_random while computing master_secret!")
        if self.server_random is None:
            warning("Missing server_random while computing master_secret!")

        ms = self.pwcs.prf.compute_master_secret(self.pre_master_secret,
                                                 self.client_random,
                                                 self.server_random)
        self.master_secret = ms
        if conf.debug_tls:
            print("master secret: %s" % repr_hex(ms))
Exemple #10
0
 def vprint_sessioninfo(self):
     if self.verbose:
         s = self.cur_session
         v = _tls_version[s.tls_version]
         self.vprint("Version       : %s" % v)
         cs = s.wcs.ciphersuite.name
         self.vprint("Cipher suite  : %s" % cs)
         if s.tls_version >= 0x0304:
             ms = s.tls13_master_secret
         else:
             ms = s.master_secret
         self.vprint("Master secret : %s" % repr_hex(ms))
         if s.server_certs:
             self.vprint("Server certificate chain: %r" % s.server_certs)
         self.vprint()
Exemple #11
0
 def http_sessioninfo(self):
     header  = "HTTP/1.1 200 OK\r\n"
     header += "Server: Scapy TLS Extension\r\n"
     header += "Content-type: text/html\r\n"
     header += "Content-length: %d\r\n\r\n"
     s = "----- Scapy TLS Server Automaton -----\n\n"
     s += "Information on current TLS session:\n\n"
     s += "Local end     : %s:%d\n" % (self.local_ip, self.local_port)
     s += "Remote end    : %s:%d\n" % (self.remote_ip, self.remote_port)
     v = _tls_version[self.cur_session.tls_version]
     s += "Version       : %s\n" % v
     cs = self.cur_session.wcs.ciphersuite.name
     s += "Cipher suite  : %s\n" % cs
     ms = self.cur_session.master_secret
     s += "Master secret : %s\n" % repr_hex(ms)
     body = "<html><body><pre>%s</pre></body></html>\r\n\r\n" % s
     answer = (header+body) % len(body)
     return answer
Exemple #12
0
 def http_sessioninfo(self):
     header  = "HTTP/1.1 200 OK\r\n"
     header += "Server: Scapy TLS Extension\r\n"
     header += "Content-type: text/html\r\n"
     header += "Content-length: %d\r\n\r\n"
     s = "----- Scapy TLS Server Automaton -----\n\n"
     s += "Information on current TLS session:\n\n"
     s += "Local end     : %s:%d\n" % (self.local_ip, self.local_port)
     s += "Remote end    : %s:%d\n" % (self.remote_ip, self.remote_port)
     v = _tls_version[self.cur_session.tls_version]
     s += "Version       : %s\n" % v
     cs = self.cur_session.wcs.ciphersuite.name
     s += "Cipher suite  : %s\n" % cs
     ms = self.cur_session.master_secret
     s += "Master secret : %s\n" % repr_hex(ms)
     body = "<html><body><pre>%s</pre></body></html>\r\n\r\n" % s
     answer = (header+body) % len(body)
     return answer
Exemple #13
0
 def i2repr(self, pkt, x):
     if x is None:
         return repr(x)
     return repr_hex(self.i2h(pkt, x))
Exemple #14
0
 def debug_repr(self, name, secret):
     if conf.debug_tls and secret:
         print("%s %s %s: %s" %
               (self.connection_end, self.row, name, repr_hex(secret)))
Exemple #15
0
 def debug_repr(self, name, secret):
     if conf.debug_tls and secret:
         print("%s %s %s: %s" % (self.connection_end,
                                 self.row,
                                 name,
                                 repr_hex(secret)))
Exemple #16
0
 def i2repr(self, pkt, x):
     if x is None:
         return repr(x)
     return repr_hex(self.i2h(pkt,x))