DateTimeToADTime
Converts unix time to AD Integer8 time. This is used in many AD date fields like pwdLastSet.
python · Community Common Scripts
Source
import demistomock as demisto # noqa: F401 from CommonServerPython import * # noqa: F401 from calendar import timegm from datetime import datetime, timedelta, tzinfo EPOCH_AS_FILETIME = 116444736000000000 # January 1, 1970 as MS file time HUNDREDS_OF_NANOSECONDS = 10000000 ZERO = timedelta(0) HOUR = timedelta(hours=1) class UTC(tzinfo): """UTC""" def tzname(self, dt): return "UTC" def dst(self, dt): return ZERO utc = UTC() # type: ignore[abstract] def dt_to_filetime(dt): """Converts a datetime to Microsoft filetime format. If the object is time zone-naive, it is forced to UTC before conversion. >>> "%.0f" % dt_to_filetime(datetime(2009, 7, 25, 23, 0)) '128930364000000000' >>> dt_to_filetime(datetime(1970, 1, 1, 0, 0, tzinfo=utc)) 116444736000000000L >>> dt_to_filetime(datetime(1970, 1, 1, 0, 0)) 116444736000000000L """ if dt.tzinfo is None: dt = dt.replace(tzinfo=utc) # return EPOCH_AS_FILETIME + (timegm(dt.timetuple()) * HUNDREDS_OF_NANOSECONDS) ad_time = EPOCH_AS_FILETIME + (timegm(dt.timetuple()) * HUNDREDS_OF_NANOSECONDS) ad_time_str = str(ad_time) entry = { "Type": entryTypes["note"], "ContentsFormat": formats["json"], "Contents": ad_time, "HumanReadable": ad_time, "EntryContext": {"ADFileTime": ad_time, "ADFileTimeStr": ad_time_str}, } return entry """MAIN FUNCTION""" def main(): try: args = demisto.args() days_ago = args["days_ago"] new_date = datetime.today() - timedelta(int(days_ago)) dt = new_date.replace(hour=0, minute=0, second=0, microsecond=0) entry = dt_to_filetime(dt) demisto.results(entry) except Exception as e: demisto.error(traceback.format_exc()) # print the traceback return_error(f"Failed to execute script.\nError:\n{str(e)}") if __name__ in ["__main__", "builtin", "builtins"]: main()
README
Converts unix time to AD Integer8 time. This is used in many AD date fields like pwdLastSet.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | active directory, date |
Inputs
| Argument Name | Description |
|---|---|
| days_ago | Number of days before todays date. |
Outputs
The converted AD time.