Skip to content

Instantly share code, notes, and snippets.

@kaechele
Last active November 1, 2023 14:58
Show Gist options
  • Save kaechele/3956c09c2b0f112d48e65b9690a9f87f to your computer and use it in GitHub Desktop.
Save kaechele/3956c09c2b0f112d48e65b9690a9f87f to your computer and use it in GitHub Desktop.
Mac Launcher for Cisco ASDM
#!/bin/zsh
# Cisco ASDM Launcher for Mac
# 2023-01-09 Felix Kaechele <felix@kaechele.ca>
# Note: This method of running ASDM on Mac is not supported by Cisco
local asdm_path=~/.asdm
# ASDM will only work with Java 8 (aka 1.8.0)
local java_version=1.8.0
local java_home=`/usr/libexec/java_home -v $java_version -F`
local arg_asa_url flag_help flag_download
local usage=(
"Usage:"
""
"${0} [-h|--help]"
"${0} [-d|--download=<ASA URL>]"
)
zmodload zsh/zutil
zparseopts -D -F -K -- \
{h,-help}=flag_help \
{d,-download}:=arg_asa_url ||
return 1
[[ -z "$flag_help" ]] || { print -l $usage && return }
[[ ! -z "$java_home" ]] || { print "Java 8 not found. Install using brew install temurin8" && return 1 }
[[ -d "$asdm_path" ]] || { print "ASDM path does not exist at ${asdm_path}. Creating it." && mkdir "${asdm_path}" || return 1 }
# Download launcher and supporting JAR files
local asdm_files=(dm-launcher.jar jploader.jar lzma.jar retroweaver-rt-2.0.jar)
# Check if required files are installed
for file in $asdm_files; do
if [ ! -f "${asdm_path}/${file}" ]; then
flag_download=1
fi
done
# Download files from the ASA if required or requested
if [[ ! -z $flag_download || ! -z $arg_asa_url ]]; then
[[ ! -z $arg_asa_url[-1] ]] || { print "Need to update files but ASA URL parameter not provided." && print -l $usage && return 1 }
for file in $asdm_files; do
curl -SLsk "${arg_asa_url[-1]}/admin/public/${file}" -o "${asdm_path}/${file}"
if [[ $? -gt 0 ]]; then
print "Failed to download ASDM resources. Exiting."
return 1
fi
done
fi
# Install Cisco Code Signing Cert
# This file is distributed as cert.PEM in the ASDM installers
cat <<EOF > cert.PEM
-----BEGIN CERTIFICATE-----
MIIHtDCCBhygAwIBAgIQQAGA4wVc5Inhihrxchb2WzANBgkqhkiG9w0BAQsFADBI
MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSUwIwYDVQQDExxUcnVz
dElEIEVWIENvZGUgU2lnbmluZyBDQSAzMB4XDTIyMDUyMDE5NTAyMVoXDTI0MDUx
OTE5NTAyMFowgfAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMREw
DwYDVQQHEwhTYW4gSm9zZTERMA8GA1UEBRMIQzQ2ODI0NzgxEzARBgsrBgEEAYI3
PAIBAxMCVVMxGzAZBgsrBgEEAYI3PAIBAhMKQ2FsaWZvcm5pYTEdMBsGA1UEDxMU
UHJpdmF0ZSBPcmdhbml6YXRpb24xGzAZBgNVBAoTEkNpc2NvIFN5c3RlbXMgSW5j
LjEbMBkGA1UECxMSQ2lzY28gU3lzdGVtcyBJbmMuMRswGQYDVQQDExJDaXNjbyBT
eXN0ZW1zIEluYy4wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1z7J6
FZCgl+i6jYEC6PzLK+FjpkcxsFNo+JTYc/XfamQ6Eryy3BLI0tXSlkJSRxfeGQj6
CT1tLLwBhd8ISSfGjofxdxd41x9dPyiV53r6b9jhbZeLBR2L+/PZ+Sxh9jzAyikr
Eo0NmbngjUkqV2mMdEgCFXL5cBjUfgQJLEzPAneetZ1ku89YwmHS2YqA4eV3T6Sj
utpYxSiKRGGOqxY3C+8FGGsVEbvicxt4elXhgRUxM0MG6ZFCXSX1NsF+4gj92L5v
wd4n7d+nw6KOf80CfBC/gc82E5qSpnwmic5sc9ax+29TsRyhqMkp3vkAvOg4W8G9
xZ33RmFIz2UoozKlK7ix6svSkw3wT6ivgF8gVPeLYaeQCsQ4ISSU1UCT63VmroyP
HU4Yc8V8682iyG2vDrDzq6O2M7oy2oqCGXRWu6Ly7RrwC4atKkjG9PTBEOx2tKBo
M7J94zfScNjcaASpJkkSTlEHoHm3mqsfJROxOsoD7z2To3Z1ejpB4LHcKEYjjD+A
GUfJ70SBE8rpkTOp+d+4XrkVROaTMtOKLSYE0doZknZ7rmq8el3rp8zfdo9jbi7c
s89Uqu7hSK7KJKIp1CC0Uj3W+1turMvyte2uNlY0BlqUAEnG9NOnYGODeWcDHy8r
DLR7+va0rRreWiV5NmqsQHotdkEbEMMhai3GdQIDAQABo4ICbzCCAmswDgYDVR0P
AQH/BAQDAgeAMIGOBggrBgEFBQcBAQSBgTB/MDAGCCsGAQUFBzABhiRodHRwOi8v
Y29tbWVyY2lhbC5vY3NwLmlkZW50cnVzdC5jb20wSwYIKwYBBQUHMAKGP2h0dHA6
Ly92YWxpZGF0aW9uLmlkZW50cnVzdC5jb20vY2VydHMvdHJ1c3RpZGV2Y29kZXNp
Z25pbmczLnA3YzAfBgNVHSMEGDAWgBQhAsPJhfKH8FCm58usSo+aBUwRqjAJBgNV
HRMEAjAAMIIBFgYDVR0gBIIBDTCCAQkwBwYFZ4EMAQMwgf0GC2CGSAGG+S8ABg4B
MIHtMEAGCCsGAQUFBwIBFjRodHRwczovL3NlY3VyZS5pZGVudHJ1c3QuY29tL2Nl
cnRpZmljYXRlcy9wb2xpY3kvdHMvMIGoBggrBgEFBQcCAjCBmwyBmFRoaXMgY2Vy
dGlmaWNhdGUgaGFzIGJlZW4gaXNzdWVkIGluIGFjY29yZGFuY2Ugd2l0aCBJZGVu
VHJ1c3QncyBUcnVzdElEIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRw
czovL3NlY3VyZS5pZGVudHJ1c3QuY29tL2NlcnRpZmljYXRlcy9wb2xpY3kvdHMv
ME4GA1UdHwRHMEUwQ6BBoD+GPWh0dHA6Ly92YWxpZGF0aW9uLmlkZW50cnVzdC5j
b20vY3JsL3RydXN0aWRldmNvZGVzaWduaW5nMy5jcmwwHQYDVR0OBBYEFPSi6Jae
omAHYUOruV/dL6Kl8eXLMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA0GCSqGSIb3DQEB
CwUAA4IBgQDgrhklgek9qX6FYfyTN7e91N1jP6pwLV/EnJ4QKMmaFRay6XWoPhGl
CWT+5AgEvw8w13koaHl7aqRwBq2XHe62EqJXnkKTNmA/RpNAg50C6nRFB6CwcNV6
frc+ESfCOT4W5o1b/YYmKjH4cS3O0wtcmUqJlSomXzo8bsfBQXiuW5tIWYTAU6+v
LpN1mNmj0gAIy8ow9QYLQRu6+V++ChcG7CF76zUN4Gyc9H9v4rI+9d1EOA/N8MnK
GyP+rG6A7mSubPRuVMICAyg9+Myxg79G5gi8TLjpq7FmOBQD4MCP4O1Lii5tcbdX
pIgLhc8RnfDop1D6I/BTqnn6G8qABTOX1yjth7B+nHDhbKc2yAt2uawSOm1ndyml
uLobL/TGz/RbvTPtj0o/R3N0sVaRY8PL3ZzdnZBRsODoNn2lcU/XnSzxmYT/HGSL
6rfZwGDWFilXnOVnefltnYpQjA6vWjf56rxtaxS8VSrQwFab+aQKybsm0RvDZURo
8J+w4ZOn0qw=
-----END CERTIFICATE-----
EOF
"${java_home}/bin/java" -classpath "${asdm_path}/dm-launcher.jar:${asdm_path}/jploader.jar:${asdm_path}/lzma.jar:${asdm_path}/retroweaver-rt-2.0.jar" com.cisco.launcher.Launcher "${asdm_path}/cert.PEM"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment