Normalmente, no se puede ejecutar un .jar
(que es un Archivo Java ARchive ) utilizando el open
en OS X. No es un archivo ejecutable, no da al sistema ninguna pista sobre cómo debe ejecutarse normalmente, por lo que open
es darle la LSOpenURLsWithRole()
error que se ve arriba.
En primer lugar, tendrás que instalar Java en tu Mac. La forma más fácil de hacerlo es abrir un Terminal.app
ventana y el tipo:
java -version
Si eso devuelve una versión java como esta:
IanCsiMac:~ |ruby-2.1.5|
> java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
Ya está. Java está listo para ser utilizado. Si java no está presente en tu sistema, al ejecutar ese comando aparecerá una ventana preguntando si quieres instalarlo. Sigue las indicaciones y cuando termines java -version
le mostrará algo como lo que ve arriba. La versión puede ser diferente, pero el comando ahora funcionará.
Ahora tienes que ejecutar tu .jar
utilizando el archivo java
de mando. Es necesario proporcionar tres opciones al comando java
para que esto funcione:
- El
-jar
que le dice a java
está ejecutando el contenido de un archivo Java ARchive;
- Una opción de memoria para la máquina virtual de Java en la forma
-Xmx1024m
y finalmente
- El camino hacia el
.jar
archivo en el disco.
Para su descarga todo se verá así:
java -jar -Xmx1024m /Users/user/Downloads/burpsuite_free_v1.6.01.jar
Esto iniciará el programa, aunque no podrá enlazar con los puertos 80 y 443. Esos son puertos protegidos. Los puertos <1024 en cualquier máquina Mac OS X sólo pueden ser vinculados a procesos iniciados como root
.
La forma correcta de ejecutar los programas como root
es utilizar el comando sudo no a login
como el root
usuario. Esto proporciona un nivel de control e indirección a sus acciones para que no haga algo accidentalmente tonto como rm -rf /
sin que te pregunte si estás seguro de querer hacer semejante tontería.
Así, la forma final de su comando será:
sudo java -jar -Xmx1024m /Users/user/Downloads/burpsuite_free_v1.6.01.jar
Se le pedirá su contraseña y, suponiendo que no haya nada más vinculado a los puertos 80 y 443, su aplicación se iniciará y estará escuchando en esos puertos.
Si falla porque no puede enlazarse a 80 y 443, tendrás que averiguar qué está enlazado allí ya y cerrarlo. Puedes usar el comando comando lsof para resolver esto.
Para el puerto 80 la llamada es:
sudo lsof -iTCP:80 -sTCP:LISTEN -n -P
Para 443 es:
sudo lsof -iTCP:443 -sTCP:LISTEN -n -P
La salida de ese comando, asumiendo que algo está escuchando en el puerto, se verá algo así:
> sudo lsof -iTCP:80 -sTCP:LISTEN -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 50 root 9u IPv6 0x8978b255ac4ef0b7 0t0 TCP *:80 (LISTEN)
Como puedes ver, tengo un proceso llamado nginx
escuchando el puerto 80. Tiene el ID de proceso 50.
Puedo matar ese proceso con:
sudo pkill nginx
Eso no garantiza necesariamente que no intente volver, pero la forma de tratar esto de forma completa y exhaustiva es mejor que se plantee como una pregunta totalmente independiente en el sitio web.