elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1] 2 3 4 5 6 7 8 9 10 11
1  Programación / Ingeniería Inversa / Aplicando Instrumentación dinámica al crackMe de Leyer en: 24 Octubre 2025, 02:08 am
Hola,

El crackMe de leyer resuelto medianamente en el 2017 por mi Solución lycrackme, veo una mejor manera de hacerlo con Instrumentación dinamica usando el api de ByteBuddy, para construir un agente y adjuntarlo en tiempo de ejecución al crackME o proceso de este.

- Importante: para usar el APi de Java de instrumentación, estoy usando la JDK 8, dado en contiene el tools.jar, si o si es necesario para poder crear el agente, abria que investigar como hacerlo con versiones mas nuevas de Java.
- El código del crackME para que no se pierda, y recordarlo, leyer me odiara ya...
- Aún asi es un escenario fácil ya que el código no esta ni cifrado, ni ofuscado, podemos leer las variables incluso, decompilar también el .jar del crackME, o sea ventajas, en otros escenarios, un decompilador de Java con un .jar ofuscado no lograria decompilar bien y se confundiría.
- Ventajas de esta manera: que tenemos mas desacople, claramente, debemos analizar este .jar u otro, por medio de un decompilador bueno, y en lo posible entender, en dado caso desofuscarlo, etc, muchas comparaciones de password son con ese equals, para los Strings si es igual a otro etc...
- Quizas también con bytebuddy se podria cambiar la condicion, invertirla ? con el operador de negacion ? en este caso como todo esta en el main, no lo c rick...

