mirror of
https://github.com/shijimasoft/cia-unix.git
synced 2025-06-19 06:45:41 -04:00
minor code improvements
This commit is contained in:
parent
0f9d8dfc45
commit
b7c40d59e9
68
cia-unix.cr
68
cia-unix.cr
@ -3,6 +3,36 @@ require "colorize"
|
|||||||
log : File = File.open "log.txt", "w"
|
log : File = File.open "log.txt", "w"
|
||||||
log.puts Time.utc.to_s
|
log.puts Time.utc.to_s
|
||||||
|
|
||||||
|
# dependencies check
|
||||||
|
tools = ["python2.7", "./ctrtool", "./makerom", "decrypt.py"]
|
||||||
|
tools.each do |tool|
|
||||||
|
if !File.exists? %x[which #{tool}].chomp
|
||||||
|
case tool
|
||||||
|
when "python2.7"
|
||||||
|
log.delete if File.exists? "log.txt"
|
||||||
|
puts "#{"Python 2.7".colorize.mode(:bold)} not found. Install it before continue"
|
||||||
|
abort "https://www.python.org/download/releases/2.7/"
|
||||||
|
when "decrypt.py"
|
||||||
|
log.delete if File.exists? "log.txt"
|
||||||
|
abort "#{tool.colorize.mode(:bold)} not found. Make sure it's located in the #{"same directory".colorize.mode(:underline)}" if !File.exists? tool
|
||||||
|
else
|
||||||
|
print "Some #{"tools".colorize.mode(:bold)} are missing, do you want to download them? (y/n): "
|
||||||
|
if ["y", "Y"].includes? gets.to_s
|
||||||
|
system "./dltools.sh"
|
||||||
|
else
|
||||||
|
log.delete if File.exists? "log.txt"
|
||||||
|
abort "#{tool.lchop("./").colorize.mode(:bold)} not found. Make sure it's located in the #{"same directory".colorize.mode(:underline)}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# roms presence check
|
||||||
|
if Dir["*.cia"].size.zero? && Dir["*.3ds"].size.zero?
|
||||||
|
log.delete if File.exists? "log.txt"
|
||||||
|
abort "No #{"CIA".colorize.mode(:bold)}/#{"3DS".colorize.mode(:bold)} roms were found."
|
||||||
|
end
|
||||||
|
|
||||||
def check_decrypt(name : String, ext : String)
|
def check_decrypt(name : String, ext : String)
|
||||||
if File.exists? "#{name}-decrypted.#{ext}"
|
if File.exists? "#{name}-decrypted.#{ext}"
|
||||||
puts "Decryption completed\n".colorize.mode(:underline)
|
puts "Decryption completed\n".colorize.mode(:underline)
|
||||||
@ -21,39 +51,17 @@ def gen_args(name : String, part_count : Int32) : String
|
|||||||
return args
|
return args
|
||||||
end
|
end
|
||||||
|
|
||||||
# dependencies check
|
|
||||||
tools = ["python2.7", "./ctrtool", "./makerom", "decrypt.py"]
|
|
||||||
tools.each do |tool|
|
|
||||||
if !File.exists? %x[which #{tool}].chomp
|
|
||||||
case tool
|
|
||||||
when "python2.7"
|
|
||||||
puts "#{"Python 2.7".colorize.mode :bold} not found. Install it before continue"
|
|
||||||
abort "https://www.python.org/download/releases/2.7/"
|
|
||||||
when "decrypt.py"
|
|
||||||
abort "#{tool.colorize.mode :bold} not found. Make sure it's located in the #{"same directory".colorize.mode :underline}" if !File.exists? tool
|
|
||||||
else
|
|
||||||
puts "Some #{"tools".colorize.mode :bold} are missing, do you want to download them? (y/n): "
|
|
||||||
if ["y", "Y"].includes? gets.to_s
|
|
||||||
system "./dltools.sh"
|
|
||||||
else
|
|
||||||
abort "#{tool.lchop("./").colorize.mode :bold} not found. Make sure it's located in the #{"same directory".colorize.mode :underline}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
args : String = ""
|
args : String = ""
|
||||||
|
|
||||||
# 3ds decrypting
|
# 3ds decrypting
|
||||||
Dir["*.3ds"].each do |ds|
|
Dir["*.3ds"].each do |ds|
|
||||||
if ds.includes? "decrypted"
|
next if ds.includes? "decrypted"
|
||||||
next
|
|
||||||
end
|
|
||||||
args = ""
|
args = ""
|
||||||
i : UInt8 = 0
|
i : UInt8 = 0
|
||||||
dsn : String = ds.chomp ".3ds"
|
dsn : String = ds.chomp ".3ds"
|
||||||
|
|
||||||
puts "Decrypting: #{ds.colorize.mode :bold}..."
|
puts "Decrypting: #{ds.colorize.mode(:bold)}..."
|
||||||
log.puts %x[python2.7 decrypt.py '#{ds}']
|
log.puts %x[python2.7 decrypt.py '#{ds}']
|
||||||
|
|
||||||
Dir["#{dsn}.*.ncch"].each do |ncch|
|
Dir["#{dsn}.*.ncch"].each do |ncch|
|
||||||
@ -84,11 +92,9 @@ end
|
|||||||
|
|
||||||
# cia decrypting
|
# cia decrypting
|
||||||
Dir["*.cia"].each do |cia|
|
Dir["*.cia"].each do |cia|
|
||||||
if cia.includes? "decrypted"
|
next if cia.includes? "decrypted"
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "Decrypting: #{cia.colorize.mode :bold}..."
|
puts "Decrypting: #{cia.colorize.mode(:bold)}..."
|
||||||
cutn : String = cia.chomp ".cia"
|
cutn : String = cia.chomp ".cia"
|
||||||
args = ""
|
args = ""
|
||||||
content = %x[./ctrtool '#{cia}']
|
content = %x[./ctrtool '#{cia}']
|
||||||
@ -106,7 +112,7 @@ Dir["*.cia"].each do |cia|
|
|||||||
log.puts %x[./makerom -f cia -ignoresign -target p -o '#{cutn}-decfirst.cia' #{args}]
|
log.puts %x[./makerom -f cia -ignoresign -target p -o '#{cutn}-decfirst.cia' #{args}]
|
||||||
# patch
|
# patch
|
||||||
elsif content.match /T.*d.*0004000E/
|
elsif content.match /T.*d.*0004000E/
|
||||||
puts "CIA Type: #{"Patch".colorize.mode :bold}"
|
puts "CIA Type: #{"Patch".colorize.mode(:bold)}"
|
||||||
log.puts %x[python2.7 decrypt.py '#{cia}']
|
log.puts %x[python2.7 decrypt.py '#{cia}']
|
||||||
|
|
||||||
patch_parts : Int32 = Dir["#{cutn}.*.ncch"].size
|
patch_parts : Int32 = Dir["#{cutn}.*.ncch"].size
|
||||||
@ -116,7 +122,7 @@ Dir["*.cia"].each do |cia|
|
|||||||
check_decrypt("#{cutn} (Patch)", "cia")
|
check_decrypt("#{cutn} (Patch)", "cia")
|
||||||
# dlc
|
# dlc
|
||||||
elsif content.match /T.*d.*0004008C/
|
elsif content.match /T.*d.*0004008C/
|
||||||
puts "CIA Type: #{"DLC".colorize.mode :bold}"
|
puts "CIA Type: #{"DLC".colorize.mode(:bold)}"
|
||||||
log.puts %x[python2.7 decrypt.py '#{cia}']
|
log.puts %x[python2.7 decrypt.py '#{cia}']
|
||||||
|
|
||||||
dlc_parts : Int32 = Dir["#{cutn}.*.ncch"].size
|
dlc_parts : Int32 = Dir["#{cutn}.*.ncch"].size
|
||||||
|
31
dltools.sh
31
dltools.sh
@ -4,29 +4,32 @@ SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
|
|||||||
BOLD=$(tput bold)
|
BOLD=$(tput bold)
|
||||||
NORMAL=$(tput sgr0)
|
NORMAL=$(tput sgr0)
|
||||||
|
|
||||||
|
CTRTOOL_VER=1.1.0
|
||||||
|
MAKEROM_VER=0.18.3
|
||||||
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
echo " * Downloading ${BOLD}ctrtool${NORMAL}"
|
echo " * Downloading ${BOLD}ctrtool${NORMAL}"
|
||||||
wget https://github.com/3DSGuy/Project_CTR/releases/download/ctrtool-v1.1.0/ctrtool-v1.1.0-macos_x86_64.zip -q
|
wget https://github.com/3DSGuy/Project_CTR/releases/download/ctrtool-v$CTRTOOL_VER/ctrtool-v$CTRTOOL_VER-macos_x86_64.zip -q
|
||||||
echo " * Extracting ${BOLD}ctrtool${NORMAL}"
|
echo " * Extracting ${BOLD}ctrtool${NORMAL}"
|
||||||
unzip -qq ctrtool-v1.1.0-macos_x86_64.zip -d ctrtool-v1.1.0-macos_x86_64
|
unzip -qq ctrtool-v$CTRTOOL_VER-macos_x86_64.zip -d ctrtool-v$CTRTOOL_VER-macos_x86_64
|
||||||
mv ctrtool-v1.1.0-macos_x86_64/ctrtool "$SCRIPT_DIR/ctrtool"
|
mv ctrtool-v$CTRTOOL_VER-macos_x86_64/ctrtool "$SCRIPT_DIR/ctrtool"
|
||||||
echo " * Downloading ${BOLD}makerom${NORMAL}"
|
echo " * Downloading ${BOLD}makerom${NORMAL}"
|
||||||
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-macos_x86_64.zip -q
|
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v$MAKEROM_VER/makerom-v$MAKEROM_VER-macos_x86_64.zip -q
|
||||||
echo " * Extracting ${BOLD}makerom${NORMAL}"
|
echo " * Extracting ${BOLD}makerom${NORMAL}"
|
||||||
unzip -qq makerom-v0.18.3-macos_x86_64.zip -d makerom-v0.18.3-macos_x86_64
|
unzip -qq makerom-v$MAKEROM_VER-macos_x86_64.zip -d makerom-v$MAKEROM_VER-macos_x86_64
|
||||||
mv makerom-v0.18.3-macos_x86_64/makerom "$SCRIPT_DIR/makerom"
|
mv makerom-v$MAKEROM_VER-macos_x86_64/makerom "$SCRIPT_DIR/makerom"
|
||||||
|
|
||||||
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||||
echo " * Downloading ${BOLD}ctrtool${NORMAL}"
|
echo " * Downloading ${BOLD}ctrtool${NORMAL}"
|
||||||
wget https://github.com/3DSGuy/Project_CTR/releases/download/ctrtool-v1.1.0/ctrtool-v1.1.0-ubuntu_x86_64.zip -q
|
wget https://github.com/3DSGuy/Project_CTR/releases/download/ctrtool-v$CTRTOOL_VER/ctrtool-v$CTRTOOL_VER-ubuntu_x86_64.zip -q
|
||||||
echo " * Extracting ${BOLD}ctrtool${NORMAL}"
|
echo " * Extracting ${BOLD}ctrtool${NORMAL}"
|
||||||
unzip -qq ctrtool-v1.1.0-ubuntu_x86_64.zip -d ctrtool-v1.1.0-ubuntu_x86_64
|
unzip -qq ctrtool-v$CTRTOOL_VER-ubuntu_x86_64.zip -d ctrtool-v$CTRTOOL_VER-ubuntu_x86_64
|
||||||
mv ctrtool-v1.1.0-ubuntu_x86_64/ctrtool "$SCRIPT_DIR/ctrtool"
|
mv ctrtool-v$CTRTOOL_VER-ubuntu_x86_64/ctrtool "$SCRIPT_DIR/ctrtool"
|
||||||
echo " * Downloading ${BOLD}makerom${NORMAL}"
|
echo " * Downloading ${BOLD}makerom${NORMAL}"
|
||||||
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-ubuntu_x86_64.zip -q
|
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v$MAKEROM_VER/makerom-v$MAKEROM_VER-ubuntu_x86_64.zip -q
|
||||||
echo " * Extracting ${BOLD}makerom${NORMAL}"
|
echo " * Extracting ${BOLD}makerom${NORMAL}"
|
||||||
unzip -qq makerom-v0.18.3-ubuntu_x86_64.zip -d makerom-v0.18.3-ubuntu_x86_64
|
unzip -qq makerom-v$MAKEROM_VER-ubuntu_x86_64.zip -d makerom-v$MAKEROM_VER-ubuntu_x86_64
|
||||||
mv makerom-v0.18.3-ubuntu_x86_64/makerom "$SCRIPT_DIR/makerom"
|
mv makerom-v$MAKEROM_VER-ubuntu_x86_64/makerom "$SCRIPT_DIR/makerom"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -f "decrypt.py" ]]; then
|
if [[ ! -f "decrypt.py" ]]; then
|
||||||
@ -35,8 +38,8 @@ if [[ ! -f "decrypt.py" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo " * Cleaning up"
|
echo " * Cleaning up"
|
||||||
rm -rf ctrtool-v1.1.0-*
|
rm -rf ctrtool-v$CTRTOOL_VER-*
|
||||||
rm -rf makerom-v0.18.3-*
|
rm -rf makerom-v$MAKEROM_VER-*
|
||||||
|
|
||||||
chmod +x ctrtool makerom
|
chmod +x ctrtool makerom
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user