Pyrdp-convert路径Errorsolve

Pyrdp-convert路径Errorsolve

HuAmI Lv3

Pyrdp-convert路径ErrorSolve

1. 问题识别

执行 pyrdp-convert rdp_dec.pcap -o out 命令时出现大量错误:

1
2
3
[-] Failed to handle data, continuing anyway: [Errno 2] No such file or 
directory: 'D_\\Forensicstools\\envs\\out\\20170823082818_192.168.43.
185_59921-192.168.43.130_3389.pyrdp'

注意到路径中的 D: 被错误地替换为 D_ (冒号变成了下划线),导致系统无法找到正确的文件路径。

2. 定位问题代码

通过分析代码,我发现问题出在 d:\Forensicstools\envs\pyrdp\pyrdp\recording\recorder.py 文件中的 FileLayer 类:

1
2
self.filename = fileName
self.filename = str(self.filename).replace(":", "_") # 错误行:替换了所有冒号

这段代码将文件名中的 所有 冒号替换为下划线,包括 Windows 驱动器号中的冒号(如 D: )。

3. 修复方案

我修改了代码,使其能够识别并保留 Windows 驱动器号中的冒号,同时替换文件名中其他位置的冒号:

1
2
3
4
5
6
7
8
9
self.filename = fileName
# 保留 Windows 驱动器号中的冒号
filename_str = str(self.filename)
if len(filename_str) > 1 and filename_str[1] == ':':
# 保留第一个冒号(驱动器号)
self.filename = filename_str[0:2] + filename_str[2:].replace(":", "_")
else:
# 对非 Windows 路径替换所有冒号
self.filename = filename_str.replace(":", "_")

4. 验证修复

使用虚拟环境中的可执行文件测试修复后的命令:

1
pyrdp-env\Scripts\pyrdp-convert.exe rdp_dec.pcap -o out

命令成功执行,生成了预期的输出文件:

1
2
3
4
5
6
7
[*] Analyzing PCAP 'rdp_dec.pcap' ...
- 192.168.43.185:59921 -> 192.168.43.130:3389 : plaintext
[*] Processing 192.168.43.185:59921 -> 192.168.43.130:3389
100% (1858 of 1858) || Elapsed Time: 0:00:00 Time: 0:00:00

[+] Successfully wrote 'D:\Forensicstools\envs\out\20170823082818_192.168.
43.185_59921-192.168.43.130_3389.pyrdp'

5. 修复效果

从输出结果可以看到,路径中的驱动器号 D: 被正确保留,文件成功生成在指定的输出目录中。

这个修复确保了 pyrdp-convert 工具能够在 Windows 系统上正确处理文件路径,同时保持对非 Windows 系统的兼容性。

  • Title: Pyrdp-convert路径Errorsolve
  • Author: HuAmI
  • Created at : 2025-11-30 12:12:57
  • Updated at : 2025-11-30 16:38:29
  • Link: https://redefine.ohevan.com/2025/11/30/Pyrdp-convert路径ErrorSolve/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments