Commit Graph

36170 Commits

Author SHA1 Message Date
Aurelien Aptel 18f6351cbf nvme: fix CapsuleCommand "Unknown Command" summary
dissector shows "Unknown command" for many packets summary despite
being able to dissect it properly in the tree item added in that
function. Add offset to match the tree item offset few lines below.
2021-12-06 15:42:59 +02:00
Brian Sipos 95cfdcbf3b COSE: Add parameter names to labels
Dissector names allow integer labels to be given standard text names.
2021-12-06 06:22:49 +00:00
Роман Донченко be38ad12ab jpeg: refactor the parsing of Exif data
After the recent updates, the `process_app1_segment` function has grown very
large. Split it into three functions and make some extra improvements:

* Indent continuation lines consistently.

* Give variables more descriptive names (e.g. no more `val_16`, `val_32`).

* Remove the need to do arithmetic with the `tiff_start` (and the variable
  itself) by using a subset TVB for the TIFF data.

* Remove unnecessary return values.

* Make miscellaneous style improvements.

There should be no difference in behavior, except that the error message
associated with `ei_next_ifd_offset` now shows the correct number (previously
the number was `offset + tiff_start`, when it should have been
`offset - tiff_start`; with the removal of `tiff_start` this bug got fixed
by itself).
2021-12-06 06:08:29 +00:00
Jaap Keuter 62081b9a7d SRVLOC: Remove final sscanf 2021-12-05 22:41:37 +00:00
Martin Mathieson 8d8d618621 Fix some filters that appear to be copied from entry before. 2021-12-05 14:53:25 +00:00
John Thacker 8b8171d952 ANSI A I/F: Retrieve stats correctly
The row number to lookup in the stat table is the index retrieved
from my_try_val_to_str_idx, not the original message type.
Ticks the counts in the correct rows of the stats table, and
prevents failed assertions and program halt in stat_tap_ui.c when
getting a message type with a number greater than the number of
rows in the table.
2021-12-05 14:11:32 +00:00
Jaap Keuter adbaced04c Dissectors should not include stdio.h, unless needed 2021-12-05 12:45:46 +00:00
Nardi Ivan 968fe6ddba QUIC: update support to latest version negotiation draft (05)
The tricky part is deciding if/when updating the decryption ciphers.
Current code works (at least) in the base scenario: V1 updates to V2
(draft-00).
2021-12-03 20:05:08 +01:00
Pascal Quantin 5d30f77391 F1AP: dissect more RRC-Container instances 2021-12-03 13:00:11 +01:00
João Valverde 19dcb725b6 epan: Remove STR_ASCII and STR_UNICODE
These display bases work to replace unprintable characters so the
name is a misnomer. In addition they are the same option and this
display behaviour is not something that is configurable.

This does not affect encodings because all our internal text strings
need to be valid UTF-8 and the source encoding is specified using
ENC_*.

Remove the assertion for valid UTF-8 in proto.c because
tvb_get_*_string() must return a valid UTF-8 string, always, and we
don't need to assert that, it is expensive.
2021-12-03 04:35:56 +00:00
John Thacker 7e99bbf32b BER: Make GeneralizedTime a FT_ABSOLUTE_TIME
Since we now support ISO 8601 Basic format, have asn2wrs.py
convert GeneralizedTime fields in BER to FT_ABSOLUTE_TIMEs and use
the new common code to convert them. This means that the fields
can be compared with other time fields in filters, etc.
2021-12-02 20:40:22 -05:00
Pascal Quantin 871895f95a IPsec: fix display of ESP padding, protocol and ICV when using NULL heuristic
This puts back the code changed in 70a9311
2021-12-02 14:56:50 +01:00
Sangeetha Jain f5dc4652fe MeshConnex (MCX): MCX packet decode logic
MCX is a feature to deliver IEEE 802.11s meshing.
2021-12-02 17:05:21 +05:30
Joel Colledge 9878026a51 DRBD: Add support for new packets including the P_RS_DAGTAG family
These were recently added to the DRBD protocol. See the following
commits at https://github.com/LINBIT/drbd-headers:
098b1fdcdbaa introduce new P_RS_CANCEL_AHEAD
e5d5e6fa9af7 add P_DISCONNECT to stop connect-attempts
1681c4b0166e add dagtag resync request packets
2021-12-02 08:20:40 +00:00
Joel Colledge 91b453a70a DRBD: Correct GitHub URL 2021-12-02 08:20:40 +00:00
Joel Colledge cd8096fba3 DRBD: Remove some unnecessary _U_ attributes
We do use these parameters, so _U_ is unnecessary and misleading.
2021-12-02 08:20:40 +00:00
Dr. Lars Völker ce2137c0fc TECMP: LIN Payload was cut 1 byte short (BUGFIX)
During a previous cleanup and improvement of the code a off-by-one bug
was introduced, which is fixed by this patch.

