chaos_analyzer: Fix the key messages packet matching.

1. Changes to correctly detect the key message 1-4 packets in case the key
descriptor version is different.
2. Couple of output string formatting changes.

BUG=chrome-os-partner:40900
TEST=Manually ran the script.

Change-Id: Id1ae157213380b7465e3e6c74f2baa08c496aff3
Reviewed-on: https://chromium-review.googlesource.com/275013
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Roshan Pius <rpius@chromium.org>
Tested-by: Roshan Pius <rpius@chromium.org>
diff --git a/server/cros/chaos_lib/chaos_capture_analyzer.py b/server/cros/chaos_lib/chaos_capture_analyzer.py
index d9eda86..fdf08e4 100755
--- a/server/cros/chaos_lib/chaos_capture_analyzer.py
+++ b/server/cros/chaos_lib/chaos_capture_analyzer.py
@@ -138,7 +138,10 @@
     PACKET_MATCH_WLAN_FRAME_RETRY_FLAG = "wlan.fc_retry"
     PACKET_MATCH_LLC_TYPE = "llc.type"
     PACKET_MATCH_EAP_TYPE = "eapol.type"
-    PACKET_MATCH_EAP_KEY_INFO = "eapol.keydes_key_info"
+    PACKET_MATCH_EAP_KEY_INFO_INSTALL = "eapol.keydes_key_info_install"
+    PACKET_MATCH_EAP_KEY_INFO_ACK = "eapol.keydes_key_info_key_ack"
+    PACKET_MATCH_EAP_KEY_INFO_MIC = "eapol.keydes_key_info_key_mic"
+    PACKET_MATCH_EAP_KEY_INFO_SECURE = "eapol.keydes_key_info_secure"
     PACKET_MATCH_IP_PROTOCOL_TYPE = "ip.proto"
     PACKET_MATCH_DHCP_MESSAGE_TYPE = "bootp.option_dhcp"
     PACKET_MATCH_RADIOTAP_DATA_RATE = "radiotap.datarate"
@@ -160,11 +163,6 @@
 
     EAP_KEY_TYPE = '0x03'
 
-    EAP_MESSAGE_1_KEY_INFO = '0x008a'
-    EAP_MESSAGE_2_KEY_INFO = '0x010a'
-    EAP_MESSAGE_3_KEY_INFO = '0x13ca'
-    EAP_MESSAGE_4_KEY_INFO = '0x030a'
-
     IP_UDP_PROTOCOL_TYPE = '17'
 
     DHCP_DISCOVER_MESSAGE_TYPE = '1'
@@ -216,29 +214,53 @@
                                          DIR_AP_TO_DUT,
                                          { PACKET_MATCH_LLC_TYPE:
                                            LLC_AUTH_TYPE,
-                                           PACKET_MATCH_EAP_KEY_INFO:
-                                           EAP_MESSAGE_1_KEY_INFO },
+                                           PACKET_MATCH_EAP_KEY_INFO_INSTALL:
+                                           '0',
+                                           PACKET_MATCH_EAP_KEY_INFO_ACK:
+                                           '1',
+                                           PACKET_MATCH_EAP_KEY_INFO_MIC:
+                                           '0',
+                                           PACKET_MATCH_EAP_KEY_INFO_SECURE:
+                                           '0' },
                                          STATE_KEY_MESSAGE_2)
     STATE_INFO_KEY_MESSAGE_2 = StateInfo("WPA KEY MESSAGE 2",
                                          DIR_DUT_TO_AP,
                                          { PACKET_MATCH_LLC_TYPE:
                                            LLC_AUTH_TYPE,
-                                           PACKET_MATCH_EAP_KEY_INFO:
-                                           EAP_MESSAGE_2_KEY_INFO },
+                                           PACKET_MATCH_EAP_KEY_INFO_INSTALL:
+                                           '0',
+                                           PACKET_MATCH_EAP_KEY_INFO_ACK:
+                                           '0',
+                                           PACKET_MATCH_EAP_KEY_INFO_MIC:
+                                           '1',
+                                           PACKET_MATCH_EAP_KEY_INFO_SECURE:
+                                           '0' },
                                          STATE_KEY_MESSAGE_3)
     STATE_INFO_KEY_MESSAGE_3 = StateInfo("WPA KEY MESSAGE 3",
                                          DIR_AP_TO_DUT,
                                          { PACKET_MATCH_LLC_TYPE:
                                            LLC_AUTH_TYPE,
-                                           PACKET_MATCH_EAP_KEY_INFO:
-                                           EAP_MESSAGE_3_KEY_INFO },
+                                           PACKET_MATCH_EAP_KEY_INFO_INSTALL:
+                                           '1',
+                                           PACKET_MATCH_EAP_KEY_INFO_ACK:
+                                           '1',
+                                           PACKET_MATCH_EAP_KEY_INFO_MIC:
+                                           '1',
+                                           PACKET_MATCH_EAP_KEY_INFO_SECURE:
+                                           '1' },
                                          STATE_KEY_MESSAGE_4)
     STATE_INFO_KEY_MESSAGE_4 = StateInfo("WPA KEY MESSAGE 4",
                                          DIR_DUT_TO_AP,
                                          { PACKET_MATCH_LLC_TYPE:
                                            LLC_AUTH_TYPE,
-                                           PACKET_MATCH_EAP_KEY_INFO:
-                                           EAP_MESSAGE_4_KEY_INFO },
+                                           PACKET_MATCH_EAP_KEY_INFO_INSTALL:
+                                           '0',
+                                           PACKET_MATCH_EAP_KEY_INFO_ACK:
+                                           '0',
+                                           PACKET_MATCH_EAP_KEY_INFO_MIC:
+                                           '1',
+                                           PACKET_MATCH_EAP_KEY_INFO_SECURE:
+                                           '1' },
                                          STATE_DHCP_DISCOVER)
     STATE_INFO_DHCP_DISCOVER = StateInfo("DHCP DISCOVER",
                                          DIR_DUT_TO_AP,
@@ -396,9 +418,9 @@
     def _check_for_error(self, packet):
         for error_state in self.ERROR_STATE_INFO_TUPLE:
             if self._does_packet_match_error_state(error_state, packet):
-                msg = "State Machine encountered error due to" + \
+                msg = "ERROR! State Machine encountered error due to " + \
                       error_state.name + \
-                      " , Packet number: " + str(packet.number)  + "!"
+                      ", Packet number: " + str(packet.number)  + "."
                 self._log.log_to_output_file(msg)
                 return True
         return False
@@ -470,8 +492,8 @@
                 return True
             if self._check_for_error(packet):
                 return False
-        msg = "State Machine halted at " + self._current_state.name + \
-              " state!"
+        msg = "ERROR! State Machine halted at " + self._current_state.name + \
+              " state."
         self._log.log_to_output_file(msg)
         return False