Código
  1. import...
  2.  
  3. public class CrackMe {
  4.  
  5. static int[] _$$Y_sy76 = new int[]{7414755, 3219665, 175186692, 136322726, 136419744, 4066036, 15685602, 103481, 8331326, 14522496, 254443529, 117440530, 0x100000, 10066673, 0xEEE122, 0x421442, 1183806, 11019024, 140529167, 118489840, 19071234, 0xF00004, 3109537, 594494, 7406141, 9476832, 18812418, 9969838, 34803714, 3298805, 2302368, 15368608, 8916253, 9445024, 51519491, 31, 241696768, 7414181, 2299045, 39441, 9539087, 16392240, 0x9090090, 117641473, 258080912, 16115104, 0x120120, 0x10101A, 1183501, 7413822, 236060690, 257294849, 125830118, 66016, 8983278, 624289, 16609425, 14844138, 27270816, 239404033, 51389454, 7414690, 593951, 7709524, 9969409, 9847050, 118646528, 158482433, 0x1110011, 2299045, 2299045, 3739700};
  6.  
  7.    static String _$$as_OIsl(String _$s_String_) {
  8.        byte[] _$$d_defaultBytes_ = _$s_String_.getBytes();
  9.        MessageDigest _$$a_algorithm = null;
  10.        try {
  11.            _$$a_algorithm = MessageDigest.getInstance("SHA1");
  12.        }
  13.        catch (NoSuchAlgorithmException noSuchAlgorithmException) {
  14.            // empty catch block
  15.        }
  16.        _$$a_algorithm.reset();
  17.        _$$a_algorithm.update(_$$d_defaultBytes_);
  18.        byte[] messageDigest = _$$a_algorithm.digest();
  19.        StringBuffer hexString = new StringBuffer();
  20.        int _$I_Index = 0;
  21.        while (_$I_Index < messageDigest.length) {
  22.            hexString.append(Integer.toHexString(0xFF & messageDigest[_$I_Index]));
  23.            ++_$I_Index;
  24.        }
  25.        String _$f_Foo_ = messageDigest.toString();
  26.        _$s_String_ = "" + hexString;
  27.        return _$s_String_;
  28.    }
  29.  
  30.        String _DEFF_$ = "ABDHGS61" + new Random().nextInt(10) + "51129018N00S";
  31.        String _IX$ = "";
  32.        String _DEFF_$2 = "2ODNWOF92H823ONEI2332";
  33.        int _$$2341s = 0;
  34.        boolean _$_$2edwb$ = true;
  35.        block0: while (_$_$2edwb$) {
  36.            int _yx$;
  37.            int _stax$ = new Random().nextInt((int)Math.pow(Integer.parseInt("2ODNWOF92H823ONEI2332".substring(10, 12)), 3.0));
  38.            if (_stax$ != Integer.parseInt(String.valueOf(_DEFF_$.charAt(_yx$ = 8)))) continue;
  39.            int _index$ = _DEFF_$.length();
  40.            while (_index$ > 1) {
  41.                if (_index$ == Integer.parseInt("2ODNWOF92H823ONEI2332".substring(20))) {
  42.                    _IX$ = String.valueOf(_IX$) + _DEFF_$.substring(_DEFF_$.indexOf("0") + 2, _DEFF_$.lastIndexOf("0") - _index$);
  43.                    _$$2341s = (int)Math.pow(Integer.parseInt(_IX$), 2.0) / Integer.parseInt(_DEFF_$.substring(_DEFF_$.lastIndexOf("1") + 1, _DEFF_$.lastIndexOf("N"))) + Integer.parseInt(_DEFF_$.substring(11, 13)) - 2;
  44.                    _$_$2edwb$ = false;
  45.                    continue block0;
  46.                }
  47.                --_index$;
  48.            }
  49.        }
  50.        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  51.        final JFrame _$$f_dwquig11__ = new JFrame("Ly-Crackme @Leyer");
  52.        _$$f_dwquig11__.setLayout(new FlowLayout());
  53.        final JPasswordField _$$p_Tetxta1Field_ = new JPasswordField(20);
  54.        _$$f_dwquig11__.getContentPane().add(new JLabel("Key: "));
  55.        _$$f_dwquig11__.getContentPane().add(_$$p_Tetxta1Field_);
  56.        int _$$zaq1I1 = new Random().nextInt(_$$Y_sy76.length + 1);
  57.        JLabel $$l_Label_ = new JLabel("X = " + _$$Y_sy76[_$$zaq1I1]);
  58.        _$$f_dwquig11__.getContentPane().add($$l_Label_);
  59.        _$$f_dwquig11__.setSize(500, 100);
  60.        JButton _$$b__$$hsqqso_ = new JButton("Validar");
  61.        String _$$c_Cor_ = "";
  62.        int _$$i_INDEX_ = 0;
  63.        while (_$$i_INDEX_ < _$$Y_sy76.length) {
  64.            if (_$$Y_sy76[_$$i_INDEX_] == _$$Y_sy76[_$$zaq1I1]) {
  65.                int index = 0;
  66.                while (index < _$$i_INDEX_) {
  67.                    _$$c_Cor_ = String.valueOf(_$$c_Cor_) + String.valueOf((byte)_$$Y_sy76[index]);
  68.                    ++index;
  69.                }
  70.                _$$c_Cor_ = String.valueOf(CrackMe._$$as_OIsl(_$$c_Cor_)) + String.valueOf(Math.pow(_$$2341s, 2.0) / 6.0 - 36.0);
  71.            }
  72.            ++_$$i_INDEX_;
  73.        }
  74.        JLabel _$$s_poqh1120 = new JLabel("");
  75.        _$$f_dwquig11__.getContentPane().add(_$$b__$$hsqqso_);
  76.        final String _$$r_easte = _$$c_Cor_;
  77.        _$$f_dwquig11__.getContentPane().setBackground(new Color(13, 124, 19, 12));
  78.        _$$f_dwquig11__.getContentPane().add(_$$s_poqh1120);
  79.        _$$f_dwquig11__.setResizable(false);
  80.        _$$b__$$hsqqso_.setPreferredSize(new Dimension(120, 25));
  81.        _$$f_dwquig11__.setLocationRelativeTo(null);
  82.        _$$f_dwquig11__.setDefaultCloseOperation(3);
  83.        _$$f_dwquig11__.setVisible(true);
  84.        _$$b__$$hsqqso_.addActionListener(new ActionListener(){
  85.  
  86.            @Override
  87.            public void actionPerformed(ActionEvent $$jawteventActionEvent) {
  88.                String _$$I_pos123 = _$$p_Tetxta1Field_.getText();
  89.                if (_$$I_pos123.equalsIgnoreCase(_$$r_easte)) {
  90.                    JOptionPane.showMessageDialog(_$$f_dwquig11__, "Correcto!");
  91.                } else {
  92.                    JOptionPane.showMessageDialog(_$$f_dwquig11__, "Incorrecto!");
  93.                }
  94.            }
  95.        });
  96.    }
  97. }
  98.  