closes #17760
2021-12-01 20:09:33 +00:00
Odysseus Yang ae14cedd44 MBIM: dissect low level UICC access commands
MBIM_CID_MS_UICC_ATR
MBIM_CID_MS_UICC_OPEN_CHANNEL
MBIM_CID_MS_UICC_CLOSE_CHANNEL
MBIM_CID_MS_UICC_APDU
MBIM_CID_MS_UICC_TERMINAL_CAPABILITY
MBIM_CID_MS_UICC_RESET

Also fixed a minor bug in MBIM_CID_BASE_STATIONS_INFO
2021-12-01 07:57:22 +00:00
John Thacker ebcba787a0 BT-DHT: Fix endless loop
The correct return value for an error condition is 0, which will
cause the caller to then report an error. Fix #17754.
2021-12-01 04:24:27 +00:00
Piotr Winiarczyk 5d4eb4bc66 btmesh: Add dissectors of sensors opcodes
Add dissectors of sensors and generic properites from Mesh Models document. All opcodes from Mesh Models 1.0.1 are now dissected, but not all Mesh Properties are dissected. Closes #17734.
2021-11-30 08:15:29 +00:00
João Valverde 504de90a3c wsutil: Split format_size() enum
Use an enum to select units and a bit flag for the other options,
currently only prefix type.
2021-11-29 22:13:32 +00:00
Martin Mathieson 9cfce57ac0 Signal-PDU: Make some functions static 2021-11-29 21:26:59 +00:00
Martin Mathieson e11cdf2f46 Fix some spelling errors 2021-11-29 17:46:16 +00:00
Marius David 54cf8b01a4 :q! 2021-11-29 13:29:39 +00:00
Marius David 7990dfdf81 Add new netflow fields for Keysight/Ixia. 2021-11-29 13:29:39 +00:00
Роман Донченко 9afa7413f1 jpeg: implement dissection of large Exif IFD values
That is, those that don't fit in the offset field. This includes support
for RATIONAL/SRATIONAL types.
2021-11-29 09:11:04 +00:00
Stéphane Lapie 2b1c34b243 Fixed the ERSPAN Cisco marker packet dissector 2021-11-29 05:25:42 +00:00
Dr. Lars Völker 08f56e6f72 AUTOSAR I-PduM: list of hash table keys freed (fixing memory leak)
This patch does for packet-autosar-ipdum.c what MR !5196 does to
packet-signal.c
2021-11-28 21:09:47 +00:00
Dr. Lars Völker 8b907ad356 AUTOSAR I-PduM: remove unneeded dynamic key allocation
Minor optimization and cleanup of the code. Similar to cleanup in
packet-signal-pdu.c. See MR !5236.
2021-11-28 20:55:54 +00:00
Dr. Lars Völker ad6b128d97 Signal-Pdu: list of hash table keys freed (fixing memory leak) 2021-11-28 20:40:57 +00:00
Dr. Lars Völker 2bc77f2335 Signal-Pdu: Cleanup Functions Proto Reg Handoff
After refactoring in an old patch some features were moved into new
functions starting with proto_reg_handoff. This was wrong and is
corrected by this patch.
2021-11-28 20:25:29 +00:00
Gerald Combs 2452270c4e [Automatic update for 2021-11-28]
Update manuf, services enterprise numbers, translations, and other items.
2021-11-28 16:24:55 +00:00
Dr. Lars Völker 1785bd9799 Signal-Pdu: optimization to reduce strcmps
This patch converts the data type from char* to enum when loading the
config to speed up the packet dissection.
2021-11-28 14:39:15 +00:00
Dr. Lars Völker 890b5c2182 FlexRay: Fixing tvb_bytes_to_str_punct warnings 2021-11-28 14:24:15 +00:00
Dr. Lars Völker a6c4446968 AUTOSAR I-PDU Multiplexer: remove dead code 2021-11-28 14:09:48 +00:00
Dr. Lars Völker 4895f35718 Signal-Pdu: return the parsed length (bugfix)
Before the code was return length - (offset + 1). This did not make any
sense and caused lots of problems.
2021-11-28 13:55:06 +00:00
Dr. Lars Völker 72e74f9661 Signal-Pdu: remove unneeded dynamic key allocation
Minor optimzation and cleanup of the code.
2021-11-28 13:40:47 +00:00
João Valverde ef8125e3ae Move two functions from epan to wsutil/str_util
Move epan_memmem() and epan_strcasestr() to wsutil/str_util.
Rename to ws_memmem() and ws_strcasestr(). Add compile time
check for a system implementation and use that if available.

