diff --git a/descarga-fichero.py b/descarga-fichero.py
deleted file mode 100644
index 4bd2137..0000000
--- a/descarga-fichero.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python
-import httpx
-from selectolax.parser import HTMLParser
-
-client = httpx.Client()
-url = "https://soportefirmadigital.com/sfdj/dl.aspx"
-file = "ClientesLinux_DEB64_Rev25.zip"
-desc = "Usuarios Linux (DEB 64bits)"
-code = 1234
-
-def main():
- # GET request, parse response
- html = HTMLParser(client.get(url).text)
-
- # Store ASPX values
- viewstategenerator = html.css_first("input#__VIEWSTATEGENERATOR").attributes['value']
- eventvalidation = html.css_first("input#__EVENTVALIDATION").attributes['value']
- viewstate = html.css_first("input#__VIEWSTATE").attributes['value']
-
- # Fill form
- formdata = {
- "__EVENTTARGET": "ctl00$certContents$LinkButton3",
- "__EVENTARGUMENT": "",
- "__LASTFOCUS": "",
- "__VIEWSTATE": viewstate,
- "__VIEWSTATEGENERATOR": viewstategenerator,
- "__EVENTVALIDATION": eventvalidation,
- "ctl00$certContents$hiddenISO": file,
- "ctl00$certContents$hidden_ISO_URL": "-",
- "ctl00$certContents$ddlInstaladores": desc,
- "ctl00$certContents$txtDescripcion": "",
- "ctl00$certContents$txtSerialNumber": code,
- "ctl00$certContents$hiddenABID": "",
- "ctl00$certContents$chkConfirmo": "on",
- }
-
- # Send form
- response = client.post(url, data=formdata)
- print(response.text)
-
- # Respuesta esperada (suponiendo que se ingresa un número inválido):
- # Su tarjeta tiene un número inválido, o bien, no está registrada para soporte. En caso de duda contacte a su Institución Emisora.
-
- # Respuesta obtenida (como si nunca se hubiera enviado el número serial):
- # Debe digitar el número de serie de su tarjeta
-
-main()
diff --git a/descarga-fichero.sh b/descarga-fichero.sh
deleted file mode 100644
index 0ece094..0000000
--- a/descarga-fichero.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-TEMP_DIR="/tmp/firma-digital"
-
-SERIAL=1234
-#DESC="Usuarios+Linux+(DEB+64bits)"
-DESC="Usuarios+Linux+%28DEB+64bits%29"
-FILE="ClientesLinux_DEB64_Rev25.zip"
-#TXTD="Distribuciones+basadas+en+DEB+x64.Versiones+Homologadas-Ubuntu+18.04+LTS+o+superior(solo+versiones+LTS)-Debian+10Soporte+únicamente+en+máquinas+Físicas.MD5:3a8c11d0273daee7bfc63a17615a8dc9"
-TXTD="Distribuciones+basadas+en+DEB+x64.%0D%0AVersiones+Homologadas%0D%0A-Ubuntu+18.04+LTS+o+superior%28solo+versiones+LTS%29%0D%0A-Debian+10%0D%0A%0D%0ASoporte+%C3%BAnicamente+en+m%C3%A1quinas+F%C3%ADsicas.%0D%0AMD5%3A3a8c11d0273daee7bfc63a17615a8dc9"
-
-urlencode() {
- ENCODEDURL="$(tr -d '\n' | curl -Gs -w %{url_effective} --data-urlencode @- ./ ||: | sed "s/%0[aA]$//;s/^[^?]*?\(.*\)/\1/")"
- printf '%s' "$ENCODEDURL" | sed 's/^http.*?//g'
-}
-
-rm -rf "$TEMP_DIR" ; mkdir -p "$TEMP_DIR"
-curl -s --compressed 'https://soportefirmadigital.com/sfdj/dl.aspx' \
- -c "$TEMP_DIR/cookies.txt" \
- -o "$TEMP_DIR/descarga.html" || return 1
-
-i=0
-ASP_VARS="$(for VAR in __VIEWSTATE __VIEWSTATEGENERATOR __EVENTVALIDATION ; do
- VAL="$(grep -o "id=\"$VAR\"\svalue=\".*\"" "$TEMP_DIR/descarga.html" | cut -d '"' -f 4 | urlencode)"
- [ "$i" != 0 ] && printf '&'
- printf '%s=%s' "$VAR" "$VAL"
- i=+1
-done)"
-
-curl 'https://soportefirmadigital.com/sfdj/dl.aspx' \
- --data-raw "__EVENTTARGET=ctl00%24certContents%24LinkButton3&__EVENTARGUMENT=&__LASTFOCUS=&$ASP_VARS&ctl00%24certContents%24hiddenISO=$FILE&ctl00%24certContents%24hidden_ISO_URL=-&ctl00%24certContents%24ddlInstaladores=$DESC&ctl00%24certContents%24txtDescripcion=$TXTD&ctl00%24certContents%24txtSerialNumber=$SERIAL&ctl00%24certContents%24hiddenABID=&ctl00%24certContents%24chkConfirmo=on" \
- -b "$TEMP_DIR/cookies.txt"
diff --git a/test.sh b/test.sh
new file mode 100644
index 0000000..ab18e6c
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+alias curl="curl \
+ -H 'Pragma: no-cache' \
+ -H 'Connection: keep-alive' \
+ -H 'Cache-Control: no-cache' \
+ -H 'Upgrade-Insecure-Requests: 1' \
+ -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/128.0' \
+ -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \
+ -H 'Accept-Encoding: gzip, deflate, br' \
+ -H 'Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3' \
+ -H 'Referer: https://www.soportefirmadigital.com/sfdj/dl.aspx?lang=en' \
+ -H 'Content-Type: application/x-www-form-urlencoded' \
+ -H 'Sec-Fetch-Dest: document' \
+ -H 'Sec-Fetch-Mode: navigate' \
+ -H 'Sec-Fetch-Site: same-origin' \
+ -H 'Sec-Fetch-User: ?1' \
+"
+
+urlencode() {
+ ENCODEDURL="$(tr -d '\n' | curl -Gs -w %{url_effective} --data-urlencode @- ./ ||: | sed "s/%0[aA]$//;s/^[^?]*?\(.*\)/\1/")"
+ printf '%s' "$ENCODEDURL" | sed 's/^http.*?//g'
+}
+
+get_asp_var() {
+ VARS="$@" ; i=0
+ for VAR in $VARS ; do
+ VAL="$(printf '%s' "$REQUEST" | grep -o "id=\"$VAR\"\svalue=\".*\"" | cut -d '"' -f 4 | urlencode)"
+ [ "$i" != 0 ] && printf '&'
+ printf '%s=%s' "$VAR" "$VAL"
+ i=+1
+ done
+}
+
+download_iso() {
+ SN="1234"
+ URL="https://soportefirmadigital.com/sfdj/dl.aspx"
+ hiddenISO="ClientesLinux_DEB64_Rev25.zip"
+ ddlInstaladores="Usuarios+Linux+%28DEB+64bits%29"
+ txtDescripcion="Distribuciones+basadas+en+DEB+x64.%0D%0AVersiones+Homologadas%0D%0A-Ubuntu+18.04+LTS+o+superior%28solo+versiones+LTS%29%0D%0A-Debian+10%0D%0A%0D%0ASoporte+%C3%BAnicamente+en+m%C3%A1quinas+F%C3%ADsicas.%0D%0AMD5%3A3a8c11d0273daee7bfc63a17615a8dc9"
+
+ REQUEST="$(curl -s --compressed "$URL" -o -)"
+
+ ASP_VARS="$(get_asp_var __VIEWSTATE __VIEWSTATEGENERATOR __EVENTVALIDATION)"
+ REQUEST="$(curl -Ls --compressed "$URL" \
+ --data-raw "__EVENTTARGET=ctl00%24certContents%24ddlInstaladores" \
+ --data-raw "__EVENTARGUMENT=" \
+ --data-raw "__LASTFOCUS=" \
+ --data-raw "$ASP_VARS" \
+ --data-raw "ctl00%24certContents%24hiddenISO=Windows_rev62.exe" \
+ --data-raw "ctl00%24certContents%24hidden_ISO_URL=-" \
+ --data-raw "ctl00%24certContents%24txtSerialNumber=" \
+ --data-raw "ctl00%24certContents%24ddlInstaladores=$ddlInstaladores" \
+ --data-raw "ctl00%24certContents%24txtDescripcion=$txtDescripcion" \
+ --data-raw "ctl00%24certContents%24chkConfirmo=" \
+ --data-raw "ctl00%24certContents%24hiddenABID=" \
+ -o -)"
+
+ ASP_VARS="$(get_asp_var __VIEWSTATE __VIEWSTATEGENERATOR __EVENTVALIDATION)"
+ REQUEST="$(curl -H "Set-Cookie: SN=$SN" -s --compressed "$URL" \
+ --cookie "SN=$SN" \
+ --data-raw "__EVENTTARGET=ctl00%24certContents%24LinkButton3" \
+ --data-raw "__EVENTARGUMENT=" \
+ --data-raw "__LASTFOCUS=" \
+ --data-raw "$ASP_VARS" \
+ --data-raw "ctl00%24certContents%24hiddenISO=$hiddenISO" \
+ --data-raw "ctl00%24certContents%24hidden_ISO_URL=-" \
+ --data-raw "ctl00%24certContents%24txtSerialNumber=$SN" \
+ --data-raw "ctl00%24certContents%24ddlInstaladores=$ddlInstaladores" \
+ --data-raw "ctl00%24certContents%24txtDescripcion=$txtDescripcion" \
+ --data-raw "ctl00%24certContents%24chkConfirmo=on" \
+ --data-raw "ctl00%24certContents%24hiddenABID=" \
+ -o -)"
+
+ printf '%s' "$REQUEST"
+}
+
+download_iso
diff --git a/works.sh b/works.sh
new file mode 100644
index 0000000..ab18e6c
--- /dev/null
+++ b/works.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+alias curl="curl \
+ -H 'Pragma: no-cache' \
+ -H 'Connection: keep-alive' \
+ -H 'Cache-Control: no-cache' \
+ -H 'Upgrade-Insecure-Requests: 1' \
+ -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/128.0' \
+ -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \
+ -H 'Accept-Encoding: gzip, deflate, br' \
+ -H 'Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3' \
+ -H 'Referer: https://www.soportefirmadigital.com/sfdj/dl.aspx?lang=en' \
+ -H 'Content-Type: application/x-www-form-urlencoded' \
+ -H 'Sec-Fetch-Dest: document' \
+ -H 'Sec-Fetch-Mode: navigate' \
+ -H 'Sec-Fetch-Site: same-origin' \
+ -H 'Sec-Fetch-User: ?1' \
+"
+
+urlencode() {
+ ENCODEDURL="$(tr -d '\n' | curl -Gs -w %{url_effective} --data-urlencode @- ./ ||: | sed "s/%0[aA]$//;s/^[^?]*?\(.*\)/\1/")"
+ printf '%s' "$ENCODEDURL" | sed 's/^http.*?//g'
+}
+
+get_asp_var() {
+ VARS="$@" ; i=0
+ for VAR in $VARS ; do
+ VAL="$(printf '%s' "$REQUEST" | grep -o "id=\"$VAR\"\svalue=\".*\"" | cut -d '"' -f 4 | urlencode)"
+ [ "$i" != 0 ] && printf '&'
+ printf '%s=%s' "$VAR" "$VAL"
+ i=+1
+ done
+}
+
+download_iso() {
+ SN="1234"
+ URL="https://soportefirmadigital.com/sfdj/dl.aspx"
+ hiddenISO="ClientesLinux_DEB64_Rev25.zip"
+ ddlInstaladores="Usuarios+Linux+%28DEB+64bits%29"
+ txtDescripcion="Distribuciones+basadas+en+DEB+x64.%0D%0AVersiones+Homologadas%0D%0A-Ubuntu+18.04+LTS+o+superior%28solo+versiones+LTS%29%0D%0A-Debian+10%0D%0A%0D%0ASoporte+%C3%BAnicamente+en+m%C3%A1quinas+F%C3%ADsicas.%0D%0AMD5%3A3a8c11d0273daee7bfc63a17615a8dc9"
+
+ REQUEST="$(curl -s --compressed "$URL" -o -)"
+
+ ASP_VARS="$(get_asp_var __VIEWSTATE __VIEWSTATEGENERATOR __EVENTVALIDATION)"
+ REQUEST="$(curl -Ls --compressed "$URL" \
+ --data-raw "__EVENTTARGET=ctl00%24certContents%24ddlInstaladores" \
+ --data-raw "__EVENTARGUMENT=" \
+ --data-raw "__LASTFOCUS=" \
+ --data-raw "$ASP_VARS" \
+ --data-raw "ctl00%24certContents%24hiddenISO=Windows_rev62.exe" \
+ --data-raw "ctl00%24certContents%24hidden_ISO_URL=-" \
+ --data-raw "ctl00%24certContents%24txtSerialNumber=" \
+ --data-raw "ctl00%24certContents%24ddlInstaladores=$ddlInstaladores" \
+ --data-raw "ctl00%24certContents%24txtDescripcion=$txtDescripcion" \
+ --data-raw "ctl00%24certContents%24chkConfirmo=" \
+ --data-raw "ctl00%24certContents%24hiddenABID=" \
+ -o -)"
+
+ ASP_VARS="$(get_asp_var __VIEWSTATE __VIEWSTATEGENERATOR __EVENTVALIDATION)"
+ REQUEST="$(curl -H "Set-Cookie: SN=$SN" -s --compressed "$URL" \
+ --cookie "SN=$SN" \
+ --data-raw "__EVENTTARGET=ctl00%24certContents%24LinkButton3" \
+ --data-raw "__EVENTARGUMENT=" \
+ --data-raw "__LASTFOCUS=" \
+ --data-raw "$ASP_VARS" \
+ --data-raw "ctl00%24certContents%24hiddenISO=$hiddenISO" \
+ --data-raw "ctl00%24certContents%24hidden_ISO_URL=-" \
+ --data-raw "ctl00%24certContents%24txtSerialNumber=$SN" \
+ --data-raw "ctl00%24certContents%24ddlInstaladores=$ddlInstaladores" \
+ --data-raw "ctl00%24certContents%24txtDescripcion=$txtDescripcion" \
+ --data-raw "ctl00%24certContents%24chkConfirmo=on" \
+ --data-raw "ctl00%24certContents%24hiddenABID=" \
+ -o -)"
+
+ printf '%s' "$REQUEST"
+}
+
+download_iso