Esta es la manera en que byteBuddy nos permite crear un agente usando su DSL (domain specific language) si, un pedaso de Builder gigantesco.

Código
  1. public static void transform(String args, Instrumentation inst) {
  2.        new AgentBuilder.Default()
  3.                .ignore(ElementMatchers.none())
  4.                .disableClassFormatChanges()
  5.                .with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
  6.                .with(AgentBuilder.RedefinitionStrategy.Listener.StreamWriting.toSystemError())
  7.                .with(AgentBuilder.Listener.StreamWriting.toSystemError().withErrorsOnly())
  8.                .with(AgentBuilder.Listener.StreamWriting.toSystemError().withTransformationsOnly())
  9.                .ignore(ElementMatchers.nameStartsWith("net.bytebuddy."))
  10.                .ignore(ElementMatchers.nameStartsWith("java."))
  11.                .ignore(ElementMatchers.nameStartsWith("javax."))
  12.                .ignore(ElementMatchers.nameStartsWith("sun."))
  13.                .type(ElementMatchers.nameContains("CrackMe"))
  14.                .transform((builder, typeDescription, classLoader, module, protectionDomain) ->
  15.                        builder.visit(Advice.to(StringEqualsAdvice.class)
  16.                                .on(ElementMatchers.named("actionPerformed")))
  17.                )
  18.                .installOn(inst);
  19.  
  20.        System.out.println("[+] Interceptor instalado en clases CrackMe");
  21.        System.out.flush();
  22.    }
  23. }
  24.  

Pues resulta que podemos interceptar la clase CrackMe y el botón que hace la comparación del input con la key, además byteBuddy necesita un Advice, que lo llamo StringEqualsAdvice

- Aplicando instrumentación estática

Aquí por medio del APi de Java de Instrumentación, cuando generamos nuestro agente, y lo ejecutamos como el modo siguiente, el método premain es el que se va a disparar esta vez.

Código
  1. java -javaagent:agent-1.0.0.jar -jar Ly-CrackME.jar <1>
  2. Execute premain method
  3. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; Ly-Crackme @Leyer &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9619;&#9619;&#9608;
  4. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9608;&#9619;&#9619;&#9619;&#9618;&#9619;&#9619;&#9618;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9619;&#9608;&#9608;&#9608;&#9619;&#9608;&#9608;
  5. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; Key: &#9608;&#9608;&#9608;                                       &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;
  6. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9619;&#9618;&#9617;&#9617;&#9618;&#9619;&#9619;&#9619;&#9608; X=231231321 &#9608;&#9608;&#9608;(Validar)&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9619;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;
  7. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9619;&#9608;&#9608;&#9608;&#9619;&#9619;&#9608;&#9608;&#9608;&#9619;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;
  8. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9619;&#9618;&#9619;&#9619;&#9608;&#9619;&#9617;&#9618;&#9618;&#9618;&#9618;&#9618;&#9619;&#9619;&#9618;&#9618;&#9608;&#9619;&#9619;&#9619;&#9619;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9619;&#9619;&#9619;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;
  9. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;
  10. &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608;
  11.  
  12. Starting monkey patching :D by rubn0x52.com
  13.  
  14. [+] Interceptor instalado en clases CrackMe
  15.  
  16. [*] Botón Validar presionado!
  17. Clave encontrada
  18. Campo: val$_$$r_easte
  19. Clave: 6ff173f14d9384c6b897b4be810e5699ca997e18.0 <2>
  20.  
  21. [*] Botón Validar presionado!
  22. Clave encontrada
  23. Campo: val$_$$r_easte
  24.  



- Aplicando instrumentación dinámica

Para el adjuntado dinámico, necesitamos el PID del crackME, por lo tanto lo ejecutamos con el tipico

Código
  1. java -jar LyCrackME.jar

Ahora extraemos el PID con el comando jps como lo siguiente:

Código
  1. rubn > jps                                      
  2. 4113 Main
  3. 163776 RemoteMavenServer36
  4. 212017 jar
  5. 4555 SonarLintServerCli
  6. 34763 RemoteMavenServer36
  7. 12718 RemoteMavenServer36
  8. 212061 Jps
  9. 171085 java
  10. rubn > java -jar patch-lycrackme-1.0.0.jar 212017
  11.  
  12. rubn
  13. https://rubn0x52.com
  14. Attached to target jvm correctly
  15.  