We invoke those functions using a wrapper to avoid exposing
_GNU_SOURCE outside of the implementation.
2021-11-28 12:32:51 +00:00
Jaap Keuter 4d338d97a9 Foundation Fieldbus: handle multiple PDUs per UDP payload 2021-11-28 10:03:29 +00:00
Huang Qiangxiong f029fa6b71 http2: fix building error caused by fake header feature without nghttp2
Fix a building error caused by fake header feature of
MR 4877 when building without nghttp2 library.
2021-11-28 11:29:48 +08:00
João Valverde f5d8d9e306 wmem: Use better names in the API 2021-11-27 19:39:27 +00:00
John Thacker 80ebcc90bc RTMPT: Fix infinite loops harder.
Just break out of this loop if we wraparound sequence numbers in
the middle of a segment. That guarantees that the sequence of lookups
in the tree with _le will terminate at some point. This probably
makes the dissection a little worse in a few cases with sequence
number wrap around but non erroneous sequence numbers, so a more
complete fix would be ideal. Fix #17749, at least the infinite loop.
2021-11-26 13:36:26 -05:00
Huang Qiangxiong 2af95cbe1b HTTP2/GRPC: support using fake headers if first HEADERS frame is missing
Add an UAT for configuring fake headers according to the server port, stream
id and direction of the long-lived stream that we start capturing packets
after it is established. That helps to parsing the DATAs captured subsequently.
A testcase also added.

close #17691
2021-11-26 17:34:23 +00:00
Paul Tyler 9f56c07638 RTPS: Dissect PID_DEFAULT_MULTICAST_LOCATOR for vendors other than RTI 2021-11-26 17:31:34 +00:00
Stig Bjørlykke 11c6ed177f at: Fix typo in cme_error_vals
Also remove a leading space in at_type_vals.
2021-11-26 13:22:04 +00:00
Pascal Quantin bc566318bc Websocket: do not register proto_reg_handoff_websocket() for preference change
It is not required and fixes a "Protocol Websocket is already registered
in tcp table" warning at startup
2021-11-26 09:25:35 +00:00
Nardi Ivan 4e879c5d16 QUIC: add support for QUICv2 (draft-00)
See: https://datatracker.ietf.org/doc/html/draft-ietf-quic-v2
2021-11-25 16:47:59 +01:00
John Thacker 32bb2a19ee RTMPT: Fix infinite loop
The RTMPT dissector when over TCP reuses the TCP sequence numbers, so
it needs to consider wraparound, which can occur both with the
tcp.relative_sequence_numbers preference set to FALSE, or in some
unusual cases (such as a SYN packet with a bogus sequence number so
that later packets overlap its sequence number.)

Change a sequence number comparison to use the wrap around aware
macros from packet-tcp.h Fix #17745.
2021-11-24 08:44:08 -05:00
Dr. Lars Völker 18d7afa711 MKA: Fixing misleading capability value-strings (Bugfix)
The original MACsec capability value strings do not reflect the
IEEE 802.1X specification (2010 or 2020).

For example: IEEE 802.1X says for value 2:
"‘Integrity without confidentiality’ and ‘Integrity and
confidentiality’ with a confidentiality offset of 0"

The packet-mka.c value string for 2 says:
"MACsec Integrity with no confidentiality offset"

