Greetings clever friends
My question is this
From the examples of writing and reading with the NFC library that are in the forum, I have seen many questions and problems with use.
I have an example that is partly functional. You can read sector 0 and block 0,1,2,3, until then perfect.
But if I try to read Sector 1 blocks 4,5,6,7 it is not successful, even though the key authentication is correct in both transactions.
Look . Try to read Sector =0 Block = 0
 
Techs: [android.nfc.tech.MifareClassic, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
c7 63 d8 33
UUID ok
ID c7 63 d8 33
Connect: true
 
Block Read 0 success true Flag 0
Sector 0 Block 0 Result= c763d8334f0804006263646566676869
Success, even on block 01,2,3
\----------------------------------------------------------------------------------------/
 
Now i will try to read Sector 1, blocks 4
 
Techs: [android.nfc.tech.MifareClassic, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
c7 63 d8 33
UUID ok
ID c7 63 d8 33
Connected: true
authentication del sector. Success=true, Flag=0
Sector =1 Block = 4 MSG
Block Read 4 Estado false Flag 0
cannot read
\------------------------------------------------------------------------------------------/
As you can see, the authentication is fine according to what can be seen, because it leaves only sector 0, the others
are not, the authentication is fine, I use a new 1K Midface card
 
In writing despite having successful sector authentication and the correct block number
Sector 0, block 1
The result
 
Techs: [android.nfc.tech.MifareClassic, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
c7 63 d8 33
UUID ok
ID c7 63 d8 33
Connected: true
authentication del sector. Success=true, Flag=0
Sector =0 Block = 1
writing was = false, Flag=0
Write Error: null
I would like to know if anyone has already managed to overcome these problems and share the solution.
I am fully available to pay for help. Thank you
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
		
	
	
		 
	
			
			My question is this
From the examples of writing and reading with the NFC library that are in the forum, I have seen many questions and problems with use.
I have an example that is partly functional. You can read sector 0 and block 0,1,2,3, until then perfect.
But if I try to read Sector 1 blocks 4,5,6,7 it is not successful, even though the key authentication is correct in both transactions.
Look . Try to read Sector =0 Block = 0
Techs: [android.nfc.tech.MifareClassic, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
c7 63 d8 33
UUID ok
ID c7 63 d8 33
Connect: true
Block Read 0 success true Flag 0
Sector 0 Block 0 Result= c763d8334f0804006263646566676869
Success, even on block 01,2,3
\----------------------------------------------------------------------------------------/
Now i will try to read Sector 1, blocks 4
Techs: [android.nfc.tech.MifareClassic, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
c7 63 d8 33
UUID ok
ID c7 63 d8 33
Connected: true
authentication del sector. Success=true, Flag=0
Sector =1 Block = 4 MSG
Block Read 4 Estado false Flag 0
cannot read
\------------------------------------------------------------------------------------------/
As you can see, the authentication is fine according to what can be seen, because it leaves only sector 0, the others
are not, the authentication is fine, I use a new 1K Midface card
In writing despite having successful sector authentication and the correct block number
Sector 0, block 1
The result
Techs: [android.nfc.tech.MifareClassic, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
c7 63 d8 33
UUID ok
ID c7 63 d8 33
Connected: true
authentication del sector. Success=true, Flag=0
Sector =0 Block = 1
writing was = false, Flag=0
Write Error: null
I would like to know if anyone has already managed to overcome these problems and share the solution.
I am fully available to pay for help. Thank you
			
				Write \ Read Midafare clasic:
			
		
		
		#Region  Project Attributes
    #ApplicationLabel: NFC_SITULLC
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region
#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region
Sub Process_Globals
    Private prevIntent As Intent
    Public sector As Int=0
    Public Block As Int = 0
    Private message As String =""
    Private evento As Boolean
  
End Sub
Sub Globals
    Private nfc As NFC
    Private TagTech As TagTechnology
    Private LeerBlock As Button
    Private Escribir_block As Button
End Sub
 
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")
    evento= True ' try read\write
End Sub
Sub Activity_Resume
    Try
        nfc.EnableForegroundDispatch
        Dim si As Intent = Activity.GetStartingIntent
        If si.IsInitialized = False Or si = prevIntent Then Return
        prevIntent = si
        Dim tag As JavaObject
        If si.Action.EndsWith("TECH_DISCOVERED") Or si.Action.EndsWith("NDEF_DISCOVERED") Or si.Action.EndsWith("TAG_DISCOVERED") Then
            Dim techs As List = nfc.GetTechList(si)
            Log($"Techs: ${techs}"$)
      
            Dim Id0() As  Byte
            Dim Id(8) As  String
            Dim jTagTech As JavaObject
            'NfcA
            If techs.IndexOf("android.nfc.tech.NfcA")> -1 Then
                TagTech.Initialize("TagTech", "android.nfc.tech.MifareClassic", si)
                TagTech.Connect
                jTagTech  = TagTech
              
                tag   = jTagTech.RunMethod("getTag", Null)
                Id0   = tag.RunMethod("getId", Null)
              
                If Id0(0)>0 Or Id0(1)>0 Or Id0(2)>0 Or Id0(3)>0  Then
                  
                    Id(0)=    Right("0" & Bit.ToHexString(ToUnsigned(Id0(0))),2)
                    Id(1)=    Right("0" & Bit.ToHexString(ToUnsigned(Id0(1))),2)
                    Id(2)=    Right("0" & Bit.ToHexString(ToUnsigned(Id0(2))),2)
                    Id(3)=    Right("0" & Bit.ToHexString(ToUnsigned(Id0(3))),2)
              
                    Log(Id(0)&" "&Id(1)&" "&Id(2)&" "&Id(3))
                    Log("UUID ok")
                    LogColor("Numero de tarjeta "& Id(0)&" "&Id(1)&" "&Id(2)&" "&Id(3),0xFF0F26FC)
                Else
                    LogColor("Error en Serial de Tarjeta ",0xFFFF0000)
                End If
            Else
                ToastMessageShow("Tag does not support Ndef.", True)
            End If
        End If
    Catch
        Log(LastException)
        LogColor("Erro 1 "&LastException,0xFFFF0000)
    End Try
End Sub
Private Sub TagTech_Connected (Success As Boolean)
    LogColor($" Conectado : ${Success}"$,0xFF001FFF)
 
    Dim key() As Byte = Array As Byte(0xA0,0xA1,0xA2,0xA3,0xA4,0xA5)
  
    sector =0
    Block  =1
  
    If Success = False Then
        ToastMessageShow("Error connecting to tag", True)
        Log(LastException)
    Else
      
        Try 
            TagTech.RunAsync("Authenticate", "authenticateSectorWithKeyA", Array(sector,  key), 0)
             Catch
            ToastMessageShow("Ath1:"&LastException,False)
        End Try
 
    End If
End Sub
Private Sub Escribir_block_Click
End Sub
 
Private Sub Authenticate_RunAsync (Flag As Int, Success As Boolean, Result As Object)
  
    Log($"Autenticacion del sector . Success=${Success}, Flag=${Flag}"$)
  
    If Success Then
      
        Log( "Sector  ="& sector& "    Block  = "& Block & " MSG "&message)
      
        Try
          
            If evento  Then
              
                TagTech.RunAsync("readBlock0","readBlock", Array(Block), 0)
              
                Else
                  
                TagTech.RunAsync("writeBlock", "writeBlock", Array(Block,message), 0)
            End If
 
        Catch
            ToastMessageShow("Read2:"&LastException,False)
            LogColor("Read2:"&LastException,0xFFFF0000)
        End Try
    Else
        LogColor("Read error flag :"& Flag,0xFFFF0000)
    End If
End Sub
Private Sub Authenticate1_RunAsync (Flag As Int, Success As Boolean, Result As Object)
  
    Log($"Autenticacion del sector . Success=${Success}, Flag=${Flag}"$)
    Block=2
    If Success Then
        Log( "Sector  ="& sector& "    Block  = "& Block )
        Try
          
            TagTech.RunAsync("readBlock0","readBlock", Array(Block), 0)
          
        Catch
          
            ToastMessageShow("Read2:"&LastException,False)
            LogColor("Read2:"&LastException,0xFFFF0000)
          
        End Try
    Else
        LogColor("Read error flag :"& Flag,0xFFFF0000)
    End If
End Sub
Private Sub Authenticate2_RunAsync (Flag As Int, Success As Boolean, Result As Object)
  
    Log($"Autenticacion del sector . Success=${Success}, Flag=${Flag}"$)
    Block=3
    If Success Then
        Log( "Sector  ="& sector& "    Block  = "& Block )
        Try
            TagTech.RunAsync("readBlock0","readBlock", Array(Block), 0)
          
        Catch
            ToastMessageShow("Read2:"&LastException,False)
            LogColor("Read2:"&LastException,0xFFFF0000)
        End Try
    Else
        LogColor("Read error flag :"& Flag,0xFFFF0000)
    End If
End Sub
Private Sub writeBlock_RunAsync (Flag As Int, Success As Boolean, Result As Object)
    LogColor($"Escritura de block fue =${Success}, Flag=${Flag}"$,0xFF0037FF)
  
    If Success Then
        LogColor("Escritura  ok : "&Result ,0xFF0037FF)
    Else
        LogColor("Escritura  Error : "&Result ,0xFFFF0000)
      
      
    End If
End Sub
Private Sub readBlock0_RunAsync(Flag As Int, Success As Boolean, Result As Object)
  
    LogColor("Block Read "&Block & "  Estado "&Success &" Flag "&Flag ,0xFF0037FF)
  
  
'    Log(LastException)
  
    If Success Then
        If Result<>Null Then
            Dim myBlock() As Byte = Result
            Dim sb As StringBuilder
            sb.Initialize
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(0))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(1))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(2))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(3))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(4))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(5))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(6))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(7))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(8))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(9))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(10))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(11))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(12))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(13))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(14))),2))
            sb.Append(Right("0" & Bit.ToHexString(ToUnsigned(myBlock(15))),2))
                  
            Log("Contenido Sector "§or &" Block  "& Block &"  "  &sb)
            
            TagTech.Close ' important'
          
        End If
    Else
        Log("cannot read")
    End If
End Sub
Sub Activity_Pause (UserClosed As Boolean)
    nfc.DisableForegroundDispatch
End Sub
Sub ToUnsigned(b As Byte) As Int
    Dim x As String
    x= Bit.And(0xFF, b)
    Return x
End Sub
Sub Right(Text As String, Length As Int) As String
    If Length>Text.Length Then Length=Text.Length
    Return Text.SubString(Text.Length-Length)
End Sub
 
\------------------------------------------------------------------------------------------
[B]I would like to know if anyone has already managed to overcome these problems and share the solution.
I am fully available to pay for help.
Thank you[/B]Attachments
			
				Last edited: 
			
		
	
								
								
									
	
		
			
		
	
								
							
							 
				 
 
		 
			 
 
		 
 
		 
 
		 
 
		