La linea 10, es como ejecutamos el agente.

El pid es 212017 del crackME, luego pobramos a introducir en el input del crackME y en la consola, el Agente interceptara el click en el botón, más precisamente el método llamado actionListener


Aqui entra en juego el Advice previamente comentado

Código
  1. package com.prueba.lycrackme.advice;
  2.  
  3. import net.bytebuddy.asm.Advice;
  4.  
  5. public class StringEqualsAdvice {
  6.  
  7.    @Advice.OnMethodEnter
  8.    public static void enter(@Advice.This Object thiz) {
  9.        System.out.println("\n[*] Botón Validar presionado!");
  10.        System.out.flush();
  11.        try {
  12.            // Extraer todos los campos del ActionListener anónimo
  13.            java.lang.reflect.Field[] fields = thiz.getClass().getDeclaredFields();
  14.            for (java.lang.reflect.Field field : fields) {
  15.                field.setAccessible(true);
  16.                Object value = field.get(thiz);
  17.                if (value instanceof String) {
  18.                    String str = (String) value;
  19.                    // La clave correcta será un string largo (hash SHA1 + número)
  20.                    if (field.getName().contains("easte")) {
  21.                        System.out.println("Clave encontrada");
  22.                        System.out.println("Campo: " + field.getName());
  23.                        System.out.println("Clave: " + str);
  24.                        System.out.flush();
  25.                    }
  26.                }
  27.            }
  28.        } catch (Exception e) {
  29.            System.err.println("[!] Error extrayendo campos: " + e.getMessage());
  30.            e.printStackTrace();
  31.        }
  32.    }
  33.  
  34. }
  35.  

Entonces podemos recorrer por todos los campos, y machear por uno que se llama _$$r_easte línea 20, que es el que contiene la key.





- He generado una release con el agente.

- https://github.com/rucko24/Instrumentacion-con-bytebuddy/releases/tag/1.0.3
- source: https://github.com/rucko24/Instrumentacion-con-bytebuddy/tree/1.0.3/patch-lycrackme
2  Informática / Hardware / Disipador de aire para (EEATX Enhanced Extended ATX) supermicro X8DTN+ dual xeon en: 22 Noviembre 2021, 00:50 am
Que talco?

Ando en la busqueda de un disipador compatible con esta mostrica X8DTN+  vieja pero ahi va  :silbar:

No estoy seguro si un Cooler Master Hyper 212 EVO o un NOCTUA segun ? porque la placa es dual xeon socket 1366



* El Cooler Master Hyper 212 LED no le sirvio, https://www.amazon.es/gp/product/B01KBXKP8W/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&th=1

* Esto viene en camino son unos alargadores por si acaso -> https://www.amazon.es/gp/product/B01AA0LUBC/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1



Esta es la placa con todas las especificaciones

* https://www.supermicro.com/products/motherboard/QPI/5500/X8DTN_.cfm?IPMI=O
3  Foros Generales / Foro Libre / Ni se les ocurra pagar la subcripcion de Adobe PDF a los que nos gusta los open/free XD en: 19 Noviembre 2020, 18:12 pm
Resulta que me subscribi tranquilamente a adobe pdf y algunos otros produtos con dicho pack,  :xD porque necesitaba mas que todo firmar( firma digital) unos pdf en especifico para el curro, pues BOOM!!!

pues quiero cancelarlo y total que me esta pidiendo que page casi 100 mangos.  :xD

Segun es LEGAL, PERO NO MORAL  >:D


https://www.tuexperto.com/2020/01/31/esta-adobe-intentando-timarte-plan-anual/
4  Foros Generales / Foro Libre / Sabrán donde conseguir discos en físico de khan doblel , y calero LDN? Europa... en: 9 Junio 2019, 11:29 am
Khan DobleL
Cullinan, Nébula, Venom

Calero LDN
Insomnio

