leechcorepyc 2.22.2__tar.gz → 2.22.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. {leechcorepyc-2.22.2/leechcorepyc.egg-info → leechcorepyc-2.22.5}/PKG-INFO +1 -1
  2. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/includes/leechcore.h +1 -1
  3. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/includes/leechcore_device.h +1 -1
  4. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/Makefile.macos +1 -1
  5. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_file.c +3 -3
  6. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_fpga.c +31 -2
  7. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_hibr.c +1 -1
  8. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_pmem.c +1 -1
  9. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_tmd.c +1 -1
  10. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_usb3380.c +1 -1
  11. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_vmm.c +1 -1
  12. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/device_vmware.c +1 -1
  13. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechcore.c +1 -1
  14. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechcore.h +1 -1
  15. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechcore_device.h +1 -1
  16. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechcore_internal.h +1 -1
  17. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechrpc.h +1 -1
  18. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechrpc_c.c +31 -56
  19. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechrpc_h.h +1 -1
  20. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechrpcclient.c +1 -1
  21. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechrpcshared.c +1 -1
  22. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/memmap.c +1 -1
  23. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/oscompatibility.c +1 -1
  24. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/oscompatibility.h +1 -1
  25. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/util.c +1 -1
  26. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/util.h +1 -1
  27. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/version.h +2 -2
  28. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_rawtcp/version.h +2 -2
  29. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcorepyc.c +1 -1
  30. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5/leechcorepyc.egg-info}/PKG-INFO +1 -1
  31. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcorepyc.h +1 -1
  32. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcorepyc_barrequest.c +1 -1
  33. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/oscompatibility.c +1 -1
  34. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/oscompatibility.h +1 -1
  35. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/setup.py +1 -1
  36. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/MANIFEST.in +0 -0
  37. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/Makefile +0 -0
  38. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/README +0 -0
  39. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/files/dummy +0 -0
  40. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/includes/leechgrpc.h +0 -0
  41. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/includes/libpdbcrust.h +0 -0
  42. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/includes/vmmdll.h +0 -0
  43. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/includes/vmmyara.h +0 -0
  44. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/Makefile +0 -0
  45. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechcore.rc +0 -0
  46. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/leechrpc.idl +0 -0
  47. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/ob/ob.h +0 -0
  48. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/ob/ob_bytequeue.c +0 -0
  49. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/ob/ob_core.c +0 -0
  50. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/ob/ob_map.c +0 -0
  51. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore/ob/ob_set.c +0 -0
  52. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_qemu/Makefile +0 -0
  53. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_qemu/leechcore_device_qemu.c +0 -0
  54. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_rawtcp/Makefile +0 -0
  55. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_rawtcp/leechcore_device_rawtcp.c +0 -0
  56. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_rawtcp/oscompatibility.c +0 -0
  57. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_rawtcp/oscompatibility.h +0 -0
  58. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_rawtcp/plugin.rc +0 -0
  59. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_device_rawtcp/resource.h +0 -0
  60. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_ft601_driver_linux/Makefile +0 -0
  61. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_ft601_driver_linux/fpga_libusb.c +0 -0
  62. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_ft601_driver_linux/fpga_libusb.h +0 -0
  63. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_ft601_driver_linux/leechcore_ft601_driver_linux.c +0 -0
  64. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcore_ft601_driver_linux/leechcore_ft601_driver_linux.h +0 -0
  65. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcorepyc/__init__.py +0 -0
  66. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcorepyc.egg-info/SOURCES.txt +0 -0
  67. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcorepyc.egg-info/dependency_links.txt +0 -0
  68. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/leechcorepyc.egg-info/top_level.txt +0 -0
  69. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/Makefile +0 -0
  70. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/lznt1.h +0 -0
  71. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/Array.h +0 -0
  72. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/Bitstream.h +0 -0
  73. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/CircularBuffer.h +0 -0
  74. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/HuffmanDecoder.h +0 -0
  75. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/HuffmanEncoder.h +0 -0
  76. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/LZNT1Dictionary.h +0 -0
  77. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/LZNT1Dictionary_SA.h +0 -0
  78. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/XpressDictionary.h +0 -0
  79. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/config.h +0 -0
  80. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/general.h +0 -0
  81. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/internal.h +0 -0
  82. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp/sorting.h +0 -0
  83. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/mscomp.h +0 -0
  84. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/xpress.h +0 -0
  85. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/include/xpress_huff.h +0 -0
  86. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/src/lznt1_compress.cpp +0 -0
  87. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/src/lznt1_decompress.cpp +0 -0
  88. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/src/mscomp.cpp +0 -0
  89. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/src/xpress_compress.cpp +0 -0
  90. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/src/xpress_decompress.cpp +0 -0
  91. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/src/xpress_huff_compress.cpp +0 -0
  92. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/ms-compress/src/xpress_huff_decompress.cpp +0 -0
  93. {leechcorepyc-2.22.2 → leechcorepyc-2.22.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: leechcorepyc
3
- Version: 2.22.2
3
+ Version: 2.22.5
4
4
  Summary: LeechCore for Python
5
5
  Home-page: https://github.com/ufrisk/LeechCore
6
6
  Author: Ulf Frisk
@@ -11,7 +11,7 @@
11
11
  // - README: https://github.com/ufrisk/LeechCore
12
12
  // - GUIDE: https://github.com/ufrisk/LeechCore/wiki
13
13
  //
14
- // (c) Ulf Frisk, 2020-2025
14
+ // (c) Ulf Frisk, 2020-2026
15
15
  // Author: Ulf Frisk, pcileech@frizk.net
16
16
  //
17
17
  // Header Version: 2.20.0
@@ -15,7 +15,7 @@
15
15
  // device may be created/opened - if only one instance may be open at the same
16
16
  // time this should be handled by the plugin module itself.
17
17
  //
18
- // (c) Ulf Frisk, 2020-2025
18
+ // (c) Ulf Frisk, 2020-2026
19
19
  // Author: Ulf Frisk, pcileech@frizk.net
20
20
  //
21
21
  // Header Version: 2.5
@@ -1,5 +1,5 @@
1
1
  CC=clang
2
- CFLAGS += -I. -D MACOS -D _GNU_SOURCE -fPIC -fvisibility=hidden -pthread
2
+ CFLAGS += -I. -I../includes -D MACOS -D _GNU_SOURCE -fPIC -fvisibility=hidden -pthread
3
3
  CFLAGS += -fPIC -fstack-protector-strong -D_FORTIFY_SOURCE=2 -O1
4
4
  CFLAGS += -Wall -Wno-multichar -Wno-unused-result -Wno-unused-variable -Wno-unused-value
5
5
  CFLAGS += -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
@@ -1,6 +1,6 @@
1
1
  // device_file.c : implementation related to file backed memory acquisition device.
2
2
  //
3
- // (c) Ulf Frisk, 2018-2025
3
+ // (c) Ulf Frisk, 2018-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include "leechcore.h"
@@ -862,12 +862,12 @@ BOOL DeviceFile_Open(_Inout_ PLC_CONTEXT ctxLC, _Out_opt_ PPLC_CONFIG_ERRORINFO
862
862
  ctxLC->Config.fVolatile = FALSE; // Files are assumed to be static non-volatile.
863
863
  if(0 == _strnicmp("file://", ctxLC->Config.szDevice, 7)) {
864
864
  if((pParam = LcDeviceParameterGet(ctxLC, DEVICE_FILE_PARAMETER_FILE)) && pParam->szValue[0]) {
865
- // we have a file name on the new format, i.e. fpga://file=<filename> - use the new format.
865
+ // we have a file name on the new format, i.e. file://file=<filename> - use the new format.
866
866
  strncpy_s(ctx->szFileName, _countof(ctx->szFileName), pParam->szValue, _TRUNCATE);
867
867
  ctxLC->Config.fVolatile = LcDeviceParameterGetNumeric(ctxLC, DEVICE_FILE_PARAMETER_VOLATILE) ? TRUE : FALSE;
868
868
  ctxLC->Config.fWritable = LcDeviceParameterGetNumeric(ctxLC, DEVICE_FILE_PARAMETER_WRITE) ? TRUE : FALSE;
869
869
  } else {
870
- // we have a file name on the old format, i.e. fpga://<filename> - use the old format.
870
+ // we have a file name on the old format, i.e. file://<filename> - use the old format.
871
871
  strncpy_s(ctx->szFileName, _countof(ctx->szFileName), ctxLC->Config.szDevice + 7, _countof(ctxLC->Config.szDevice) - 7);
872
872
  }
873
873
  } else if(0 == _stricmp(ctxLC->Config.szDevice, "livekd")) {
@@ -7,7 +7,7 @@
7
7
  // - FT2232H/FT245 protocol - access FPGA via FT2232H USB2 instead of FT601 USB3.
8
8
  // - Other devices with plugin driver - ZDMA etc.
9
9
  //
10
- // (c) Ulf Frisk, 2017-2025
10
+ // (c) Ulf Frisk, 2017-2026
11
11
  // Author: Ulf Frisk, pcileech@frizk.net
12
12
  //
13
13
  #include "leechcore.h"
@@ -293,6 +293,8 @@ typedef struct tdDEVICE_CONTEXT_FPGA {
293
293
  } tlp_callback;
294
294
  BOOL fFT601;
295
295
  BOOL fCustomDriver;
296
+ BOOL fATS;
297
+ BYTE bAT;
296
298
  } DEVICE_CONTEXT_FPGA, *PDEVICE_CONTEXT_FPGA;
297
299
 
298
300
  // STRUCT FROM FTD3XX.h
@@ -339,7 +341,7 @@ typedef struct {
339
341
 
340
342
  typedef struct tdTLP_HDR {
341
343
  WORD Length : 10;
342
- WORD _AT : 2;
344
+ WORD AT : 2;
343
345
  WORD _Attr : 2;
344
346
  WORD _EP : 1;
345
347
  WORD _TD : 1;
@@ -2354,6 +2356,7 @@ VOID DeviceFPGA_Synch_ReadScatter_Impl(_In_ PLC_CONTEXT ctxLC, _In_ DWORD cMEMs,
2354
2356
  BYTE bTag;
2355
2357
  SIZE_T cbTlpRaw;
2356
2358
  BYTE pbTlpRaw[TLP_RX_MAX_SIZE];
2359
+ BOOL fATS = ctx->fATS;
2357
2360
  // TX queued RAW TLPs (if any) from other threads and flush:
2358
2361
  if(ObByteQueue_Size(ctx->tlp_callback.pBqTx)) {
2359
2362
  while(ObByteQueue_Pop(ctx->tlp_callback.pBqTx, NULL, sizeof(pbTlpRaw), pbTlpRaw, &cbTlpRaw)) {
@@ -2392,6 +2395,7 @@ VOID DeviceFPGA_Synch_ReadScatter_Impl(_In_ PLC_CONTEXT ctxLC, _In_ DWORD cMEMs,
2392
2395
  is32 = pDMA->qwA < 0x100000000;
2393
2396
  if(is32) {
2394
2397
  hdrRd32->h.TypeFmt = TLP_MRd32;
2398
+ if(fATS) { hdrRd32->h.AT = ctx->bAT; }
2395
2399
  hdrRd32->h.Length = (WORD)((cb < 0x1000) ? cb >> 2 : 0);
2396
2400
  hdrRd32->RequesterID = ctx->wDeviceId;
2397
2401
  hdrRd32->Tag = bTag;
@@ -2400,6 +2404,7 @@ VOID DeviceFPGA_Synch_ReadScatter_Impl(_In_ PLC_CONTEXT ctxLC, _In_ DWORD cMEMs,
2400
2404
  hdrRd32->Address = (DWORD)(pDMA->qwA + o);
2401
2405
  } else {
2402
2406
  hdrRd64->h.TypeFmt = TLP_MRd64;
2407
+ if(fATS) { hdrRd64->h.AT = ctx->bAT; }
2403
2408
  hdrRd64->h.Length = (WORD)((cb < 0x1000) ? cb >> 2 : 0);
2404
2409
  hdrRd64->RequesterID = ctx->wDeviceId;
2405
2410
  hdrRd64->Tag = bTag;
@@ -2643,6 +2648,21 @@ BOOL DeviceFPGA_Async2_Read_RxTlpFromBuffer(_In_ PLC_CONTEXT ctxLC, _In_ PDEVICE
2643
2648
  {
2644
2649
  BOOL fReadTlp = FALSE;
2645
2650
  DWORD cdwTlpDataConsumed = 1;
2651
+ PDWORD pdwSData = NULL;
2652
+ // FPGA USB core contains a bug in which the initial 0x55556666 fillers may
2653
+ // occur at start of buffer (or in rare cases, after the initial status dword).
2654
+ if(ctx->rxbuf.cb - ctx->rxbuf.o >= 20) {
2655
+ pdwSData = (PDWORD)(ctx->rxbuf.pb + ctx->rxbuf.o);
2656
+ if((pdwSData[1] == 0x55556666) && (pdwSData[2] == 0x55556666) && (pdwSData[3] == 0x55556666) && (pdwSData[4] == 0x55556666)) {
2657
+ if(pdwSData[0] == 0x55556666) {
2658
+ ctx->rxbuf.o += 20;
2659
+ } else if(((pdwSData[0] & 0xf0000000) == 0xe0000000) && (ctx->rxbuf.cb - ctx->rxbuf.o >= 24)) {
2660
+ pdwSData[5] = pdwSData[0];
2661
+ ctx->rxbuf.o += 20;
2662
+ }
2663
+ }
2664
+ }
2665
+ // Acquire one TLP at a time:
2646
2666
  while((ctx->rxbuf.o + 32 <= ctx->rxbuf.cb) && cdwTlpDataConsumed) {
2647
2667
  cdwTlpDataConsumed = DeviceFPGA_Async2_Read_RxTlpSingle(ctxLC, ctx, (ctx->rxbuf.cb - ctx->rxbuf.o) >> 2, (PDWORD)(ctx->rxbuf.pb + ctx->rxbuf.o));
2648
2668
  fReadTlp = fReadTlp || (cdwTlpDataConsumed & 0x80000000);
@@ -2679,6 +2699,7 @@ VOID DeviceFPGA_Async2_Read_TxTlpSingle_MrdTlp(_In_ PLC_CONTEXT ctxLC, _In_ PDEV
2679
2699
  PTLP_HDR_MRdWr32 hdrRd32 = (PTLP_HDR_MRdWr32)tx;
2680
2700
  if(f32) {
2681
2701
  hdrRd32->h.TypeFmt = TLP_MRd32;
2702
+ if(ctx->fATS) { hdrRd32->h.AT = ctx->bAT; }
2682
2703
  hdrRd32->h.Length = wTlpDwLength;
2683
2704
  hdrRd32->RequesterID = ctx->wDeviceId;
2684
2705
  hdrRd32->Tag = iTag;
@@ -2687,6 +2708,7 @@ VOID DeviceFPGA_Async2_Read_TxTlpSingle_MrdTlp(_In_ PLC_CONTEXT ctxLC, _In_ PDEV
2687
2708
  hdrRd32->Address = (DWORD)(qwA);
2688
2709
  } else {
2689
2710
  hdrRd64->h.TypeFmt = TLP_MRd64;
2711
+ if(ctx->fATS) { hdrRd32->h.AT = ctx->bAT; }
2690
2712
  hdrRd64->h.Length = wTlpDwLength;
2691
2713
  hdrRd64->RequesterID = ctx->wDeviceId;
2692
2714
  hdrRd64->Tag = iTag;
@@ -3310,6 +3332,7 @@ VOID DeviceFPGA_ProbeMEM_Impl(_In_ PLC_CONTEXT ctxLC, _In_ QWORD qwAddr, _In_ DW
3310
3332
  is32 = qwAddr + (i << 12) < 0x100000000;
3311
3333
  if(is32) {
3312
3334
  hdrRd32->h.TypeFmt = TLP_MRd32;
3335
+ if(ctx->fATS) { hdrRd32->h.AT = ctx->bAT; }
3313
3336
  hdrRd32->h.Length = 1;
3314
3337
  hdrRd32->RequesterID = ctx->wDeviceId;
3315
3338
  hdrRd32->FirstBE = 0xf;
@@ -3318,6 +3341,7 @@ VOID DeviceFPGA_ProbeMEM_Impl(_In_ PLC_CONTEXT ctxLC, _In_ QWORD qwAddr, _In_ DW
3318
3341
  hdrRd32->Tag = (BYTE)((i >> 5) & 0x1f); // 5 high address bits coded into tag.
3319
3342
  } else {
3320
3343
  hdrRd64->h.TypeFmt = TLP_MRd64;
3344
+ if(ctx->fATS) { hdrRd32->h.AT = ctx->bAT; }
3321
3345
  hdrRd64->h.Length = 1;
3322
3346
  hdrRd64->RequesterID = ctx->wDeviceId;
3323
3347
  hdrRd64->FirstBE = 0xf;
@@ -3376,6 +3400,7 @@ BOOL DeviceFPGA_WriteMEM_TXP(_In_ PLC_CONTEXT ctxLC, _Inout_ PDEVICE_CONTEXT_FPG
3376
3400
  memset(pbTlp, 0, 16);
3377
3401
  if(pa < 0x100000000) {
3378
3402
  hdrWr32->h.TypeFmt = TLP_MWr32;
3403
+ if(ctx->fATS) { hdrWr32->h.AT = ctx->bAT; }
3379
3404
  hdrWr32->h.Length = (WORD)(cb + 3) >> 2;
3380
3405
  hdrWr32->FirstBE = bFirstBE;
3381
3406
  hdrWr32->LastBE = bLastBE;
@@ -3389,6 +3414,7 @@ BOOL DeviceFPGA_WriteMEM_TXP(_In_ PLC_CONTEXT ctxLC, _Inout_ PDEVICE_CONTEXT_FPG
3389
3414
  cbTlp = (12 + cb + 3) & ~0x3;
3390
3415
  } else {
3391
3416
  hdrWr64->h.TypeFmt = TLP_MWr64;
3417
+ if(ctx->fATS) { hdrWr64->h.AT = ctx->bAT; }
3392
3418
  hdrWr64->h.Length = (WORD)(cb + 3) >> 2;
3393
3419
  hdrWr64->FirstBE = bFirstBE;
3394
3420
  hdrWr64->LastBE = bLastBE;
@@ -3848,6 +3874,7 @@ BOOL DeviceFPGA_SetOption_DoLock(_In_ PLC_CONTEXT ctxLC, _In_ QWORD fOption, _In
3848
3874
  #define FPGA_PARAMETER_DEVICE_ID "bdf"
3849
3875
  #define FPGA_PARAMETER_DRIVER "driver"
3850
3876
  #define FPGA_PARAMETER_FT601 "ft601"
3877
+ #define FPGA_PARAMETER_ATS "ats"
3851
3878
 
3852
3879
  #define FPGA_PARAMETER_ALGO_TINY 0x01
3853
3880
  #define FPGA_PARAMETER_ALGO_SYNCHRONOUS 0x02
@@ -3885,6 +3912,8 @@ BOOL DeviceFPGA_Open(_Inout_ PLC_CONTEXT ctxLC, _Out_opt_ PPLC_CONFIG_ERRORINFO
3885
3912
  }
3886
3913
  if(szDeviceError) { goto fail; }
3887
3914
  ctx->fRestartDevice = (1 == LcDeviceParameterGetNumeric(ctxLC, FPGA_PARAMETER_RESTART_DEVICE));
3915
+ ctx->bAT = (BYTE)LcDeviceParameterGetNumeric(ctxLC, FPGA_PARAMETER_ATS);
3916
+ ctx->fATS = ((ctx->bAT >= 1) && (ctx->bAT <= 3));
3888
3917
  DeviceFPGA_GetDeviceID_FpgaVersion(ctx);
3889
3918
  if(!ctx->wFpgaVersionMajor) {
3890
3919
  szDeviceError = "Unable to connect to FPGA device";
@@ -5,7 +5,7 @@
5
5
  // blog post by ForensicXlab at: https://www.forensicxlab.com/blog/hibernation
6
6
  // Also the original paper at: https://www.cct.lsu.edu/~golden/Papers/sylvehiber.pdf
7
7
  //
8
- // (c) Ulf Frisk, 2024-2025
8
+ // (c) Ulf Frisk, 2024-2026
9
9
  // Author: Ulf Frisk, pcileech@frizk.net
10
10
  //
11
11
  #include "leechcore.h"
@@ -1,6 +1,6 @@
1
1
  // device_pmem.c : implementation of the rekall winpmem memory acquisition device.
2
2
  //
3
- // (c) Ulf Frisk, 2018-2025
3
+ // (c) Ulf Frisk, 2018-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include "leechcore.h"
@@ -2,7 +2,7 @@
2
2
  // Also known as: CVE-2018-1038. Please see Microsoft advisory for more information:
3
3
  // https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-1038
4
4
  //
5
- // (c) Ulf Frisk, 2020-2025
5
+ // (c) Ulf Frisk, 2020-2026
6
6
  // Author: Ulf Frisk, pcileech@frizk.net
7
7
  //
8
8
  #include "leechcore.h"
@@ -1,6 +1,6 @@
1
1
  // device_usb3380.c : implementation related to the USB3380 hardware device.
2
2
  //
3
- // (c) Ulf Frisk, 2017-2025
3
+ // (c) Ulf Frisk, 2017-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include "leechcore.h"
@@ -3,7 +3,7 @@
3
3
  //
4
4
  // Syntax: vmm://hvmm=0x<VMM_HANDLE>,hvm=0x<VMMVM_HANDLE>,max=<MAX_ADDRESS>
5
5
  //
6
- // (c) Ulf Frisk, 2022-2025
6
+ // (c) Ulf Frisk, 2022-2026
7
7
  // Author: Ulf Frisk, pcileech@frizk.net
8
8
  //
9
9
  #include "leechcore.h"
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // tested with vmware workstation 16.1.2
4
4
  //
5
- // (c) Ulf Frisk, 2022-2025
5
+ // (c) Ulf Frisk, 2022-2026
6
6
  // Author: Ulf Frisk, pcileech@frizk.net
7
7
  //
8
8
  #include "leechcore.h"
@@ -1,6 +1,6 @@
1
1
  // leechcore.c : core implementation of the the LeechCore physical memory acquisition library.
2
2
  //
3
- // (c) Ulf Frisk, 2020-2025
3
+ // (c) Ulf Frisk, 2020-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
 
@@ -11,7 +11,7 @@
11
11
  // - README: https://github.com/ufrisk/LeechCore
12
12
  // - GUIDE: https://github.com/ufrisk/LeechCore/wiki
13
13
  //
14
- // (c) Ulf Frisk, 2020-2025
14
+ // (c) Ulf Frisk, 2020-2026
15
15
  // Author: Ulf Frisk, pcileech@frizk.net
16
16
  //
17
17
  // Header Version: 2.20.0
@@ -15,7 +15,7 @@
15
15
  // device may be created/opened - if only one instance may be open at the same
16
16
  // time this should be handled by the plugin module itself.
17
17
  //
18
- // (c) Ulf Frisk, 2020-2025
18
+ // (c) Ulf Frisk, 2020-2026
19
19
  // Author: Ulf Frisk, pcileech@frizk.net
20
20
  //
21
21
  // Header Version: 2.5
@@ -1,7 +1,7 @@
1
1
  // leechcore_internal.h : definitions of internal leechcore functionality such
2
2
  // as non exported parts of memory map functionality.
3
3
  //
4
- // (c) Ulf Frisk, 2020-2025
4
+ // (c) Ulf Frisk, 2020-2026
5
5
  // Author: Ulf Frisk, pcileech@frizk.net
6
6
  //
7
7
 
@@ -1,6 +1,6 @@
1
1
  // leechrpcclient.h : definitions related to the leech rpc service.
2
2
  //
3
- // (c) Ulf Frisk, 2018-2025
3
+ // (c) Ulf Frisk, 2018-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #ifndef __LEECHRPC_H__
@@ -7,7 +7,7 @@
7
7
  /* at Tue Jan 19 04:14:07 2038
8
8
  */
9
9
  /* Compiler settings for leechrpc.idl:
10
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=ARM64 8.01.0628
10
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0628
11
11
  protocol : all , ms_ext, c_ext, robust
12
12
  error checks: allocation ref bounds_check enum stub_data
13
13
  VC __declspec() decoration level:
@@ -16,7 +16,7 @@
16
16
  */
17
17
  /* @@MIDL_FILE_HEADING( ) */
18
18
 
19
- #if defined(_M_ARM64)
19
+ #if defined(_M_AMD64)
20
20
 
21
21
 
22
22
  #if _MSC_VER >= 1200
@@ -32,7 +32,7 @@
32
32
  #include "leechrpc_h.h"
33
33
 
34
34
  #define TYPE_FORMAT_STRING_SIZE 43
35
- #define PROC_FORMAT_STRING_SIZE 67
35
+ #define PROC_FORMAT_STRING_SIZE 61
36
36
  #define EXPR_FORMAT_STRING_SIZE 1
37
37
  #define TRANSMIT_AS_TABLE_SIZE 0
38
38
  #define WIRE_MARSHAL_TABLE_SIZE 0
@@ -185,7 +185,7 @@ error_status_t LeechRpc_ReservedSubmitCommand(
185
185
  }
186
186
 
187
187
 
188
- #if !defined(__RPC_ARM64__)
188
+ #if !defined(__RPC_WIN64__)
189
189
  #error Invalid build platform for this stub.
190
190
  #endif
191
191
 
@@ -200,58 +200,52 @@ static const leechrpc_MIDL_PROC_FORMAT_STRING leechrpc__MIDL_ProcFormatString =
200
200
  0x48, /* Old Flags: */
201
201
  /* 2 */ NdrFcLong( 0x0 ), /* 0 */
202
202
  /* 6 */ NdrFcShort( 0x0 ), /* 0 */
203
- /* 8 */ NdrFcShort( 0x30 ), /* ARM64 Stack size/offset = 48 */
203
+ /* 8 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
204
204
  /* 10 */ 0x32, /* FC_BIND_PRIMITIVE */
205
205
  0x0, /* 0 */
206
- /* 12 */ NdrFcShort( 0x0 ), /* ARM64 Stack size/offset = 0 */
206
+ /* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */
207
207
  /* 14 */ NdrFcShort( 0x8 ), /* 8 */
208
208
  /* 16 */ NdrFcShort( 0x24 ), /* 36 */
209
209
  /* 18 */ 0x47, /* Oi2 Flags: srv must size, clt must size, has return, has ext, */
210
210
  0x5, /* 5 */
211
- /* 20 */ 0x10, /* 16 */
211
+ /* 20 */ 0xa, /* 10 */
212
212
  0x7, /* Ext Flags: new corr desc, clt corr check, srv corr check, */
213
213
  /* 22 */ NdrFcShort( 0x1 ), /* 1 */
214
214
  /* 24 */ NdrFcShort( 0x1 ), /* 1 */
215
215
  /* 26 */ NdrFcShort( 0x0 ), /* 0 */
216
- /* 28 */ NdrFcShort( 0x5 ), /* 5 */
217
- /* 30 */ 0x5, /* 5 */
218
- 0x80, /* 128 */
219
- /* 32 */ 0x81, /* 129 */
220
- 0x82, /* 130 */
221
- /* 34 */ 0x83, /* 131 */
222
- 0x84, /* 132 */
216
+ /* 28 */ NdrFcShort( 0x0 ), /* 0 */
223
217
 
224
218
  /* Parameter cbIn */
225
219
 
226
- /* 36 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
227
- /* 38 */ NdrFcShort( 0x8 ), /* ARM64 Stack size/offset = 8 */
228
- /* 40 */ 0x8, /* FC_LONG */
220
+ /* 30 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
221
+ /* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
222
+ /* 34 */ 0x8, /* FC_LONG */
229
223
  0x0, /* 0 */
230
224
 
231
225
  /* Parameter pbIn */
232
226
 
233
- /* 42 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
234
- /* 44 */ NdrFcShort( 0x10 ), /* ARM64 Stack size/offset = 16 */
235
- /* 46 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
227
+ /* 36 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
228
+ /* 38 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
229
+ /* 40 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
236
230
 
237
231
  /* Parameter pcbOut */
238
232
 
239
- /* 48 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
240
- /* 50 */ NdrFcShort( 0x18 ), /* ARM64 Stack size/offset = 24 */
241
- /* 52 */ 0x8, /* FC_LONG */
233
+ /* 42 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
234
+ /* 44 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
235
+ /* 46 */ 0x8, /* FC_LONG */
242
236
  0x0, /* 0 */
243
237
 
244
238
  /* Parameter ppbOut */
245
239
 
246
- /* 54 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
247
- /* 56 */ NdrFcShort( 0x20 ), /* ARM64 Stack size/offset = 32 */
248
- /* 58 */ NdrFcShort( 0x16 ), /* Type Offset=22 */
240
+ /* 48 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
241
+ /* 50 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
242
+ /* 52 */ NdrFcShort( 0x16 ), /* Type Offset=22 */
249
243
 
250
244
  /* Return value */
251
245
 
252
- /* 60 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
253
- /* 62 */ NdrFcShort( 0x28 ), /* ARM64 Stack size/offset = 40 */
254
- /* 64 */ 0x10, /* FC_ERROR_STATUS_T */
246
+ /* 54 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
247
+ /* 56 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
248
+ /* 58 */ 0x10, /* FC_ERROR_STATUS_T */
255
249
  0x0, /* 0 */
256
250
 
257
251
  0x0
@@ -272,7 +266,7 @@ static const leechrpc_MIDL_TYPE_FORMAT_STRING leechrpc__MIDL_TypeFormatString =
272
266
  /* 8 */ NdrFcShort( 0x1 ), /* 1 */
273
267
  /* 10 */ 0x28, /* Corr desc: parameter, FC_LONG */
274
268
  0x0, /* */
275
- /* 12 */ NdrFcShort( 0x8 ), /* ARM64 Stack size/offset = 8 */
269
+ /* 12 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
276
270
  /* 14 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
277
271
  /* 16 */ 0x1, /* FC_BYTE */
278
272
  0x5b, /* FC_END */
@@ -292,7 +286,7 @@ static const leechrpc_MIDL_TYPE_FORMAT_STRING leechrpc__MIDL_TypeFormatString =
292
286
  /* 32 */ NdrFcShort( 0x1 ), /* 1 */
293
287
  /* 34 */ 0x28, /* Corr desc: parameter, FC_LONG */
294
288
  0x54, /* FC_DEREFERENCE */
295
- /* 36 */ NdrFcShort( 0x18 ), /* ARM64 Stack size/offset = 24 */
289
+ /* 36 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
296
290
  /* 38 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
297
291
  /* 40 */ 0x1, /* FC_BYTE */
298
292
  0x5b, /* FC_END */
@@ -308,7 +302,7 @@ static const unsigned short LeechRpc_FormatStringOffsetTable[] =
308
302
 
309
303
 
310
304
 
311
- #endif /* defined(_M_ARM64) */
305
+ #endif /* defined(_M_AMD64)*/
312
306
 
313
307
 
314
308
 
@@ -319,7 +313,7 @@ static const unsigned short LeechRpc_FormatStringOffsetTable[] =
319
313
  /* at Tue Jan 19 04:14:07 2038
320
314
  */
321
315
  /* Compiler settings for leechrpc.idl:
322
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=ARM64 8.01.0628
316
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0628
323
317
  protocol : all , ms_ext, c_ext, robust
324
318
  error checks: allocation ref bounds_check enum stub_data
325
319
  VC __declspec() decoration level:
@@ -328,12 +322,12 @@ static const unsigned short LeechRpc_FormatStringOffsetTable[] =
328
322
  */
329
323
  /* @@MIDL_FILE_HEADING( ) */
330
324
 
331
- #if defined(_M_ARM64)
325
+ #if defined(_M_AMD64)
332
326
 
333
327
 
334
328
 
335
329
 
336
- #if !defined(__RPC_ARM64__)
330
+ #if !defined(__RPC_WIN64__)
337
331
  #error Invalid build platform for this stub.
338
332
  #endif
339
333
 
@@ -427,12 +421,6 @@ struct
427
421
  struct _NDR64_PARAM_FORMAT frag5;
428
422
  struct _NDR64_PARAM_FORMAT frag6;
429
423
  struct _NDR64_PARAM_FORMAT frag7;
430
- struct /* ARM Parameter Layout */
431
- {
432
- NDR64_UINT16 frag1;
433
- NDR64_UINT8 frag2;
434
- NDR64_UINT8 frag3[ 5 ];
435
- } frag8;
436
424
  }
437
425
  __midl_frag2_t;
438
426
  extern const __midl_frag2_t __midl_frag2;
@@ -583,7 +571,7 @@ static const __midl_frag2_t __midl_frag2 =
583
571
  /* LeechRpc_ReservedSubmitCommand */
584
572
  {
585
573
  /* LeechRpc_ReservedSubmitCommand */ /* procedure LeechRpc_ReservedSubmitCommand */
586
- (NDR64_UINT32) 91095104 /* 0x56e0040 */, /* explicit handle */ /* IsIntrepreted, ServerMustSize, ClientMustSize, HasReturn, ServerCorrelation, ClientCorrelation, HasExtensions, HasArmParamLayout */
574
+ (NDR64_UINT32) 23986240 /* 0x16e0040 */, /* explicit handle */ /* IsIntrepreted, ServerMustSize, ClientMustSize, HasReturn, ServerCorrelation, ClientCorrelation, HasExtensions */
587
575
  (NDR64_UINT32) 48 /* 0x30 */ , /* Stack size */
588
576
  (NDR64_UINT32) 8 /* 0x8 */,
589
577
  (NDR64_UINT32) 40 /* 0x28 */,
@@ -723,19 +711,6 @@ static const __midl_frag2_t __midl_frag2 =
723
711
  }, /* [out], IsReturn, Basetype, ByValue */
724
712
  (NDR64_UINT16) 0 /* 0x0 */,
725
713
  40 /* 0x28 */, /* Stack offset */
726
- },
727
- {
728
- /* LeechRpc_ReservedSubmitCommand */ /* ARM register placement data */
729
- (NDR64_UINT16) 5 /* 0x5 */ , /* Number of Entries */
730
- (NDR64_UINT8) 5 /* 0x5 */ , /* Slots Used */
731
- {
732
- /* LeechRpc_ReservedSubmitCommand */ /* Placement data octets */
733
- (NDR64_UINT8) 0x80,
734
- (NDR64_UINT8) 0x81,
735
- (NDR64_UINT8) 0x82,
736
- (NDR64_UINT8) 0x83,
737
- (NDR64_UINT8) 0x84
738
- }
739
714
  }
740
715
  };
741
716
 
@@ -825,5 +800,5 @@ static const MIDL_STUBLESS_PROXY_INFO LeechRpc_ProxyInfo =
825
800
  #endif
826
801
 
827
802
 
828
- #endif /* defined(_M_ARM64) */
803
+ #endif /* defined(_M_AMD64)*/
829
804
 
@@ -7,7 +7,7 @@
7
7
  /* at Tue Jan 19 04:14:07 2038
8
8
  */
9
9
  /* Compiler settings for leechrpc.idl:
10
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=ARM64 8.01.0628
10
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0628
11
11
  protocol : all , ms_ext, c_ext, robust
12
12
  error checks: allocation ref bounds_check enum stub_data
13
13
  VC __declspec() decoration level:
@@ -1,6 +1,6 @@
1
1
  // leechrpcclient.c : implementation of the remote procedure call (RPC) client.
2
2
  //
3
- // (c) Ulf Frisk, 2018-2025
3
+ // (c) Ulf Frisk, 2018-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include "leechcore.h"
@@ -1,6 +1,6 @@
1
1
  // leechrpcshared.c : implementation of the remote procedure call (RPC) shared functionality (client/server).
2
2
  //
3
- // (c) Ulf Frisk, 2018-2025
3
+ // (c) Ulf Frisk, 2018-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include <stdio.h>
@@ -1,6 +1,6 @@
1
1
  // memmap.c : implementation : memory map.
2
2
  //
3
- // (c) Ulf Frisk, 2020-2025
3
+ // (c) Ulf Frisk, 2020-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
 
@@ -1,6 +1,6 @@
1
1
  // oscompatibility.c : LeechCore Windows/Linux compatibility layer.
2
2
  //
3
- // (c) Ulf Frisk, 2017-2025
3
+ // (c) Ulf Frisk, 2017-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #ifdef _WIN32
@@ -1,6 +1,6 @@
1
1
  // oscompatibility.h : LeechCore Windows/Linux compatibility layer.
2
2
  //
3
- // (c) Ulf Frisk, 2017-2025
3
+ // (c) Ulf Frisk, 2017-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #ifndef __OSCOMPATIBILITY_H__
@@ -1,6 +1,6 @@
1
1
  // util.c : implementation of various utility functions.
2
2
  //
3
- // (c) Ulf Frisk, 2018-2025
3
+ // (c) Ulf Frisk, 2018-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include "util.h"
@@ -1,6 +1,6 @@
1
1
  // util.h : definitions of various utility functions.
2
2
  //
3
- // (c) Ulf Frisk, 2018-2025
3
+ // (c) Ulf Frisk, 2018-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #ifndef __UTIL_H__
@@ -3,8 +3,8 @@
3
3
 
4
4
  #define VERSION_MAJOR 2
5
5
  #define VERSION_MINOR 22
6
- #define VERSION_REVISION 2
7
- #define VERSION_BUILD 88
6
+ #define VERSION_REVISION 5
7
+ #define VERSION_BUILD 91
8
8
 
9
9
  #define VER_FILE_DESCRIPTION_STR "LeechCore Memory Acquisition Library"
10
10
  #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD
@@ -5,8 +5,8 @@
5
5
 
6
6
  #define VERSION_MAJOR 2
7
7
  #define VERSION_MINOR 22
8
- #define VERSION_REVISION 1
9
- #define VERSION_BUILD 87
8
+ #define VERSION_REVISION 2
9
+ #define VERSION_BUILD 88
10
10
 
11
11
  #define VER_FILE_DESCRIPTION_STR "LeechCorePlugin : RAWTCP"
12
12
  #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD
@@ -1,6 +1,6 @@
1
1
  // leechcorepyc.c : Implementation of the LeechCore Python API
2
2
  //
3
- // (c) Ulf Frisk, 2020-2025
3
+ // (c) Ulf Frisk, 2020-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include "leechcorepyc.h"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: leechcorepyc
3
- Version: 2.22.2
3
+ Version: 2.22.5
4
4
  Summary: LeechCore for Python
5
5
  Home-page: https://github.com/ufrisk/LeechCore
6
6
  Author: Ulf Frisk
@@ -1,6 +1,6 @@
1
1
  // leechcorepyc.c : Implementation of the LeechCore Python API
2
2
  //
3
- // (c) Ulf Frisk, 2020-2025
3
+ // (c) Ulf Frisk, 2020-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #ifndef __LEECHCOREPYC_H__
@@ -1,6 +1,6 @@
1
1
  // leechcorepyc_barrequest.c : implementation of LeechCore PCIe BAR request.
2
2
  //
3
- // (c) Ulf Frisk, 2024-2025
3
+ // (c) Ulf Frisk, 2024-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
 
@@ -1,6 +1,6 @@
1
1
  // oscompatibility.c : LeechCore Windows/Linux compatibility layer.
2
2
  //
3
- // (c) Ulf Frisk, 2017-2025
3
+ // (c) Ulf Frisk, 2017-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #ifdef _WIN32
@@ -1,6 +1,6 @@
1
1
  // oscompatibility.h : LeechCore Windows/Linux compatibility layer.
2
2
  //
3
- // (c) Ulf Frisk, 2017-2025
3
+ // (c) Ulf Frisk, 2017-2026
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #ifndef __OSCOMPATIBILITY_H__
@@ -19,7 +19,7 @@ leechcorepyc = Extension(
19
19
 
20
20
  setup(
21
21
  name='leechcorepyc',
22
- version='2.22.2', # VERSION_END
22
+ version='2.22.5', # VERSION_END
23
23
  description='LeechCore for Python',
24
24
  long_description='LeechCore for Python : native extension for physical memory access',
25
25
  url='https://github.com/ufrisk/LeechCore',
File without changes
File without changes
File without changes
File without changes
File without changes