コード例 #1
0
ファイル: stats.py プロジェクト: xTriad/gcapy
    def pp(self):
        def fmtlist(a, showAmt=False):
            newArr = []

            for i, v in enumerate(a):
                amt = ""
                if showAmt:
                    amt = "%d " % v[1]
                newArr += ["%d. %s%s (0x%02x)" % (i + 1, amt, v[2], v[0])]

            return "\n".join(newArr)

        def fmtlistDest(a):
            newArr = []

            for i, (pid, v, n, d) in enumerate(a):
                dst = ""

                if d == PacketDest.Server.value:
                    dst = "Server"
                elif d == PacketDest.Client.value:
                    dst = "Client"
                else:
                    dst = "Either"

                newArr += ["%d. %s (0x%02x) -> %s" % (i + 1, n, pid, dst)]

            return "\n".join(newArr)

        unseenControlList = []
        unseenGameList = []

        controlFreq = []
        gameFreq = []

        singleDstControl = []
        singleDstGame = []

        for i, v in enumerate(self.control_types):
            controlFreq += [[
                i, v, Packet.get_name_by_id(PacketType.Control, i)
            ]]
        for i, v in enumerate(self.game_types):
            gameFreq += [[i, v, Packet.get_name_by_id(PacketType.Game, i)]]

        controlFreqS = sorted(controlFreq, key=lambda x: x[1], reverse=True)
        gameFreqS = sorted(gameFreq, key=lambda x: x[1], reverse=True)

        for (i, v, n) in gameFreqS:
            if v == 0 and not Packet.is_unknown(PacketType.Game, i):
                unseenGameList += [[i, v, n]]

        for (i, v, n) in controlFreqS:
            if v == 0 and not Packet.is_unknown(PacketType.Control, i):
                unseenControlList += [[i, v, n]]

        for i, dst in enumerate(self.game_dst):
            (i, v, n) = gameFreq[i]

            if v > 0:  # did we have packets of this type?
                if dst[PacketDest.Server.value] == 0:
                    singleDstGame += [[i, v, n, PacketDest.Server.value]]
                elif dst[PacketDest.Client.value] == 0:
                    singleDstGame += [[i, v, n, PacketDest.Client.value]]
                else:
                    singleDstGame += [[i, v, n, 2]]

        for i, dst in enumerate(self.control_dst):
            (i, v, n) = controlFreq[i]

            if v > 0:  # did we have packets of this type?
                if dst[PacketDest.Server.value] == 0:
                    singleDstControl += [[i, v, n, PacketDest.Server.value]]
                elif dst[PacketDest.Client.value] == 0:
                    singleDstControl += [[i, v, n, PacketDest.Client.value]]
                else:
                    singleDstControl += [[i, v, n, 2]]

        singleDstControl = sorted(singleDstControl, key=lambda x: x[3])
        singleDstGame = sorted(singleDstGame, key=lambda x: x[3])

        #####################

        statistics = \
"""\
Records:     %d
 - Control:  %d
 - Game:     %d
Invalid:     %d
Unknown:     %d
""" % (self.records, self.control, self.game, self.invalid, self.unknown)

        #####################

        frequency =  \
"""\
Frequency (highest to lowest)

== Game ==
%s

== Control ==
%s
""" % (fmtlist(gameFreqS, True), fmtlist(controlFreqS, True))

        #####################

        unseen = \
"""\
Unseen packets

== Game (%d) ==
%s

== Control (%d) ==
%s
""" % (len(unseenGameList), fmtlist(unseenGameList),
        len(unseenControlList), fmtlist(unseenControlList))

        #####################

        singleDest = \
"""\
Packet Destination

== Game (%d) ==
%s

== Control (%d) ==
%s
""" % (len(singleDstGame), fmtlistDest(singleDstGame),
        len(singleDstControl), fmtlistDest(singleDstControl))

        #####################
        print(statistics)
        print(frequency)
        print(unseen)
        print(singleDest)