Pues estoy en Europa, pero si los hay entro lugar pues bienvenido sea.
5  Programación / .NET (C#, VB.NET, ASP) / Reproducir Ñ con sapi.voice en: 27 Abril 2019, 20:55 pm
que tal chavales pues tengo lo siguiente

Código
  1. Dim message, sapi
  2. message="niño algo con ñ"
  3. Set sapi=CreateObject("sapi.spvoice")
  4. sapi.Speak message
  5.  

Necesito reproducir las ñ, pero no lo logro  :-\
6  Informática / Hardware / Driver Tesla sobre escritorio remoto en google cloud en: 30 Octubre 2018, 15:58 pm
Hola muchachones que talco?

Pues me cree una instancia en Google cloud free con características

  • Window server 2008
  • Nvidia Tesla p100

Al entrar, en administrador de dispositivos se debe instalar el driver de la gráfica, lo cual hago, pero es demasiado lento aún, dado que por lo visto con escritorio remoto el Driver de la vga se deshabilita

Alguna manera de ejecutar con gráficos pero de la Tesla?,  Intenté con teamviewer la conexión, pero debo tener el rdp activo  :-[ [/size]



Solución funcional actual

https://cloud.google.com/compute/docs/gpus/add-gpus#verify-driver-install

instalar solo este driver  :xD

386.09_grid_win8_win7_server2012R2_server2008R2_64bit_international

me permite ejecutar un pequeñin juego
7  Programación / Java / Envio de emails programados con springboot + vaadin 8 + quartz en: 30 Octubre 2018, 12:51 pm
PoC Email Sender

Modificar el mail.properties con usuario y contraseña, dicho correo debe tener habilitado el servidor smtp, usaremos gmail en este ejemplo

Código
  1. git clone https://github.com/newUserRepo/PoCEmailSender

Código
  1. cd pocemailsender

luego ejecutar con el siguiente comando


Código
  1. mvn spring-boot:run

abrir el navegador http://localhost:8080



  • Dependencia de quartz, spring-boot-starter-quartz
  • Añadidas dependencias de Springboot 2.0.5.RELEASE y Vaadin 8.5.2
  • Uploader de múltiples archivos, con drag and drop

inspirado en este post  :xD  
https://foro.elhacker.net/java/envio_de_correo_programado_en_otra_fecha_en_java-t488175.0.html


source https://github.com/newUserRepo/PoCEmailSender
8  Foros Generales / Foro Libre / un gran theft auto en España ? en: 18 Octubre 2018, 17:29 pm
Que saben de esto?  :huh: o sera wasofi@ , ciberChorrad@s etc ?

9  Sistemas Operativos / Mac OS X / Instalar macOSX alguna version que sirva en iMAC del 2009 en: 3 Abril 2018, 14:58 pm
Saludos muchachones pues, seguro es una pregunta triyada pero este es mi estatus

Necesito instalar macOS en un imac es lo primero, estoy probando macOS Sierra

* Imac del 2009 aprox lo se con este comando porque no sale en información de sistema  :xD
Código
  1. curl https://support-sp.apple.com/sp/product?cc=`system_profiler SPHardwareDataType | awk '/Serial/ {print $4}' | cut -c 9-`

* Originalmente tenia windows 7 en chino
 
 Hardware
 * Imac 20"/2.66/2x1gb/320gb/sd
 * gforce 9400 256mg

las opciones cuando arranco el usb booteable creado con Win32 Disk Imager
oprimiendo alt son

 - boot mac osx from mac
 - boot mac osx from install mac os sierra
 - boot clover frfom efi

he escojido la opcion boot mac osx from install mac os sierra donde me toca formatear el HardDriver y esperar el proceso de instalación  :xD

el disco le di formato con ambas para probar tanto mbr o gpui y nada porque cuando reinicio aparece un circulo con ralla  :xD

probe a iniciar con command + s y me dice

mac os sierra this version of mac os x is not supported on this platform reason mac f2218EA9

Quiero probar el capitán a ver que tal, se ve así, este archivo lo abriré en la imac y sera que realizo el proceso de instalación por consola u otra manera?





Pues aun nada, probe con el capitan, y el usb al arrancar sale en circulo con ralla, lo hice booteable desde el mismo mac. bendita sea diosssss  :xD :xD



Si logre resolver era la ISO  >:D
10  Foros Generales / Dudas Generales / sabran de algún alquiler lo mas económico en Madrid en: 11 Febrero 2018, 00:45 am
lo mas barato  :xD llegare a Madrid alguna zona recomendada? somos 4 Personas  :xD

se los agradezco.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines