我在脚本中使用了一个命令行程序,它在上找不到它的配置目录,而是在PowerShell上找到它的配置目录。
即使这个问题似乎与某些特定程序(一个名为OCLHashCat的命令行散列分析器工具)的行为相对应,但我认为这主要是Windows行为和/或所涉及的变量的问题。让我解释一下。
这是命令行程序的目录(OCLHashCat)的内容:
d:\Programas\HashCat\OCLHashCat>dir
El volumen de la unidad D es Datos
El número de serie del volumen es: 57E9-ACA0
Directorio de d:\Programas\HashCat\OCLHashCat
07/10/2014 09:28 am <DIR> .
07/10/2014 09:28 am <DIR> ..
06/10/2014 11:56 pm <DIR> charsets
06/10/2014 11:56 pm <DIR> docs
06/10/2014 11:57 pm 4 eula.accepted
02/10/2014 12:11 pm 1.210.228 example.dict
02/10/2014 12:11 pm 220.796 example0.hash
02/10/2014 12:11 pm 36 example400.hash
02/10/2014 12:11 pm 36 example500.hash
06/10/2014 11:56 pm <DIR> extra
02/10/2014 12:11 pm 33.685.504 hashcat.hcstat
06/10/2014 11:56 pm <DIR> kernels
06/10/2014 11:56 pm <DIR> masks
02/10/2014 12:11 pm 72 oclExample0.cmd
02/10/2014 12:11 pm 66 oclExample0.sh
02/10/2014 12:11 pm 68 oclExample400.cmd
02/10/2014 12:11 pm 61 oclExample400.sh
02/10/2014 12:11 pm 61 oclExample500.cmd
02/10/2014 12:11 pm 55 oclExample500.sh
15/11/2014 11:46 pm 128 oclHashcat.dictstat
07/10/2014 02:52 am 11.448 oclHashcat.log
07/10/2014 02:52 am <DIR> oclHashcat.outfiles
07/10/2014 02:03 am 0 oclHashcat.pot
07/10/2014 09:28 am 400 oclHashcat.restore
02/10/2014 12:11 pm 388.744 oclHashcat32.bin
02/10/2014 12:11 pm 419.840 oclHashcat32.exe
02/10/2014 12:11 pm 383.136 oclHashcat64.bin
02/10/2014 12:11 pm 432.128 oclHashcat64.exe
06/10/2014 11:56 pm <DIR> rules如您所见,目录kernels就在那里。
OCLHashCat的家就在我的路上:
C:\>oclhashcat64
oclHashcat v1.31 starting...
Usage: oclhashcat64 [options]... hash|hashfile|hccapfile [dictionary|mask|direct
ory]...
Try --help for more help.但是,如果我尝试运行,它的就无法找到它自己的一些文件/目录:
C:\Temporal>oclhashcat64 Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...
Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel not fo
und in cache! Building may take a while...
ERROR: ./kernels/4098/m02500.VLIW1.llvmir: No such file or directory注意最后一个错误:它找不到一个文件,但是我检查了这样的文件是否存在。
C:\Temporal>dir d:\Programas\HashCat\OCLHashCat\kernels\4098\m02500.VLIW1.llvmir
El volumen de la unidad D es Datos
El número de serie del volumen es: 57E9-ACA0
Directorio de d:\Programas\HashCat\OCLHashCat\kernels\4098
02/10/2014 12:11 pm 326.912 m02500.VLIW1.llvmir
1 archivos 326.912 bytes如果我CHDir到程序的目录中:
d:\Programas\HashCat\OCLHashCat>oclhashcat64 -m 2500 "c:\Temporal\Test.hccap" -a
3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...
Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel (25932
0 bytes)
Device #1: Kernel ./kernels/4098/markov_le_v1.Bonaire_1573.4_1573.4 (VM).kernel
(92404 bytes)
Device #1: Kernel ./kernels/4098/bzero.Bonaire_1573.4_1573.4 (VM).kernel (30496
bytes)
Device #2: Kernel ./kernels/4098/m02500.Tahiti_1573.4_1573.4 (VM).kernel (259428
bytes)
Device #2: Kernel ./kernels/4098/markov_le_v1.Tahiti_1573.4_1573.4 (VM).kernel (
92388 bytes)
Device #2: Kernel ./kernels/4098/bzero.Tahiti_1573.4_1573.4 (VM).kernel (30492 b
ytes)
[s]tatus [p]ause [r]esume [b]ypass [q]uit =>那就是:一切都像魅力一样运作。
在Powershell中,无论我从哪里调用程序,一切都工作得很完美。示例:
PS C:\Temporal> oclHashcat64.exe Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...
Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel (259320 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Bonaire_1573.4_1573.4 (VM).kernel (92404 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Bonaire_1573.4_1573.4 (VM).kernel (30496 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Tahiti_1573.4_1573.4 (VM).kernel (259428 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Tahiti_1573.4_1573.4 (VM).kernel (92388 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Tahiti_1573.4_1573.4 (VM).kernel (30492 bytes)
[s]tatus [p]ause [r]esume [b]ypass [q]uit =>,但是有一些原因使我需要经典的CMD,比如与CygWin一起使用(这应该允许我使用GNU屏幕,但这是另一回事)。
我认为问题来自于./kernels...引用,这使得命令行程序(OCLHashCat)尝试在运行路径中搜索目录,而不是在原始路径(程序的路径树)中搜索。
有谁能给我点主意试试吗?
额外信息:程序OCLHashCat有Linux和Windows版本,所以可能是一些编译/编程问题或类似的问题。
额外信息2:在过去的一年里,这个程序已经修改了4到5次版本,而且我一直有这个问题。
请求项下的额外信息:
PS C:\Temporal> get-command oclHashcat64.exe | fl *
HelpUri :
FileVersionInfo : File: d:\Programas\HashCat\OCLHashCat\oclHashcat6
4.exe
InternalName:
OriginalFilename:
FileVersion:
FileDescription:
Product:
ProductVersion:
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language:
Path : d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe
Extension : .exe
Definition : d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe
Visibility : Public
OutputType : {System.String}
Name : oclHashcat64.exe
CommandType : Application
ModuleName :
Module :
Parameters :
ParameterSets :因此,PowerShell中的路径似乎是正确的。
关于SSH的额外信息:通过SSHing进入我的计算机(运行的Windows7 SP1 ),行为完全相同。它不适用于标准shell:
login as: Luis-
Luis-@Windu-'s password:
Microsoft Windows [Versión 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.
C:\Users\Luis->cd \Temporal
C:\Temporal>oclhashcat64 Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...
WARN: ADL_Overdrive6_FanSpeed_Get(): -5
Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel not found
in cache! Building may take a while...
ERROR: ./kernels/4098/m02500.VLIW1.llvmir: No such file or directory而powershell是这样的:
login as: Luis-
Luis-@Windu-'s password:
Microsoft Windows [Versión 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.
C:\Users\Luis->powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Reservados todos los derechos.
PS C:\Users\Luis-> cd \
PS C:\> cd .\Temporal
PS C:\Temporal> oclHashcat64.exe Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...
WARN: ADL_Overdrive6_FanSpeed_Get(): -5
Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Bonaire_1573.
4_1573.4 (VM).kernel (259320 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Bonaire
_1573.4_1573.4 (VM).kernel (92404 bytes)
Device #1: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Bonaire_1573.4
_1573.4 (VM).kernel (30496 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Tahiti_1573.4
_1573.4 (VM).kernel (259428 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Tahiti_
1573.4_1573.4 (VM).kernel (92388 bytes)
Device #2: Kernel d:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Tahiti_1573.4_
1573.4 (VM).kernel (30492 bytes)
[s]tatus [p]ause [r]esume [b]ypass [q]uit =>请求时提供的额外信息:
C:\Temporal>oclhashcat64 "c:\Temporal\Test.hccap" -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...
Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel ./kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel not fo
und in cache! Building may take a while...
ERROR: ./kernels/4098/m02500.VLIW1.llvmir: No such file or directory关于在CygWin上运行的额外信息:
Luis@Windu /cygdrive/c/Temporal
$ oclhashcat64 Test.hccap -m 2500 -a 3 ?d?d?d?d?d?d?d?d
oclHashcat v1.31 starting...
Device #1: Bonaire, 1024MB, 1050Mhz, 12MCU
Device #2: Tahiti, 3072MB, 900Mhz, 28MCU
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 8 bits, 256 entries, 0x000000ff mask, 1024 bytes
Applicable Optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 80c
Device #1: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Bonaire_1573.4_1573.4 (VM).kernel (259320 bytes)
Device #1: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Bonaire_1573.4_1573.4 (VM).kernel (92404 bytes)
Device #1: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Bonaire_1573.4_1573.4 (VM).kernel (30496 bytes)
Device #2: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/m02500.Tahiti_1573.4_1573.4 (VM).kernel (259428 bytes)
Device #2: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/markov_le_v1.Tahiti_1573.4_1573.4 (VM).kernel (92388 bytes)
Device #2: Kernel D:\Programas\HashCat\OCLHashCat/kernels/4098/bzero.Tahiti_1573.4_1573.4 (VM).kernel (30492 bytes)
[s]tatus [p]ause [r]esume [b]ypass [q]uit =>因此,我们可以说,程序在CygWin下工作正常。因为它可能是最初为Linux编写的?
也许我可以用这个作为某种解决办法。
发布于 2014-11-16 12:50:44
这个程序显然是从命令行找到它的主页,而不是调用GetModuleFileName。与cmd不同,PowerShell不使用CreateProcess的lpApplicationName参数。相反,它修改命令行以使用完整路径。例如,它将"oclHashcat64.exe"替换为"d:\Programas\HashCat\OCLHashCat\oclHashcat64.exe"。在cmd中,您必须实际键入完整的路径。
作为一种解决方法,您可以使用console API来添加输入别名 for cmd.exe。旧的doskey程序为这个API提供了一个命令行接口。这样,当您在控制台中键入oclHashcat64时,cmd.exe将读取别名中设置的完整路径:
doskey /exename=cmd.exe oclHashcat64="D:\Programas\HashCat\OCLHashCat\oclHashcat64.exe" $* 可以使用doskey /macros:all > aliases将别名(即宏)保存到文件中。然后使用doskey /macrofile=aliases加载它们。您还可以在HKCU\Software\Microsoft\Command Processor\AutoRun中添加一个命令,以便在cmd.exe启动时加载别名。
另一个选择是在您的shell32上的某个目录中创建一个PATH快捷方式(即一个PATH链接文件)。使用命令行中可执行文件的完整路径,并将目录中的start保留为空(即继承shell的工作目录)。将.LNK附加到PATHEXT环境变量,以避免输入.lnk扩展。(我发现链接文件比使用批处理文件作为美化的快捷方式更方便。此外,他们不像批处理文件那样安装Ctrl处理程序,这比让我烦恼的事情少一件事。)
https://stackoverflow.com/questions/26951946
复制相似问题