The updated value string now shows that integrity and
integrity+confidentiality are supported.
2021-11-24 08:13:29 +00:00
Nan Xiao 8883788423 EVS: Fix bug in decoding LP-CNG SID BW value 2021-11-22 11:53:06 +00:00
Dr. Lars Völker 56d100d6ea MKA: Adding Announcement TLV parsing and Cipher Suite
This patch adds support to parse the Announcement TLV in MKA and the
Cipher Suite announcement within it.
2021-11-21 20:18:56 +01:00
Gerald Combs 92045d98c0 [Automatic update for 2021-11-21]
Update manuf, services enterprise numbers, translations, and other items.
2021-11-21 16:24:28 +00:00
Dr. Lars Völker abf9ed5f11 MKA: Adding support for Announcement TLV padding (Bugfix) 2021-11-21 14:04:41 +00:00
John Thacker b5917d0182 wmem: Add a multimap
A number of protocols have IDs that can be reused that are used as
lookup keys. In most cases the frame number should be used as well
to differentiate repeat appearances of an ID. For response/request
matching, it is frequently useful to find the most recent frame number
(greatest value less than or equal to the current one) that contained
an ID.

We can achieve that by using a multimap that stores values with a given
ID in a tree keyed with the frame number. This works better than using
a map or a tree alone:

1) A map isn't ordered, so doesn't allow for less than or equal comparison.
2) Using a tree requires an ordering on all the ID components, and then
   having to test all the components other than the frame number separately
   for equality after retrieval.

Currently the multimap does not support inserting items without specifying
the tree key (and having the multimap generate a key), because the total
capacity of trees (including deleted nodes) is not tracked. If other use
cases are needed, this could be added later along with more generic
multimap support.

Use a multimap in ANSI MAP, ANSI TCAP, and GSM SMS, all of which need to
match lookup IDs that can be reused. Fix #7653.
2021-11-21 07:16:55 -05:00
Odysseus Yang 5a7c23c5da MBIM: dissect MBIM_CID_BASE_STATIONS_INFO
MBIM_CID_BASE_STATIONS_INFO
2021-11-20 16:44:24 +00:00
Stig Bjørlykke 3badea1e80 btle: Improve Advertising Data reassembly
Copy Advertiser Address from AUX_ADV_IND if not present in AUX_CHAIN_IND
to make reassembly work. Check for valid reassembled data before
doing dissect_ad_eir().
2021-11-20 15:38:24 +00:00
Michael Tuexen 2b52d14d62 BBLog: Fix the handling of skipped blocks 2021-11-20 00:10:28 +01:00
Gerald Combs 389cf9d752 HICP: Use wmem_strsplit.
As the GLib documentation says, g_strsplit returns "A newly-allocated
NULL-terminated array of strings. Use g_strfreev() to free it." Call
wmem_strsplit instead so that we clean up after ourselves. Blind attempt
at fixing #17736.
2021-11-19 17:58:27 +00:00
Pascal Quantin 4921183e33 GTPv2: fix dissection of 5GS TAC
Fixes #17738
2021-11-19 04:51:05 +00:00
Martin Mathieson 263189e23d Fix some spelling errors. 2021-11-18 04:43:51 +00:00
Aidan MacDonald a8a3a3093c USB Attached SCSI protocol dissector
This is capable of dissecting UASP traffic on a USB 2.0
bus, provided Wireshark sees the interface descriptor.

Dissecting USB 3.0 traffic won't work properly because we
don't have access to an URB's bulk stream ID, so the data
transfer can't be attributed properly to commands.
2021-11-17 13:27:57 +01:00
Aidan MacDonald 660dded383 Refactor USB mass storage class dissector
The existing dissector only handles the Bulk-Only Transport
protocol but occupies the USB dissector hooks for all mass
storage class traffic.

To facilitate alternative protocols like UASP, direct all
mass storage class traffic to a stub dissector which will
dispatch to the real dissector based on other information,
such as the USB interface protocol.