コード例 #2
0
ファイル: stats.py プロジェクト: Brandy-92/gcapy
    def pp(self):
        def fmtlist(a, showAmt=False):
            newArr = []

            for i,v in enumerate(a):
                amt = ""
                if showAmt:
                    amt = "%d " % v[1]
                newArr += ["%d. %s%s (0x%02x)" % (i+1, amt, v[2], v[0])]

            return "\n".join(newArr)

        def fmtlistDest(a):
            newArr = []

            for i, (pid,v,n,d) in enumerate(a):
                dst = ""

                if d == PacketDest.Server.value:
                    dst = "Server"
                elif d == PacketDest.Client.value:
                    dst = "Client"
                else:
                    dst = "Either"

                newArr += ["%d. %s (0x%02x) -> %s" % (i+1, n, pid, dst)]

            return "\n".join(newArr)


        unseenControlList = []
        unseenGameList = []

        controlFreq = []
        gameFreq = []

        singleDstControl = []
        singleDstGame = []

        for i,v in enumerate(self.control_types):
            controlFreq += [[i, v, Packet.get_name_by_id(PacketType.Control, i)]]
        for i,v in enumerate(self.game_types):
            gameFreq += [[i, v, Packet.get_name_by_id(PacketType.Game, i)]]

        controlFreqS = sorted(controlFreq, key=lambda x: x[1], reverse=True)
        gameFreqS = sorted(gameFreq, key=lambda x: x[1], reverse=True)

        for (i, v, n) in gameFreqS:
            if v == 0 and not Packet.is_unknown(PacketType.Game, i):
                unseenGameList += [[i, v, n]]

        for (i, v, n) in controlFreqS:
            if v == 0 and not Packet.is_unknown(PacketType.Control, i):
                unseenControlList += [[i, v, n]]

        for i,dst in enumerate(self.game_dst):
            (i, v, n) = gameFreq[i]

            if v > 0: # did we have packets of this type?
                if dst[PacketDest.Server.value] == 0:
                    singleDstGame += [[i, v, n, PacketDest.Server.value]]
                elif dst[PacketDest.Client.value] == 0:
                    singleDstGame += [[i, v, n, PacketDest.Client.value]]
                else:
                    singleDstGame += [[i, v, n, 2]]

        for i,dst in enumerate(self.control_dst):
            (i, v, n) = controlFreq[i]

            if v > 0: # did we have packets of this type?
                if dst[PacketDest.Server.value] == 0:
                    singleDstControl += [[i, v, n, PacketDest.Server.value]]
                elif dst[PacketDest.Client.value] == 0:
                    singleDstControl += [[i, v, n, PacketDest.Client.value]]
                else:
                    singleDstControl += [[i, v, n, 2]]

        singleDstControl = sorted(singleDstControl, key=lambda x: x[3])
        singleDstGame = sorted(singleDstGame, key=lambda x: x[3])

        #####################

        statistics = \
"""\
Records:     %d
 - Control:  %d
 - Game:     %d
Invalid:     %d
Unknown:     %d
""" % (self.records, self.control, self.game, self.invalid, self.unknown)

        #####################

        frequency =  \
"""\
Frequency (highest to lowest)

== Game ==
%s

== Control ==
%s
""" % (fmtlist(gameFreqS, True), fmtlist(controlFreqS, True))

        #####################

        unseen = \
"""\
Unseen packets

== Game (%d) ==
%s

== Control (%d) ==
%s
""" % (len(unseenGameList), fmtlist(unseenGameList),
    len(unseenControlList), fmtlist(unseenControlList))

        #####################

        singleDest = \
"""\
Packet Destination

== Game (%d) ==
%s

== Control (%d) ==
%s
""" % (len(singleDstGame), fmtlistDest(singleDstGame),
    len(singleDstControl), fmtlistDest(singleDstControl))

        #####################
        print(statistics)
        print(frequency)
        print(unseen)
        print(singleDest)