libkeepass / pykeepass

Python library to interact with keepass databases (supports KDBX3 and KDBX4)
https://pypi.org/project/pykeepass/
GNU General Public License v3.0
403 stars 96 forks source link

Problems parsing timestamps #387

Closed A6GibKm closed 1 month ago

A6GibKm commented 3 months ago

I get the following errors in secrets when reading entry.ctime and others.

21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-07T09:25:56.169776+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-01-18T13:40:05.200661+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-01-18T13:40:05.200661+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-07T10:08:46.760348+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-01-18T13:40:05.200661+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-01-18T13:40:05.200661+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T15:47:52.466692+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T15:47:52.466692+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T15:47:52.466692+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T16:01:35.955788+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T16:01:35.955788+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T16:01:35.955788+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-28T12:20:04.155298+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-28T12:20:04.155298+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-28T12:20:04.155298+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-30T14:17:28.878676+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-30T14:17:28.878676+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-30T14:17:28.878676+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-30T14:17:28.878676+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T10:52:49.287549+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T10:52:49.287549+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T10:52:49.287549+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T10:52:49.287549+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T14:20:09.570260+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T14:20:09.570260+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T14:20:09.570260+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T14:20:09.570260+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T14:20:09.570260+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T10:52:49.287549+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-28T12:20:04.155298+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T15:47:52.466692+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T14:20:09.570260+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T10:52:49.287549+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2023-12-28T12:20:04.155298+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-02-06T15:47:52.466692+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ'
21-03-24 19:00:56 | ERROR | Invalid creation time: time data '2024-01-18T13:40:05.200661+00:00' does not match format '%Y-%m-%dT%H:%M:%S%fZ
A6GibKm commented 3 months ago

This comes from

        try:
            time = element.ctime
        except ValueError as err:
            logging.error("Invalid creation time: %s", str(err))
Evidlo commented 2 months ago
"Invalid creation time: %s"

Can you give a stack trace or a link to where that code snippet exists?

Evidlo commented 1 month ago

As of 4.0.7 (2024-02-29) we use datetime.fromisoformat(...), so PyKeePass should already be able to handle the date in the above format.

>>> from datetime import datetime
>>> datetime.fromisoformat('2024-02-07T10:08:46.760348+00:00')
datetime.datetime(2024, 2, 7, 10, 8, 46, 760348, tzinfo=datetime.timezone.utc)

Reopen if the issue persists.