Heuristic dissectors are still attached directly to the
core USB hooks.
2021-11-17 13:27:56 +01:00
Filip Kågesson f9be0f0c8c HICP: Added dissector to support Host IP Configuration Protocol.
A new dissector was added to support dissection of the HICP protocol.
2021-11-16 21:43:17 +00:00
Luckinger Florian 2172cd3e95 EBHSCR: Add dissection of LIN packets 2021-11-16 21:28:54 +00:00
Luckinger Florian f9398d82fb EBHSCR: Update dissection of ethernet frames
Add new bits to status field. Add column info for frames with no ethernet
payload.
2021-11-16 21:28:54 +00:00
Luckinger Florian b43d4a8c28 EBHSCR: Add dissection of FlexRay packets
Dissect FlexRay specific EBHSCR header of frame packets, symbol packets,
slot status packets and start of cycle packets. Payload of frame packets
and symbol packets is prepared and passed to the FlexRay dissector.
2021-11-16 21:28:54 +00:00
Michael Tuexen 74d0c147a1 TCP Black Box Log: Fix and improve some fields 2021-11-16 17:17:34 +00:00
John Thacker 18abdc3ebc ansi_map,ansi_tcap: Fix typos, comment out unused fields
Fix a couple of typos that referred to the wrong fields, and comment
out some unused fields.
2021-11-16 01:46:34 -05:00
John Thacker 4015aa954c TCAP,CAMEL: Always enable SRT and Counter stats
The Service Response Time stats for CAMEL (and TCAP, which must be
enabled as well) are reliable and not that processor intensive. They
should be always enabled, just like the SRT stats for other protocols.

This also makes things less confusing with regards to the CAMEL
opcode counter stats, which were only enabled if the SRT preferences
were also set, since they use the same tap.

Also remove a unused function declaration in a header.
2021-11-16 05:06:41 +00:00
Martin Mathieson 8003096260 PDCP-LTE: add missing _lte to register function name 2021-11-15 12:50:37 +00:00
João Valverde b30a2112e8 regex: Prefer C99/POSIX types
Replace 'gssize' with 'ssize_t'.

Add a CMake configure check for ssize_t.

Fix missing "config.h" includes.
2021-11-15 02:41:59 +00:00
Georg Sauthoff d8e33efb3c Fix maybe-uninitialized warnings
When compiling the current wireshark master branch (with the default
project provided CFLAGS) on Fedora 35, GCC 11.2.1 prints a few
`-Wmaybe-uninitialized` warnings.

This change fixes those.
2021-11-15 00:05:05 +00:00
Gerald Combs 41a247287e [Automatic update for 2021-11-14]
Update manuf, services enterprise numbers, translations, and other items.
2021-11-14 16:39:31 +00:00
Graham Bloice 79ebce20c0 dnp3: Fix PVS-Studio warnings
Fix a couple of warnings, suppress some false positives
2021-11-13 22:52:09 +00:00
João Valverde 2f98b349df We cannot use HAVE_CONFIG_H
We are not defining this macro symbol se we can't use it. We need
"config.h" and it must be an unconditional include.
2021-11-12 18:33:31 +00:00
Guy Harris c3599a9616 "register_dissector()" isn't just to let you write a Lua chained dissector.
It's to let other dissectors find the dissector being registered, so
that they can call it, for whatever reason.
2021-11-11 22:41:20 -08:00
Robert Shade 1f20b1cead RTPS: Fix the field name used for timestamp 2021-11-11 17:37:51 +00:00
Robert Shade f277ef5e27 RTPS: Enable dissection of PLAIN_CDR2 2021-11-11 17:16:47 +00:00
Stefan Battmer 599d3e2c94 gvsp: Added dissector support for various 'reserved' bytes
- Added dissector support for the various reserved fields of the container
- Adjusted some of the display strings
2021-11-11 17:02:14 +00:00
PaulTyler 6be988d9b2 RTPS: Fix Group GUID dissector bug.
Dissector was not correctly distinguishing between 12 byte and 16 byte Group GUIDs.
Code for dissecting Participant GUID used as guidance.
closes #17631.
2021-11-11 16:47:42 +00:00
Zoran Bošnjak adf48851b1 asterix: Sync with asterix-specs #dc8e48b56c 2021-11-11 13:47:10 +00:00
Gerald Combs 9f46ae74ff SHICP: Provide a valid string length.
Fixes #17723.
2021-11-10 18:27:34 -08:00
John Thacker 139c04f40a DLEP: Desegment messages over TCP
Handle multiple message PDUs in a single TCP segment, and DLEP messages
split across multiple segments. Fix #17669.
2021-11-11 00:13:23 +00:00
Jaap Keuter 4010799cb3 TCP: always return a free-able string buffer
Closes #17722
2021-11-10 10:57:45 +00:00
Dr. Lars Völker 5b54bb2e0d MKA: MACsec SAK USE body length = 0 does not decode (BUGFIX) 2021-11-10 10:11:30 +00:00
frst 29d27153b2 FPP: Fix dissector preemption interface-id bug 2021-11-10 05:22:52 +00:00
John Thacker 41a6e505ee AVTP/IEEE1722: Fix offset when over UDP
Take into account the bytes for the sequence number when passing
the next tvb into the subdissectors. Fix #17389
2021-11-10 05:05:55 +00:00
Filip Kågesson 82fd526e96 SHICP: Added dissector to support Secure Host IP Configuration Protocol.
A new dissector was added to support dissection of the SHICP protocol.
2021-11-09 19:49:58 +00:00
Michael Tuexen d11c069786 BBLog: Fix support of TCP window scaling
Rcv.Wind.Shift and Snd.Wind.Shift were not displayed correctly by
the BBLog dissector and the TCP dissector was not using the
information about the shift values available in the BBLog file.
2021-11-08 23:05:20 +00:00
Anders Broman 6e4e4ebd50 GSM-MAP: Dissect SM-DeliveryFailureCause variants
V1 version may omit SEQUENCE and have only the SM_EnumeratedDeliveryFailureCause element.
2021-11-08 16:12:23 +01:00
Richard Sharpe 09f020b3f3 ieee802.11: Start adding support for 802.11be.
This is the extra high throughput spec.
2021-11-07 20:30:15 +00:00
Jaap Keuter 93eceb1991 IPv6: List all extension headers, or why they're not treated as such 2021-11-07 17:42:47 +00:00
bzdula efc6ee9e85 spice: Added variables for proper protocol dissection 2021-11-07 13:40:06 +00:00
Justin Iurman 41b8f813c2 ipv6: dissector: ioam: improve checks
Improve checks on nodelen, remlen and trace_type.

