You've already forked greyhack
36 lines
1.2 KiB
Plaintext
36 lines
1.2 KiB
Plaintext
if params.len != 1 or params[0] == "-h" or params[0] == "--help" then
|
|
current_program = get_shell.host_computer.File(program_path)
|
|
exit "Usage: " + current_program.name + " <password file path>"
|
|
end if
|
|
|
|
crypto = include_lib(current_path + "/crypto.so")
|
|
if not crypto then exit("Unable to load crypto.so from " + current_path)
|
|
|
|
computer = get_shell.host_computer
|
|
password_file = computer.File(params[0])
|
|
if not password_file then
|
|
password_file = computer.File(current_path + "/" + params[0])
|
|
end if
|
|
if not password_file then exit("Unable to find file: " + params[0])
|
|
if password_file.is_folder then exit("Expected a file, not a folder")
|
|
if not password_file.has_permission("r") then exit("Permission denied: " + password_file.path)
|
|
|
|
content = password_file.get_content
|
|
if not content then exit("Unable to read: " + password_file.path)
|
|
|
|
found = 0
|
|
for line in content.split(char(10))
|
|
if line == "" then continue
|
|
parts = line.split(":")
|
|
if parts.len < 2 then continue
|
|
user = parts[0]
|
|
hash = parts[1]
|
|
if user == "" or hash == "" then continue
|
|
plain = crypto.decipher(hash)
|
|
if not plain then continue
|
|
print(user + ":" + plain)
|
|
found = found + 1
|
|
end for
|
|
|
|
if found == 0 then print("No passwords could be deciphered")
|