jueves, 25 de octubre de 2018

cURL . . . MS Windows 10 . . .

cURL . . . MS Windows 10 . . .
.
La versión incluida de cURL en Windows 10 esta ubicada en ..::
C:\Windows\System32\ curl.exe
Para aquellos familiarizados con cURL, usarlo en Windows será exactamente igual. Simplemente hay que abrir el símbolo del sistema y escribir curl -h para ver una lista de argumentos de línea de comando.
Microsoft señala que PowerShell ya ofrecía parte de la funcionalidad, pero que la nueva adición también se integra en cmd.
.
No es del agrado de muchos su facil hubicacion . . al igual que se detesta PowerShell por tener tantas capacidades de adentro a afuera del sistema . . lo consideran un riesgo de seguridad . . . su facil localizacion para scripts ocultos en descargas . . lo mas sano seria bloquearlos en el FireWall. . o ponerlos detras de otra barrera . . e utilizarlos desde otra carpeta. .
.
Para los ociosos que lo quieran lanzar desde otra hubicacion; como yo ..::
https://opensourcepack.blogspot.mx/p/wget-and-curl.html
---------------
Wget and cURL are two complementary internet utility. The first is known for site-mirroring/crawler and the second for downloading and uploading from various protocols. While you can expect standard feature like downloading file over http, sometime Wget able to resume download which not possible with cURL vice-versa due to different implementation of low-level functions.
.
Para controlar a la bestia . . XD
Batch para realizar las tareas en lineas punteadas ..::
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@echo off
color 0a
:begin
ECHO .
ECHO -------------------------------------------------------------------------
ECHO     . . .  . . . . . . . . curl . . . . . . . . . . . . .
ECHO soporta protocolos FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS,
ECHO TELNET, FTP, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB,
ECHO SMBS, SMTP, SMTPS, and TFTP.
ECHO -------------------------------------------------------------------------
ECHO  1.-- Descarga archivo
ECHO 11.-- Continuar Descarga de un archivo previo
ECHO  2.-- Scan VirusTotal ip-url
ECHO 21.-- Analizar Archivo VT Previo a su Descarga
ECHO -------------------------------------------------------------------------
ECHO .
set /p op="Enter your choice: "
if "%op%"=="1" goto op1
if "%op%"=="11" goto op11
if "%op%"=="2" goto op2
if "%op%"=="21" goto op21