Signed-off-by: Justin Iurman <justin.iurman@uliege.be>
2021-11-06 15:03:29 +00:00
Colin Finck c034d33ef9 omron-fins: Don't check the Gateway Count byte.
While analyzing the network traffic between an OMRON NS8-TV01B-V2 HMI
and an OMRON CJ2M PLC, I discovered that all requests from the HMI have
their Gateway Count byte set to 0x07. Responses from the PLC still have
a Gateway Count byte set to 0x02.
This conflicts with the (20-year-old) protocol documentation by OMRON,
but happens nevertheless.

With this check removed, all bytes can be successfully parsed to an
OMRON FINS message.
2021-11-05 20:26:39 +00:00
Okan Palaz d72af75157 ieee1905: Correct RSSI fields to RCPI
- The RSSI fields in "(Un)Asssociated STA Link Metrics" and "Steering
  Policy" TLVs are not defined as RSSI but RCPI in released versions of
  the Multi-AP/EasyMesh specs. It's defined as an unsigned value in
  range 0 - 220.
- Changed "RCPI reporting threshold" type to UINT8 in "Metric Reporing
  Policy TLV".
2021-11-05 20:12:37 +00:00
Arkady Gilinsky a592c0d84f oampdu: Add OAM D-ONU leaves description
Signed-off-by: Arkady Gilinsky <8351139-ark-g@users.noreply.gitlab.com>
2021-11-05 21:15:25 +02:00
Justin Iurman dd0ecf8623 Fix loop inside the IOAM Trace data dissection
This patch is a quick fix to the infinite loop during dissection of the
IOAM Trace data list, introduced by merge request !4962

Fixes #17709
Closes #17709

Signed-off-by: Justin Iurman <justin.iurman@uliege.be>
2021-11-05 15:51:31 +01:00
Martin Mathieson 826e850c00 someip: make a function static 2021-11-04 09:20:47 +00:00
John Thacker dc22cb1b89 RTP: Strengthen heuristics
Strengthen the heuristics according to Appendix A.1 of RFC 3550:

Reject if the packet isn't long enough to fit the fixed header, including
the CSRCs if present.
Reject if the packet isn't long enough to fit the extension header.
Reject if the packet isn't long enough to fit the padding, if we have
all the packet.
Reject the payload types reserved for RTCP conflict.

Most of these lead to malformed packet error if dissected anyway,
which can still be done via other methods (SDP, Decode As, etc.)
2021-11-04 05:29:02 +00:00