日期:2014-05-18  浏览次数:20805 次

IC卡通不过密码验证
大致的步骤是
A、选定要操作的扇区(共有16个扇区);
B、装载密码,调用rf_load_key()
C、验证密码,调用rf_authentication()
D、进行操作,包括读写及值操作。
E、调用rf_halt()

我现在能加载密码,但是总是通不过验证。现在我写死的密码是_Key = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },不知道是不是这些写,还是从哪里读出密码再加载。但是不通过验证就不能读卡里的数据。。。请做过这方面程序的朋友帮帮忙。。我用的是明华KRF35读卡器,M1射频卡。



C# code

                        byte[] _Key = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
                        byte sector = 0;
                        string strErrMsg = string.Empty;

                        for (int i = 0; i < 16; i++)
                        {
                            if (rf_load_key(icDev, byteCardFindMode, sector, _Key) != 0)
                            {
                                strErrMsg += sector.ToString() + "扇区装载密码失败\r\n";
                            }
                            else
                            {
                                if (rf_authentication(icDev, byteCardPwdMode, sector) == 0)//进行验证
                                {                                   
                                    if (rf_read(icDev, (byte)(sector * 4 + 1), ref _Data) == 0)
                                    {
                                         DisplayInfo(rtbICCard, System.Text.Encoding.Default.GetString(_Data));//将读出的信息显示到RichTextBox中
                                    }
                                }
                                else
                                {
                                    strErrMsg += sector.ToString() + "扇区密码验证失败\r\n";
                                }
                            }
                            sector++;
                        }

                        //如果有错误信息则提示
                        if (strErrMsg != "")
                        {
                            MessageBox.Show(strErrMsg,"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
                            bolIsICCardFound = false;
                            rf_halt(icDev);
                        } 



------解决方案--------------------
我不要分,我想看看你的程序。哈哈