Autore Topic: Qualche chiarimento?!?  (Letto 2571 volte)

Offline Vincenzo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    Windows 7
Qualche chiarimento?!?
« il: 13 Agosto 2011, 12:22:47 CEST »
0
Mi sono, finalmente, arrivati i nuovi Tag della TagAge e qualcosa inizia a muoversi.
Con i tag della TouchaTag, forse essendo bloccati, non riuscivo a fare nulla.

Adesso inizia a funzionare ma ancora qualche dubbio:
I nuovi tag sono "vergini" devono essere formattati (scritti). La cosa strana che, dopo averli scritti, cambia il comportamento.
Come si vede dagli allegati, all'inizio si visualizzano i settori poi no.
Ho inserito del testo puro (716byte).

Il Tag è da 1024byte diviso in 16 settori costituiti ognuno da 4 blocchi da 16 byte (16x4x16=1024byte).
In realtà il payload è di 716byte max (-308byte).

Una prima parte dovrebbe essere il 4° blocco di ogni settore non utilizzabile (16x3x16= 768byte). Perchè?
Mentre gli altri 52byte (768-716=52) dove sono?

Cosa sono le "Access conditions" ??

Passando ad Android:
Codice: [Seleziona]
<intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" /> // Questo è importante!!
</intent-filter>

Inserendo questo nel manifest riesco a lanciare l'app direttamente leggendo il tag. Attenzione solo se nel tag esiste del testo puro (come sopra citato devono essere formattati).

Codice: [Seleziona]
<intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter"
                android:mimeType="*/*" />

Questo consente la lettura dei tag vergini.
Ciao

PS Adesso vado a fare un tuffo in piscina.

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Qualche chiarimento?!?
« Risposta #1 il: 14 Agosto 2011, 13:59:08 CEST »
0
allora, intanto ti chiedo come hai ottenuto le access condition senza sapere cosa sono... io me le dovevo calcolare a mano...
detto questo, le access condition sono appunto, le CONDIZIONI D'ACCESSO.
Dato un settore e un blocco (generalmente le access condition sono relative ad un settore piu che ad un blocco) le access condition ti dicono come fare a leggere e/o scrivere quel blocco / settore.
Nel tuo esempio hai:
Blocco 0: Read keyA/keyB il resto never.
Vuol dire che per il blocco 0 te non puoi scrivere,incrementare ecc, ma puoi leggere. Puoi leggere usando la keyA o la keyB
la key A o keyB sono le chiavi di accesso per i settori, e sono contenute nel trailer (4° blocco di ogni settore)
ad esempio nel tuo caso la key A è nascosta (primi 12 caratteri del trailer, ma vedi tutto a 0), ma la key B sono gli ultimi 12 caratteri del trailer.
tra i due trailer, gli 8 caratteri servono per scoprire le access conditions ecc...
sempre nella tua immagine, il blocco 1 e 2 del settore 0 hanno permessi di:
scrittura da parte della chiave B, lettura da entrambe le chiavi.
il blocco 3, che è quello speciale ha i permessi di lettura dei bit da entrambe le chiavi, scrittura dei bit solo dalla chiave B,le chiavi non solo leggibili,ma sovrascrivibili dalla chiave B.

Ora, avrai gia spulciato e scoperto che ci sono gia in android le default KeyA and KeyB.
Te puoi cambiare le access conditions e fare quel che vuoi,ma ti consiglio di cambiare la keyB e usarne una tua, e mettere la keyA in sola lettura e visibile da se stessa. Cosi chi vuole smanettare sul tuo tag può leggerlo, vedere come leggere i blocchi, ma non può modificarlo o scriverlo.
Se è solo per fare le prove usa le chiavi di default e non farti tanti problemi.
Per il discorso spazio non ricordo come funziona esattamente, ma te hai 3 blocchi per ogni settore, a parte il primo settore che ha il primo blocco riservato al costruttore del tag.
ho un documento a casa con definiti gli spazi dei tag, se mi ricordo quando torno a casa te lo posto.
se ti serve altro fammi sapere, intato bellina la grafica dell'app, l'ho già vista una simile :D
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Vincenzo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    Windows 7
Re:Qualche chiarimento?!?
« Risposta #2 il: 15 Agosto 2011, 22:47:02 CEST »
0
Leggere le Access conditions? Niente di più facile con "NFC TagInfo"!!

Cosa sono è intuibile, ma come si utilizzano nella pratica? Come si cambiano/gestiscono le KeyA/B?

Per la mia applicazione non mi servono e vorrei sapere se utilizzare quei 256 byte (16blocchi x 16byte=256) per del contenuto (testo).
Non mi interessa proteggere da lettura il contenuto perchè pensavo di comprimere e criptare il testo prima della scrittura. Senza chiave di codifica, un esterno, potrebbe leggere il contenuto ma visualizzerebbe solo caratteri incomprensibili.
La compressione è assolutamente consigliata perchè -da alcune prove effettuate su testo puro- si possono raggiungere valori di compressione prossimi al 50%.

Cosa significa: Increment, Decrement, Trasfer, Restore??


Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Qualche chiarimento?!?
« Risposta #3 il: 15 Agosto 2011, 23:17:02 CEST »
0
Leggere le Access conditions? Niente di più facile con "NFC TagInfo"!!

Cosa sono è intuibile, ma come si utilizzano nella pratica? Come si cambiano/gestiscono le KeyA/B?

