Kartenlesegerät/LogIn Card auslesen?

  • VB.NET

Es gibt 84 Antworten in diesem Thema. Der letzte Beitrag () ist von Sio_x.

    Help please

    Hallo liebe Community ich weiß dieser Thread ist von 2010 aber ich bewunder was ihr geleistet habt und bin dafür sehr dankbar
    nun aber zu meiner frage und zwar hat DJ Re-Dark ja den myPasssave.NET geschrieben und mich würde interessieren wie er es hingekriegt hat die Listview einträge auf die karte zu senden und auch wieder auszulesen.

    Ich wäre echt froh wenn sich 3 Jahre später noch einmal wer meldet
    vielen dank im Voraus

    Mausekeks :)
    Brain is Loading: 35%
    Nochmal 8 Jahre später. :D

    Also er hat die oi32.dll angezapft. Ferner die internen Funktionen.

    Quellcode

    1. Export Table:
    2. Name: oi32.dll
    3. Time Date Stamp: 0x4CDE8B41 (13.11.2010 14:57:37)
    4. Version: 0.00
    5. Ordinal Base: 1
    6. Number of Functions: 6
    7. Number of Names: 6
    8. Ordinal Entry Point Name
    9. 1 0x00006980 OiChangePassword
    10. 2 0x000068D0 OiInitCard
    11. 3 0x00006A60 OiLogin
    12. 4 0x00006750 OiReadFile
    13. 5 0x00006A30 OiResetPassword
    14. 6 0x00006810 OiWriteFile


    Die Karte hat er dann über die OiInitCard initiiert ohne Argumente.

    VB.NET-Quellcode

    1. Public Shared Function initCard() As String
    2. Return txtCard.CardError(OI.NativeMethods.OiInitCard())
    3. End Function


    Das Schreiben und Lesen der Infos wird dann über OiWriteFile und OiReadFile erledigt.
    Hier mal der IL Code in VB[/vbnet]

    VB.NET-Quellcode

    1. Public Shared Function LoadFromCard(Optional first As Boolean=False) As String
    2. Dim cMemRef As OI.CMemRef = Nothing
    3. cMemRef.m_pData = Marshal.AllocHGlobal(1024)
    4. cMemRef.m_nBufferLen = 1024UI
    5. Dim arg_2C_0 As Byte = 17
    6. Dim cMemRef2 As OI.CMemRef = cMemRef
    7. Dim num As UInteger = OI.NativeMethods.OiReadFile(arg_2C_0, cMemRef2)
    8. Dim flag As Boolean = CULng(num) <> 0UL
    9. Dim result As String
    10. If flag Then
    11. txtCard.CardError(num)
    12. result = Conversions.ToString(False)
    13. Else
    14. ' The following expression was wrapped in a checked-expression
    15. result = Marshal.PtrToStringAnsi(cMemRef.m_pData, CInt(cMemRef.m_nBufferLen)).Substring(0, 1000).TrimEnd(New Char(-1) {})
    16. End If
    17. Return result
    18. End Function
    19. Public Shared Function SaveToCard(text As String) As Boolean
    20. Dim cMemRef As OI.CMemRef = Nothing
    21. cMemRef.m_pData = Marshal.AllocHGlobal(1024)
    22. cMemRef.m_nBufferLen = 1024UI
    23. Dim arg_2D_0 As Byte = 17
    24. Dim cMemRef2 As OI.CMemRef = cMemRef
    25. Dim num As UInteger = OI.NativeMethods.OiReadFile(arg_2D_0, cMemRef2)
    26. Dim flag As Boolean = CULng(num) <> 0UL
    27. Dim result As Boolean
    28. If flag Then
    29. txtCard.CardError(num)
    30. result = False
    31. Else
    32. ' The following expression was wrapped in a checked-expression
    33. Dim str As String = Marshal.PtrToStringAnsi(cMemRef.m_pData, CInt(cMemRef.m_nBufferLen)).Substring(1000, 24)
    34. While text.Length < 1000
    35. text += " "
    36. End While
    37. cMemRef.m_pData = Marshal.StringToHGlobalAnsi(text + str)
    38. Dim arg_AF_0 As Byte = 17
    39. cMemRef2 = cMemRef
    40. num = OI.NativeMethods.OiWriteFile(arg_AF_0, cMemRef2)
    41. flag = (CULng(num) <> 0UL)
    42. If flag Then
    43. txtCard.CardError(num)
    44. result = False
    45. Else
    46. result = True
    47. End If
    48. End If
    49. Return result
    50. End Function