:: --proxy [PROTOCOL://]HOST[:PORT]
:: curl [options...] <url>

:op1
ECHO .
ECHO -------------------------------------------------------------------------
ECHO  1.-- Descarga archivo
set /p url="Input URL: "
ECHO -------------------------------------------------------------------------
curl --proxy http://127.0.0.1:8118 --http1.1 --url "%url%" --remote-name --output ".\"
ECHO -------------------------------------------------------------------------
goto begin
::
:op11
ECHO .
ECHO -------------------------------------------------------------------------
ECHO 11.-- Continuar Descarga de un archivo previo
set /p url="Input URL: "
ECHO -------------------------------------------------------------------------
curl --proxy http://127.0.0.1:8118 --http1.1 --url "%url%" --remote-name -C - --output ".\"
ECHO -------------------------------------------------------------------------
:: "-C -" automáticamente reanudara la transferencia.
goto begin
::
:op2
ECHO .
ECHO -------------------------------------------------------------------------
ECHO 2.-- Scan VirusTotal ip-url
set /p url="Input IP-URL: "
set "url2=https://www.virustotal.com/es/url/submission/?force=1&url=%url%"
ECHO .  -- Espere Resultados --
curl --proxy http://127.0.0.1:8118 --http1.1 --silent --url "%url2%" > null
timeout 8 > NUL
curl --proxy http://127.0.0.1:8118 --http1.1 --silent --url "%url2%" > "VT.tmp"
findstr /r /c:"detection-ratio..[0-9]" /c:"href../es/url/.*/analysis." "VT.tmp"
ECHO .. https://www.virustotal.com/es/url/ ... /analysis/
ECHO .  -- Hecho --
del "VT.tmp"
pause
:: --silent no mostrar avance de descarga ni errores
ECHO -------------------------------------------------------------------------
goto begin
::
:op21
ECHO .
ECHO -------------------------------------------------------------------------
ECHO 21.-- Analizar Archivo VT Previo a su Descarga
set /p url="Input IP-URL: "
set "url2=https://www.virustotal.com/es/url/submission/?force=1&url=%url%"
ECHO .  -- Espere Resultados --
curl --proxy http://127.0.0.1:8118 --http1.1 --silent --url "%url2%" > null
timeout 8 > NUL
curl --proxy http://127.0.0.1:8118 --http1.1 --silent --url "%url2%" > "VT.tmp"
findstr /r /c:"detection-ratio..[0-9]" /c:"href../es/url/.*/analysis." "VT.tmp"
ECHO .. https://www.virustotal.com/es/url/ ... /analysis/
del "VT.tmp"
ECHO .  -- Hecho --
ECHO .  .
set /p opcion=" Desea continuar con la descaga Si [1] / No [2] ..::: "
if "%opcion%"=="1" goto opcion1
if "%opcion%"=="2" goto begin
::
:opcion1
ECHO    -- Descargando archivo espere
ECHO -------------------------------------------------------------------------
curl --proxy http://127.0.0.1:8118 --http1.1 --url "%url%" --remote-name --output ".\"
ECHO -------------------------------------------------------------------------
goto begin
::
::
::
:exit
@exit
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
El batch es solo un txt con extension cambiado a bat; guardado en la misma carpeta del programa
.
El Batch utiliza Privoxy ya que es mi unica puerta de entrada-salida en mi sistema y desde donde conecta a Proxys-Serves si asi lo deseo; si desea utilizar el Proxys-Serves directo a cURL solo hay que hacer las sustitucion en la seccion  " -proxy http://127.0.0.1:8118 "
Mas ayuda; en cmd ..:: " curl --help "
.
Las opciones son basicas (mas de ejemplo)
- Para descargas directas
- Analizar IP-Urls en VirusTotal
- Analizar el archivo en VT antes de descargar y segir con la descarga si asi se desea .
.

Excelente para descargar archivos grandes como peliculas . . ya que si el tiempo de descarga es superado puedes continuarla desde donde has quedado . . claro debes re-obtener el link de descarga ya que los archivos son movidos generalmente . . sobre todo ilegales . . XD
.

lunes, 8 de octubre de 2018

netstat . . analisis ..:: VT + MyIP + Path PID

netstat . . analisis ..:: VT + MyIP + Path PID

netstat parte del sistema MSW ejecutable en Simbolo del Sistema y Windows-PowerShell . . .
Analizando las conecciones establecidas enviando las IPs a VirusTotal (deteccion de malware), MyIP (localizacion Corp) y Ruta del proceso PID (mucho malware se ejecuta con nombres del sistema pero de una distinta hubicacion; por eso es importante)

Aprovechando el nativo netstat.exe . . . mucha informacion util en CMD pero manejarla y andarla analizando es un fastidio. . . como el conocer la hubicacion del proceso y con quien conecta que puede ser peligroso . . .



Asi llego con el siguiente metodo loco de analizar . . en PowerShell
Entre las lineas punteadas inferior lo propuesto ..::
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
#----------------------------------------------------------------------
# netstat analisis ..:: VT + MyIP + Path PID
#----------------------------------------------------------------------
# numero de logs a tomar, lapso en segundos entre logs tomados
$logs = for ($i=1; $i -le 5; $i++) 
{
(netstat.exe -ano)
Start-Sleep -Seconds 5
}
# descartar direcciones remotas 0.0.0.0:0 , 127.0.0.1:\d+  y unificarlas
$logz = $logs | select-string "Established" | Where-Object {$_ -notmatch '^[ ]+[A-Z][A-Z][A-Z][ ]+127\.0\.0\.1\:\d+'} | Sort-Object -Unique
#
# dejando solo "Direcciones remotas" para VT
$IPR = $logz | Foreach-Object {$_ -Replace('^[ ]+[A-Z][A-Z][A-Z][ ]+\d+.\d+.\d+.\d+\:\d+[ ]+', '')} | Foreach-Object {$_ -Replace(':\d+[ ]+ESTABLISHED     \d+$', '')} |Foreach-Object {$_ -Replace(' +$', '')} | Sort-Object -Unique
#
# analizando VT+MyIP+PID
$results = Foreach($Urll in $IPR)
{
@(" - - - - - - - - - - - - - - - - - - - - - ")
$MIPList = $Urll | foreach {"https://myip.es/" + $_ }  
$webb = Invoke-WebRequest -Uri $MIPList
Start-Sleep -Seconds 0.5
$webb.tostring() -split "[`r`n]" | select-string "^\<..\>\<..\>Direcci..n IP:" , "^\<..\>\<..\>Registro PTR:" , "^\<..\>\<..\>Organizaci..n:" , "^\<..\>\<..\>ISP:" , "^\<..\>\<..\>Ciudad:" , "^\<..\>\<..\>Pa..s:" , "^\<..\>\<..\>Estado:" | Foreach-Object {$_ -Replace('^\<..\>\<..\>','')} | Foreach-Object {$_ -Replace('<...><...>$','')} | Foreach-Object {$_ -Replace('<...><..>','  ')} | Foreach-Object {$_ -Replace('Direcci..n IP:','Direccion IP:')} | Foreach-Object {$_ -Replace('Organizaci..n:','Organizacion:')} |  Foreach-Object {$_ -Replace('Pa..s:','Pais:')}
#
$VTList = $Urll | foreach {"https://www.virustotal.com/es/url/submission/?force=1&url=" + $_ } 
$web = Invoke-WebRequest -Uri $VTList
Start-Sleep -Seconds 0.5
$web.tostring() -split "[`r`n]" | select-string "detection-ratio..\d+"| Foreach-Object {$_ -Replace('^ ','')} | Foreach-Object {$_ -Replace('<strong.*id=','VirusTotal  ')} | Foreach-Object {$_ -Replace('.span...strong>$','')}
#
# para cada direccion remota . . . obtener informacion + ruta de cada proceso PID
$IDs = $logz | Select-String -Pattern $Urll | Foreach-Object {$_ -Replace('^.+ESTABLISHED', '')} | Sort-Object -Unique
# obteniendo ruta de proceso
Foreach($ID in $IDs)
{
Get-Process -Id $ID | Select-Object -ExpandProperty Path
}
# netstat
Foreach($ID in $IDs)
{
@(" . . . . . . . netstat  . . . . . . . ", "  Proto  Dirección local          Dirección remota        Estado           PID ")
$logz | Select-String -Pattern $ID | Select-String -Pattern $Urll
}
@(" - - - - - - - - - - - - - - - - - - - - - ")
$results
#
# Borrar temporales .tmp; Remove-Item "result*.tmp"
# Limpíar variables
Clear-variable -Name "IPR", "logs", "logz", "URLList", "results", "Urll", "MIPList", "VTList", "web", "webb", "IDs", "ID" -ErrorAction SilentlyContinue
#. . . . .
#----------------------------------------------------------------------

Abajo. Ejemplo de los resultados obtenidos ..::
Notese como procesos del sistema no son localizables; ya se sabia de eso sin embargo se identifican facil por su Organizacion mencionando generalmente Microsoft.
Notese proceso "Agr-privoxy.exe" que es solo privoxy (yo le añadi agr al nombre) en mi caso es la puerta para varios programas por lo que es normal que aparezca varias veces.

-------------------------------------------------------------------------
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  104.28.29.47
Registro PTR:
Organizacion:  Cloudflare
ISP:  Cloudflare
Ciudad:
Pais:  United States
Estado:
    VirusTotal  "detection-ratio">0/68<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID

  TCP    272.168.0.109:12419    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12439    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12445    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12446    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12447    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12452    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12454    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12458    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12459    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12460    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12461    104.28.29.47:80        ESTABLISHED     5388
  TCP    272.168.0.109:12462    104.28.29.47:80        ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  172.217.12.42
Registro PTR:  dfw28s04-in-f10.1e100.net
Organizacion:  Google
ISP:  Google
Ciudad:
Pais:  United States
Estado:
    VirusTotal  "detection-ratio">0/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12412    172.217.12.42:443      ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  172.217.12.46
Registro PTR:  dfw28s04-in-f14.1e100.net
Organizacion:  Google
ISP:  Google
Ciudad:
Pais:  United States
Estado:
    VirusTotal  "detection-ratio">0/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12415    172.217.12.46:443      ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  184.29.148.31
Registro PTR:  a184-29-148-31.deploy.static.akamaitechnologies.com
Organizacion:  Akamai Technologies
ISP:  Akamai Technologies
Ciudad:
Pais:  United States
Estado:
    VirusTotal  "detection-ratio">0/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12364    184.29.148.31:443      ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  192.0.77.32
Registro PTR:  wordpress.com
Organizacion:  Automattic
ISP:  Automattic
Ciudad:
Pais:  United States
Estado:
    VirusTotal  "detection-ratio">1/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12411    192.0.77.32:443        ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  216.58.194.46
Registro PTR:  dfw25s12-in-f46.1e100.net
Organizacion:  Google
ISP:  Google
Ciudad:  Mountain View
Pais:  United States
Estado:  California
    VirusTotal  "detection-ratio">0/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12365    216.58.194.46:443      ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  216.58.194.99
Registro PTR:  dfw06s48-in-f3.1e100.net
Organizacion:  Google
ISP:  Google
Ciudad:  Mountain View
Pais:  United States
Estado:  California
    VirusTotal  "detection-ratio">0/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12413    216.58.194.99:443      ESTABLISHED     5388
  TCP    272.168.0.109:12421    216.58.194.99:443      ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  23.193.33.105
Registro PTR:  a23-193-33-105.deploy.static.akamaitechnologies.com
Organizacion:  Akamai Technologies
ISP:  Akamai Technologies
Ciudad:
Pais:  United States
Estado:
    VirusTotal  "detection-ratio">0/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12414    23.193.33.105:443      ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  87.240.129.71
Registro PTR:  srv71-129-240-87.vk.com
Organizacion:  VKontakte Ltd
ISP:  VKontakte Ltd
Ciudad:
Pais:  Russian Federation
Estado:
    VirusTotal  "detection-ratio">0/67<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12381    87.240.129.71:443      ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
 - - - - - - - - - - - - - - - - - - - - -
Direccion IP:  87.240.182.229
Registro PTR:  srv229-182-240-87.vk.com
Organizacion:  VKontakte Ltd
ISP:  VKontakte Ltd
Ciudad:
Pais:  Russian Federation
Estado:
    VirusTotal  "detection-ratio">0/65<
C:\Users\usuaro\ProgramasPortables\Agr-privoxy\Agr-privoxy.exe
 . . . . . . . netstat  . . . . . . .
  Proto  Dirección local          Dirección remota        Estado           PID
  TCP    272.168.0.109:12382    87.240.182.229:443     ESTABLISHED     5388
  TCP    272.168.0.109:12386    87.240.182.229:443     ESTABLISHED     5388
  TCP    272.168.0.109:12417    87.240.182.229:443     ESTABLISHED     5388
  TCP    272.168.0.109:12456    87.240.182.229:443     ESTABLISHED     5388
 - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Imagen inferior vista desde PowerShell . . .


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

La salida de respuesta depende de su conecxion . . XD . . sin embargo mi proveedor de servicio de internet es un asco . . y me analiza bastante rapido . . que se divierta . . XD
...
..
.

martes, 2 de octubre de 2018

Menu .. Batch para PowerShell Scripts . . . .

Menu .. Batch para PowerShell Scripts . . . .
Una opcion de poner en ejecucion PowerShell Scripts muy simple, sencillo, rapido de ejecutar y minimalista; old school.
.
En la imagen gif se aprecia como puedo ir moviendome entre las opciones preconfiguradas.

.

Abajo entre lineas punteadas  ejemplo de como se llevo a cabo; el archivo es solo un TXT cambiado a BAT, su ejecucion es como un programa normal dando doble click y eligiendo la opcion deseada.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
@echo off
color 0a
:begin
ECHO .
ECHO -------------------------------------------------------------------------
ECHO -------------------------------------------------------------------------
ECHO . . . . . . . . "Analizar Conexiones" . . . . . . . .
ECHO ------------------------------------------------------------------------
ECHO -------------------------------------------------------------------------
ECHO Los Analisis hacen uso de Internet; paginas ..::
ECHO   "VirusTotal" (malware) y "MyIP" (localidad).
ECHO .
ECHO ---> Options. . . . . . . . . . . . . . . . . . . . . . . . . .
ECHO [ 1 ]-- Analizar "privoxy-log" reciente . ultimas 100 entradas al log . VT
ECHO [ 2 ]-- Analizar IPs "Proxys-Servers": Http, Https, Transparent and Socks.
ECHO [ 3 ]-- Analizar una "IP o Url".
ECHO -------------------------------------------------------------------------
::
set /p op="Enter your choice: "
if "%op%"=="1" goto op1
if "%op%"=="2" goto op2
if "%op%"=="3" goto op3
::
:op1
ECHO .
ECHO 1-- Analizar "privoxy-log" reciente . . . ultimas 100 entradas al log
ECHO  . . . . . . . Espere resultados . . . . . . .
ECHO -------------------------------------------------------------------------
cd "C:\Users\hangaroo\ProgramasPortables\Agr-privoxy\"
powershell.exe -ExecutionPolicy Bypass -File "privoxy-script.ps1"
ECHO -------------------------------------------------------------------------
ECHO - - - Finalizado - - -
goto begin
::
:op2
ECHO .
ECHO 2-- Analizar IPs "Proxys-Servers": Http, Https, Transparent and Socks.
set /p IP="paste Proxy-Server [ IP:Port ] : "
ECHO  . . . . . . . Espere resultados . . . . . . .
ECHO -------------------------------------------------------------------------
cd "C:\Users\hangaroo\ProgramasPortables\"
powershell.exe -ExecutionPolicy Bypass -File "Analizar-Proxys-Servers.ps1" -IPP "%IP%"
ECHO -------------------------------------------------------------------------
ECHO - - - Finalizado - - -
goto begin
::
:op3
ECHO .
ECHO 3-- Analizar una "IP o Url".
set /p IP="paste IP-URL : "
ECHO  . . . . . . . Espere resultados . . . . . . .
ECHO -------------------------------------------------------------------------
cd "C:\Users\hangaroo\ProgramasPortables\"
powershell.exe -ExecutionPolicy Bypass -File "Analizar-IPoUrl-VT-MyIP.ps1" -Ipp "%IP%"
ECHO -------------------------------------------------------------------------
ECHO - - - Finalizado - - -
goto begin
::
::
:exit
@exit
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Notese que son los scripts ya mencionados anteriormente . . pero ahora se asignan valores de la siguiente forma ..::
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo .. Al inicio del script PS . . . .  . . . . . .
Param(
  [string]$computerName,
  [string]$filePath
)
. . . .  . . . . . . . . . .  . . . . . . . . . .  . . . . . .
Ejecucion en CMD . . . . . . .
powershell.exe -ExecutionPolicy Bypass -File "My-script.ps1" –computerName SERVER1 –filePath C:\Whatever
. . . .  . . . . . . . . . .  . . . . . . . . . .  . . . . . .
Por si no se sabia . . . los Scripts PowerShell son TXT cambiados a PS1.
Si el Script depende de otro programa . . entonces lo coloco en la misma carpeta; y voy cambiando a la carpeta que se necesite . . . de otra forma seria tener los scripts juntos y poner rutas a los programas del que dependen . . que me parece mas enredoso  XD  . . pero es el gusto de cada quien.
.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .