コード例 #1
0
 def parse_handshake(self, packet):
     """Parse a MySQL Handshake-packet"""
     res = {}
     (packet, res["protocol"]) = utils.read_int(packet[4:], 1)
     (packet, res["server_version_original"]) = utils.read_string(packet, end=b"\x00")
     (packet, res["server_threadid"]) = utils.read_int(packet, 4)
     (packet, res["scramble"]) = utils.read_bytes(packet, 8)
     packet = packet[1:]  # Filler 1 * \x00
     (packet, res["capabilities"]) = utils.read_int(packet, 2)
     (packet, res["charset"]) = utils.read_int(packet, 1)
     (packet, res["server_status"]) = utils.read_int(packet, 2)
     packet = packet[13:]  # Filler 13 * \x00
     (packet, scramble_next) = utils.read_bytes(packet, 12)
     res["scramble"] += scramble_next
     return res
コード例 #2
0
ファイル: protocol.py プロジェクト: christopherfan/urlShorty
 def parse_handshake(self, packet):
     """Parse a MySQL Handshake-packet"""
     res = {}
     (packet, res['protocol']) = utils.read_int(packet[4:], 1)
     (packet, res['server_version_original']) = utils.read_string(
         packet, end='\x00')
     (packet, res['server_threadid']) = utils.read_int(packet, 4)
     (packet, res['scramble']) = utils.read_bytes(packet, 8)
     packet = packet[1:]  # Filler 1 * \x00
     (packet, res['capabilities']) = utils.read_int(packet, 2)
     (packet, res['charset']) = utils.read_int(packet, 1)
     (packet, res['server_status']) = utils.read_int(packet, 2)
     packet = packet[13:]  # Filler 13 * \x00
     (packet, scramble_next) = utils.read_bytes(packet, 12)
     res['scramble'] += scramble_next
     return res
コード例 #3
0
ファイル: errors.py プロジェクト: richfab/LOG210-server
def get_exception(packet):
    """Returns an exception object based on the MySQL error

    Returns an exception object based on the MySQL error in the given
    packet.

    Returns an Error-Object.
    """
    errno = errmsg = None

    if packet[4] != '\xff':
        raise ValueError("Packet is not an error packet")

    sqlstate = None
    try:
        packet = packet[5:]
        (packet, errno) = utils.read_int(packet, 2)
        if packet[0] != '\x23':
            # Error without SQLState
            errmsg = packet.decode('utf8')
        else:
            (packet, sqlstate) = utils.read_bytes(packet[1:], 5)
            sqlstate = sqlstate.decode('utf8')
            errmsg = packet.decode('utf8')
    except StandardError as err:
        return InterfaceError("Failed getting Error information (%r)" % err)
    else:
        return get_mysql_exception(errno, errmsg, sqlstate)
コード例 #4
0
ファイル: errors.py プロジェクト: BenMayo/exetest8
def get_exception(packet):
    """Returns an exception object based on the MySQL error

    Returns an exception object based on the MySQL error in the given
    packet.

    Returns an Error-Object.
    """
    errno = errmsg = None

    if packet[4] != '\xff':
        raise ValueError("Packet is not an error packet")

    sqlstate = None
    try:
        packet = packet[5:]
        (packet, errno) = utils.read_int(packet, 2)
        if packet[0] != '\x23':
            # Error without SQLState
            errmsg = packet.decode('utf8')
        else:
            (packet, sqlstate) = utils.read_bytes(packet[1:], 5)
            sqlstate = sqlstate.decode('utf8')
            errmsg = packet.decode('utf8')
    except StandardError as err:
        return InterfaceError("Failed getting Error information (%r)" % err)
    else:
        return get_mysql_exception(errno, errmsg, sqlstate)
コード例 #5
0
ファイル: protocol.py プロジェクト: rjones30/rcdb
 def parse_handshake(self, packet):
     """Parse a MySQL Handshake-packet"""
     res = {}
     (packet, res['protocol']) = utils.read_int(packet[4:], 1)
     (packet, res['server_version_original']) = utils.read_string(
         packet, end='\x00')
     (packet, res['server_threadid']) = utils.read_int(packet, 4)
     (packet, res['scramble']) = utils.read_bytes(packet, 8)
     packet = packet[1:]  # Filler 1 * \x00
     (packet, res['capabilities']) = utils.read_int(packet, 2)
     (packet, res['charset']) = utils.read_int(packet, 1)
     (packet, res['server_status']) = utils.read_int(packet, 2)
     packet = packet[13:]  # Filler 13 * \x00
     (packet, scramble_next) = utils.read_bytes(packet, 12)
     res['scramble'] += scramble_next
     return res
コード例 #6
0
 def test_read_bytes(self):
     """Read a number of bytes from a bufffer"""
     buf = "ABCDEFghijklm"
     readsize = 6
     exp = "ghijklm"
     expsize = len(exp)
     
     try:
         (result, s) = utils.read_bytes(buf, readsize)
     except:
         self.fail("Failed reading bytes using read_bytes.")
     else:
         if result != exp or len(result) != expsize:
             self.fail("Wrong result. Expected: '%s' / %d, got '%s'/%d" %\
                 (exp, expsize, result, len(result)))
コード例 #7
0
    def test_read_bytes(self):
        """Read a number of bytes from a bufffer"""
        buf = b"ABCDEFghijklm"
        readsize = 6
        exp = b"ghijklm"
        expsize = len(exp)

        try:
            (result, s) = utils.read_bytes(buf, readsize)
        except:
            self.fail("Failed reading bytes using read_bytes.")
        else:
            if result != exp or len(result) != expsize:
                self.fail("Wrong result. Expected: '%s' / %d, got '%s'/%d" %\
                    (exp, expsize, result, len(result)))
コード例 #8
0
    def test_read_bytes(self):
        """Read a number of bytes from a buffer"""
        buf = "ABCDEFghijklm"
        readsize = 6
        exp = "ghijklm"
        expsize = len(exp)

        try:
            (result, _) = utils.read_bytes(buf, readsize)
        except:
            self.fail("Failed reading bytes using read_bytes.")
        else:
            if result != exp or len(result) != expsize:
                self.fail("Wrong result. Expected: '{0}' / {1}, got '{2}'/{3}".
                          format((exp, expsize, result, len(result))))