Per la mia applicazione non mi servono e vorrei sapere se utilizzare quei 256 byte (16blocchi x 16byte=256) per del contenuto (testo).
Non mi interessa proteggere da lettura il contenuto perchè pensavo di comprimere e criptare il testo prima della scrittura. Senza chiave di codifica, un esterno, potrebbe leggere il contenuto ma visualizzerebbe solo caratteri incomprensibili.
La compressione è assolutamente consigliata perchè -da alcune prove effettuate su testo puro- si possono raggiungere valori di compressione prossimi al 50%.

Cosa significa: Increment, Decrement, Trasfer, Restore??
allora usare quei blocchi non puoi farlo, perchè se cambi i valori al suo interno cambi le chiavi e le access conditions! le AC dipendono appunto da quei 8 bit tra le due chiavi, e spiegarti come cambiarle non è semplice, io ci ho messo 2 giorni a capirlo!
per gli altri cambi, I,C,T,R sono degli stati, che non ho capito bene come usare, se non ho capito male vengono usati in ambiti come carte prepagate o simili...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Vincenzo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    Windows 7
Re:Qualche chiarimento?!?
« Risposta #4 il: 21 Agosto 2011, 17:02:31 CEST »
0
Facendo qualche prova posso evidenziare quanto segue:

I primi 7 bytes del settore 0 sono l'ID del tag.
I primi 52 bytes (compresi i 7 dell'ID) sono riservati (vedremo poi di capire cosa contengono!). Il primo byte utile (per il payload) è il 5° del settore 1.
Quando si scrive un "message" viene terminato con un carattere "fe". I vecchi messaggi, se più lunghi, rimangono parzialmente visibili.
Anche scrivendo un solo carattere ("A" per esempio) il carico è di 8 bytes minimo perchè, per conformità alla norma, occorre specificare il tipo di codifica e la lingua.

Ho usato NFC TagInfo e e NXP TagInfo.
Spero possano essere utile.


PS1. Sono riuscito a comprimere e decomprimere i dati prima della scrittura con Deflate ed Inflate modificando StickyNotes opportunamente. :-P
PS2. Come fa caldo!! 8-)

Offline mariliana

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S
  • Sistema operativo:
    windows vista
Re:Qualche chiarimento?!?
« Risposta #5 il: 10 Novembre 2012, 17:38:17 CET »
0
Mi accodo alle richieste di qualche chiarimento.
Sto cercando di costruire una mia applicazione simile a NPXInfo ed ho a disposizione 3 tipi di tag, che vi allego.
I primi due rispondo alla mia applicazione, quindi mi viene chiesto con quale applicazione voglio leggere il tag e tutto va come deve andare.
è il terzo tag il problema, nonostante abbia configurato l'intent filter per leggere anche i tag NDEF (essendo quest'ultimo di questo tipo), non mi viene proposto di scegliere l'applicazione con il quale leggerlo (nessuna, non solo la mia) e parte direttamente la pagina web scritta all'interno del tag.

ecco come ho configurato l'intent filter:
Codice (XML): [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.test3"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk
       android:minSdkVersion="10"
       android:targetSdkVersion="16" />

    <uses-permission android:name="android.permission.NFC" />

    <uses-feature
       android:name="android.hardware.nfc"
       android:required="true" />

    <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <activity
           android:name=".MainActivity"
           android:label="@string/app_name"
           android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.nfc.action.TAG_DISCOVERED" />
                <action android:name="android.nfc.action.TECH_DISCOVERED" />
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />                
            </intent-filter>
           
           <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />

                <category android:name="android.intent.category.LAUNCHER" />  
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*"/>                              
            </intent-filter>

        </activity>

    </application>

</manifest>

Molto probabilmente mi sfugge qualcosa ma non riesco a capire ne dove ne come. voi siete sicuramente più avanti di me e magari è una cavolata ma io non riesco proprio a capire.
Riuscireste a darmi una mano?

grazie mille

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Qualche chiarimento?!?
« Risposta #6 il: 10 Novembre 2012, 22:47:21 CET »
0
Per me è il secondo intento filter... prova a guardare bene la documentazione,ora non sono a PC e non posso verificare, ma il manifest non mi convince...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline mariliana

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S
  • Sistema operativo:
    windows vista
Re:Qualche chiarimento?!?
« Risposta #7 il: 11 Novembre 2012, 14:42:25 CET »
0
adesso la riguardo, in ogni caso ho provato a mettere un intent unico, in modo che risponda a tutti i tag, ma non funziona cmq.
c'è qualcosa che mi sfugge ma non riesco a capire cosa   :-(

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Qualche chiarimento?!?
« Risposta #8 il: 11 Novembre 2012, 22:12:05 CET »
0
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline mariliana

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S
  • Sistema operativo:
    windows vista
Re:Qualche chiarimento?!?
« Risposta #9 il: 12 Novembre 2012, 20:22:01 CET »
0
sì sì, mi sono basata proprio su quegl'esempi per creare il codice del manifest e dell'activity!

Inoltre, ho anche forse trovato un errore nella documentazione...dico forse perchè dovrei confrontarmi con qlcn

Offline mariliana

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S
  • Sistema operativo:
    windows vista
Re:Qualche chiarimento?!?
« Risposta #10 il: 15 Novembre 2012, 22:40:04 CET »
0
ho trovato la soluzione, mi sono fatta ingannare da quello che leggevo dal tag usando un'altra applicazione.
dovevo mettere nell'intent filter solo <data android:scheme="http"/>