diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ExtractorIOS.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ExtractorIOS.java index ba503c6e08..6e4ff00edd 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ExtractorIOS.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ExtractorIOS.java @@ -487,24 +487,34 @@ private Message createMessageFromDB(ResultSet rs, Chat chat) throws SQLException m.setMetaData(metadata); } - if (m.getMessageType() == EPHEMERAL_DEFAULT) { - m.setDuration(decodeEphemeralDuration(metadata)); - } + switch (m.getMessageType()) { + case EPHEMERAL_DEFAULT: + m.setDuration(decodeEphemeralDuration(metadata)); + break; - if (m.getMessageType() == TEMPLATE_MESSAGE) { - m.setMessageTemplate(decodeTemplate(metadata)); - } + case TEMPLATE_MESSAGE: + m.setMessageTemplate(decodeTemplate(metadata)); + break; - if (m.getMessageType() == GROUP_INVITE) { - m.setGroupInviteName(decodeGroupInvite(metadata)); - } + case GROUP_INVITE: + m.setGroupInviteName(decodeGroupInvite(metadata)); + break; - if (m.getMessageType() == PRODUCT_MESSAGE) { - m.setProduct(decodeProductInfo(metadata, m)); - } - - if (m.getMessageType() == URL_MESSAGE) { - decodeURLInfo(metadata, m); + case PRODUCT_MESSAGE: + m.setProduct(decodeProductInfo(metadata, m)); + break; + + case URL_MESSAGE: + decodeURLInfo(metadata, m); + break; + + case LOCATION_MESSAGE: + case SHARE_LOCATION_MESSAGE: + m.setAddress(rs.getString("mediaHash")); + break; + + default: + break; } return m; diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/Message.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/Message.java index 3503b5347b..2d318a443c 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/Message.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/Message.java @@ -79,6 +79,7 @@ public class Message implements Comparable { private String uiElements; private MessageProduct product; private Date editTimeStamp; + private String address; static { try { @@ -591,6 +592,14 @@ public void setEditTimeStamp(Date editTimeStamp) { this.editTimeStamp = editTimeStamp; } + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + public static enum MessageType { TEXT_MESSAGE, IMAGE_MESSAGE, AUDIO_MESSAGE, VIDEO_MESSAGE, UNKNOWN_MEDIA_MESSAGE, CONTACT_MESSAGE, LOCATION_MESSAGE, SHARE_LOCATION_MESSAGE, VOICE_CALL, VIDEO_CALL, APP_MESSAGE, GIF_MESSAGE, BLOCKED_CONTACT, UNBLOCKED_CONTACT, BUSINESS_CHAT, BUSINESS_TO_STANDARD, MESSAGES_ENCRYPTED, MESSAGES_NOW_ENCRYPTED, ENCRYPTION_KEY_CHANGED, MISSED_VOICE_CALL, MISSED_VIDEO_CALL, DELETED_MESSAGE, DELETED_BY_ADMIN, DELETED_BY_SENDER, GROUP_CREATED, USER_JOINED_GROUP, USER_JOINED_GROUP_FROM_LINK, USERS_JOINED_GROUP, USER_LEFT_GROUP, USER_REMOVED_FROM_GROUP, URL_MESSAGE, GROUP_ICON_CHANGED, GROUP_ICON_DELETED, GROUP_DESCRIPTION_CHANGED, SUBJECT_CHANGED, YOU_ADMIN, YOU_NOT_ADMIN, WAITING_MESSAGE, STICKER_MESSAGE, REFUSED_VIDEO_CALL, REFUSED_VOICE_CALL, UNAVAILABLE_VIDEO_CALL, UNAVAILABLE_VOICE_CALL, UNKNOWN_VOICE_CALL, UNKNOWN_VIDEO_CALL, VIEW_ONCE_IMAGE_MESSAGE, VIEW_ONCE_VIDEO_MESSAGE, CALL_MESSAGE, BUSINESS_META_SECURE_SERVICE, GROUP_INVITE, TEMPLATE_MESSAGE, TEMPLATE_QUOTE, POLL_MESSAGE, EPHEMERAL_DURATION_CHANGED, EPHEMERAL_CHANGED, EPHEMERAL_DEFAULT, EPHEMERAL_SAVE, GROUP_CHANGED_ONLY_ADMINS_CAN_SEND, GROUP_CHANGED_ALL_MEMBERS_CAN_SEND, GROUP_CHANGED_ONLY_ADMINS_CAN_EDIT, GROUP_CHANGED_ALL_MEMBERS_CAN_EDIT, GROUP_ONLY_ADMINS_CAN_SEND, CHANGED_DEVICE, CHANGED_NUMBER_TO, CHANGED_NUMBER_CHATTING_WITH_NEW, CHANGED_NUMBER_CHATTING_WITH_OLD, STANDARD_CHAT, SENDER_ADDED_TO_CONTACTS, SENDER_IN_CONTACTS, BUSINESS_OFFICIAL, GROUP_ADDED_TO_COMMUNITY, COMMUNITY_MANAGEMENT_ACTION, UI_ELEMENTS, UI_ELEMENTS_QUOTE, CHANNEL_ADDED_PRIVACY, CHANNEL_CREATED, ORDER_MESSAGE, PRODUCT_MESSAGE, BUSINESS_CHANGED_NAME, USER_JOINED_WHATSAPP, PINNED_MESSAGE, UNKNOWN_MESSAGE } diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ReportGenerator.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ReportGenerator.java index a1fb9c556d..09e96fd269 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ReportGenerator.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/whatsapp/ReportGenerator.java @@ -804,6 +804,9 @@ private synchronized void printMessage(PrintWriter out, Message message, boolean Messages.getString("WhatsAppReport.Latitude") + ": " + message.getLatitude() + "
"); out.println(Messages.getString("WhatsAppReport.Longitude") + ": " + message.getLongitude() + "
"); + if (notNullNorBlank(message.getAddress())) { + out.print(format(message.getAddress()) + "
"); + } if (notNullNorBlank(message.getData())) { out.print(format(message.getData()) + "
"); }