|
891
|
Programación / Java / Ayuda Cifrado ARC4/RC4 en Java
|
en: 26 Febrero 2014, 05:03 am
|
Buenas, quería saber si alguién me podría dar una mano. Estaba armando un código para cifrar un archivo cualquiera mediante RC4, el problema es que me genera una excepción (ArrayIndexOutOfBoundException) cuando intento ejecutarlo lo cual es raro ya que pude ejecutar el mismo código ligeramente modificado en C++(WINAPI) y C#... Si alguien me dá una mano se lo agradecería. private byte[] RC4(byte[] szBuf,byte[] szKey,int dwBufLen,int dwKeyLen){ int i,j=0; int []s=new int[256]; int dw; byte tmp; byte[] Buf=szBuf; for(i=0;i<256;i++){ s[i]=i; } for(i=0;i<256;i++){ j =(j +s [i ]+Key[i %dwKeyLen ])%256 ; tmp=(byte)s[i]; s[i]=s[j]; s[j]=(int)tmp; } for(dw=0;dw<dwBufLen;dw++){ i=(i+1)%256; j=(j+s[i])%256; tmp=(byte)s[i]; s[i]=s[j]; s[j]=(int)tmp; Buf[dw]^=(byte)s[(s[i]+s[j])%256]; } return Buf; } private void btnCifrarActionPerformed (java. awt. event. ActionEvent evt ) { if(txtArchivo.getText().length()==0) JOptionPane. showMessageDialog(this, "No hay Archivo, seleccione uno...", "RC4 para Archivos - BloodSharp", JOptionPane. ERROR_MESSAGE); else if(txtPassword.getText().length()==0) JOptionPane. showMessageDialog(this, "Escriba una contraseña...", "RC4 para Archivos - BloodSharp", JOptionPane. ERROR_MESSAGE); else{ try{ File file =new File(txtArchivo. getText()); int longitud=(int)file.length(); byte[] Bytes=new byte[longitud]; bufferedInput.read(Bytes,0,longitud); Bytes=RC4(Bytes,txtPassword.getText().getBytes(),longitud,txtPassword.getText().length()); fileInput.close(); bufferedInput.close(); bufferedOutput.write(Bytes,0,longitud); fileOutput.close(); bufferedOutput.close(); JOptionPane. showMessageDialog(this, "El archivo "+txtArchivo. getText()+" fue Cifrado/Descifrado", "RC4 para Archivos - BloodSharp", JOptionPane. INFORMATION_MESSAGE); } JOptionPane. showMessageDialog(this,e. getClass(). toString()+" "+e. getMessage(), "RC4 para Archivos - BloodSharp", JOptionPane. ERROR_MESSAGE); } } }
PS: El código de RC4 lo saque del foro: http://foro.elhacker.net/programacion_cc/encriptacion_rc4arc4-t210711.0.html;msg1000447#msg1000447B#
|
|
|
892
|
Programación / Programación C/C++ / Re: Calculadora en C (Turbo C 2.0)
|
en: 29 Diciembre 2013, 03:51 am
|
Primero yo te recomendaría actualizar el compilador, el turbo c 2 es de la edad de los dinosaurios y el formato no sale en PE sino que sale en NE. Segundo algunos gotos que tenés en el código se pueden reemplazar por ifs o whiles un poco diferentes siendo así más legible el código... (aunque cada uno lo hace como más le gusta ) Ejemplo: if(op=='R'||op=='r') goto fin; fin:
reemplazar por: if(!(op=='R'||op=='r'))return;
y inicio: if(op=='S'||op=='s') goto fin; if(op=='+'||op=='-'||op=='*'||op=='/'||op=='R'||op=='r') { capturar(op); operacion(op); } goto inicio;
do{ if(op=='+'||op=='-'||op=='*'||op=='/'||op=='R'||op=='r'){ capturar(op); operacion(op); } } while(!(op=='S'||op=='s'));
B#
|
|
|
895
|
Programación / Programación C/C++ / Re: Problema con Inyector Dll
|
en: 21 Septiembre 2013, 05:30 am
|
Un comentario te voy a hacer y puede que sea el error que te falla en el programa: los strings en C/C++ son arrays de caracteres, que finalizan con el byte cero. En tu código: int DllLen = 12; cout << "dllvirus.dll" << " LEN: " << DllLen << endl; ponés la cantidad de letras de tu string (12 bytes) pero realmente los programas manejan "d l l v i r u s . d l l \0" (13 bytes)... proba con longitud 13 y tal vez te funcione correctamente... B#
|
|
|
896
|
Programación / Programación C/C++ / Re: Ayuda, Crear menu Hook OPENGL
|
en: 11 Septiembre 2013, 19:37 pm
|
Hola, tengo una DLL(inyeccion DLL), con la cual hago un hoock a opengl y creo un wall para "Counter Sttrike", quiero crear un menu, pero no encuentro la funcion, osea Podés dibujar un menú antes de que se llame al primer glEnable luego de que se haya ejecutado una vez glViewport y capturar los mensajes de teclas que se reciban de la ventana del juego... B#
|
|
|
897
|
Programación / Programación C/C++ / Re: Ayuda , Opengl Wallhack DLL
|
en: 25 Mayo 2013, 03:09 am
|
Me parece una mejor opción hacer API Hooking a GetProcAddress y hacer strcmp(cadena, "glBegin"); si coinciden GPA devolverá la dirección a tu función si no, tiras un GPA normal para que el juego funcione bien . No es algo difícil y haces el cheat más compatible con otras versiones y con otros PC . Sa1uDoS Si esa es una, también se podría hacer inline hooks, EAT hooks (antes que llame a GPA), excepciones, etc... hay varias maneras, lo ideal sería utilizar una que no tenga tantos problemas y que funcione para cualquier versión del juego y sea soportada para cualquier tipo de pc como decís... De todas maneras eso queda al criterio del programador, utilizar la que prefiera y si lo hace compatible o no. B#
|
|
|
899
|
Programación / Programación C/C++ / Re: Ayuda con programa en c#
|
en: 7 Abril 2013, 16:24 pm
|
Un par de comentarios: class alumno {
public List<string> nombres = new List<string>(); public List<string> apellidos = new List<string>(); public List<int> edades = new List<int>(); public List<string> sexo = new List<string>();
Acá el problema principal es que no estás creando un array del objeto 'alumno' (la idea es crear varios alumnos por eso array de alumnos, fijate el código q te puse más arriba) sino que estás creando arrays de datos de alumnos, lo cuál en parte no está mal ya que una persona puede tener varios nombres y/o apellidos (paterno, materno) pero no puede tener varias edades ni sexos. static void Main(string[] args) { menu(); } Se puede eliminar la función menu() y poner el contenido de esa función en el main... (Aunque eso sería a mi gusto ) public static void menu() { int opcion=0; alumno estu = new alumno(); do { Console.Clear(); Console.SetCursorPosition(8, 10); Console.WriteLine("menu del proyecto"); Console.SetCursorPosition(5, 12); Console.WriteLine("1.-Ingreso de nuevo estudiante"); Console.SetCursorPosition(5, 13); Console.WriteLine("2.- mostrar lista de estudiantes"); Console.SetCursorPosition(5, 14); Console.WriteLine("3.- ordenar por nombre"); Console.SetCursorPosition(5, 15); Console.WriteLine("4.- salir"); Console.SetCursorPosition(5, 18); Console.WriteLine("(seleccione 1-4)"); opcion = Int32.Parse(Console.ReadLine()); if (opcion < 1 || opcion > 4) Console.WriteLine("ingrese una opcion valida"); } while (opcion < 1 || opcion>4);
switch (opcion) { case 1: estu.adicionar(); menu(); break;
case 2: estu.mostrar(); menu(); break; case 3: Console.WriteLine("selecciono tres"); break; case 4: break; }
Console.ReadLine(); } } } El switch lo podrías poner dentro, al final del dowhile, para evitar tener que usar recursividad y verificar si es menor a 1 o mayor a 3 que salga del bucle B#
|
|
|
|
|
|
|