HarmJ0y / pylnker

This is a Python port of lnk-parse-1.0, a tool to parse Windows .lnk files.
GNU General Public License v2.0
77 stars 38 forks source link

pylnker for python 3 #13

Open Erhie opened 5 years ago

Erhie commented 5 years ago

here I have the script pylnkerForPython3.py which runs on python 3 pylnkerForPython3.zip

KillerInstinct commented 5 years ago

My fork should support this, thanks to some work from https://github.com/z00nx https://github.com/KillerInstinct/pylnker

tlansec commented 4 years ago

FWIW, the fork from KillerInstinct does not support Python3 afaict, since byte checks are still using strings rather than the proper type, e.g.:

https://github.com/KillerInstinct/pylnker/blob/master/pylnker.py#L319

Can confirm that the pylnkerForPython3.zip uses the correct types.

KillerInstinct commented 4 years ago

Hi @tlansec, thanks for the info. I didn't do the initial Py3 conversion and at the time didn't have a project using Py3 as a test case. I setup some testing locally with a small sample set and put in type fixes with https://github.com/KillerInstinct/pylnker/commit/8ac04a3d6ae409846c443ddf4940910db7cfd439

There's also proper fixes to the timestamp handling, as the "fixes" in the zipped script simply try/except and ignore, eg:

def ms_time_to_unix_str(windows_time):
    time_str = ''
    try:
        unix_time = windows_time / 10000000.0 - 11644473600
        time_str = str(datetime.datetime.fromtimestamp(unix_time))
    except:
        pass
    return time_str

Happy to accept PRs / Issue Requests if you find further bugs, as at this point, I think this repo is no longer maintained.