View Full Version : محاسبه اعتبار كارت تلفن با كامپيوتر
سعيد بابا
16 July 2004, 08:57 AM
با اين برنامه ميشه محتويات EEPROM كارت تلفن رو فقط خوند .
http://www.blackman2003.narod.ru/card.zip
با اينكه اين برنامه روسي هست اما ميشه فهميد كه چي به چيه 8)
و طريقه وصل كردن كارت به پرت پرينتر(LPT) هم تو خود برنامه هست يعني اول برنامه رو اجرا كنيد بعد F1 رو بزنيد .
براي تغذيه كارت بايد بك ولتاژ صاف و ثابت حدود 5 تا 5.3 به پايه 1(+) و پايه 5 (-) كارت وصل كنيد
پايه ي از كارت كه بيشترين مساحت رو داره(توي شكل Ground )همون شماره 5 و يا به عبارتي منفي كارت هست كه بايد به پايه 25 پورت موازي كامپيوتر و همچنين به منفي 5 ولت وصل بشه و پابه روبروييش هم پايه 1 هست ( Power توي شكل زير )كه بايد به مثبت 5 ولت وصل بشه
http://smartcardtutor.future.easyspace.com/images/Image17.gif
http://www.sharemation.com/samy9902000/15.gif
5 بايتي كه با رنگ قرمز مشخص هستند نشون دهنده مقدار اعتبار كارت هستند.(byte هاي شماره 9 تا 13 )
4 بايت اول (سطر اول)شامل اطلاعاتي مربوط به كشور سازنده و ...( 20 88 66 99 )شكل بالا
4 بايت دوم(سطر دوم)شماره سريال كارت (64 ـ 87 ـ E7 ـ 90 )شكل بالا
و بايت 9 تا 13 به اعتبار كارت تعلق ميگيره و 3 بايت اخر معمولا FF FF FF ميباشد .
كارتهاي سري قديم داراي استاندارد ISO 7816- 1 وكارتهاي جديد (800 و2000 و5000 توماني)
ISO 7816-2 هستند .
همون طور كه در شكل ميبينيد مقدار بايت 13 ( 00000111 ) هست هر كدوم از اين 8 بيت كه مقدار 1 رو داره برابر با يك واحد كه همون 5 تومن خودمون هست يعني اگر همه خونه هاي اين بايت 1 باشه و بايتهاي 9-10-11-12 هم مقدار صفر باشن اعتبار كارت 40 تومن هست (يا 400 ريال)
ميشه يه فرمول درست كرد :
( تعدادخانه هاي بايت 13 كه مقدار 1 دارند ضرب در 5 ) +
( تعدادخانه هاي بايت 12 كه مقدار 1 دارند ضرب در 40 ) +
( تعدادخانه هاي بايت 11 كه مقدار 1 دارند ضرب در 320 ) =
اعتبار كارت به تومن
براي مثال تو عكس بالا اعتبار كارت 15 تومن هست
و اين كارت هم 1835 تومن اعتبار داره
http://www.sharemation.com/samy9902000/1835.bmp.gif
سعيد بابا
16 July 2004, 03:49 PM
سعيد بابا,
دستت درد نكنه . خيلي عالي بود . 8)
ناقابل بود ما مخلصيم .اگه توضيحي چيزي خواستيد اگه بدونم در خدمتم 8)
تاريخ 27 تير 1383 - 2:57:
اقايون وخانماي عزيز حتما توجه داشته باشند كه اگه يه ذره بيدقتي كنند امكان داره مادربردو كاملا خلاصش كنن(از دست صاحبش)پس موقع وصل كردن كارت به كامپيوتر و مخصوصا وصل كردن ولتاژ به كارت خيلي خيلي دقت كنيد و مبادا 5 ولت كه براي تغذيه كارت هست به كامپيوتر راه پيدا كنه (اتصالي يا هر چيز ديگه)و حواستون باشه كه اين ولتاژ به پايه بقليش (2)اتصال نداشته باشه و فقط و فقط به پايه 1 (پوور)متصل باشه .
bache mahal
17 July 2004, 08:44 AM
ميشه يكم بيشتر توضيح بدي!!!!
kave
17 July 2004, 09:23 AM
جالب بود فقت يك سوال اين برنامه نمي تونه تعغييراتي روي اين كارتها بده
و يك نكته ديگه اينكه آيا اين برنامه فقط مختص كارتهاي تلفنيست؟ :?:
يا........
سعيد بابا
18 July 2004, 06:06 AM
به طور كلي smartcard هارو ميشه به دو دسته تقسيم كرد:
1- كارتهاپي كه فقط EEPROM هستند (نوعي از حافظه ROM كه بوسيله يك جريان نسبتا قوي ميشه محتويات اونو پاك كرد و دوباره اونو پر كرد).
2-كارتهاپي كه داراي ميكرو كنترولر هستند والبنه ممكنه كه يك چيپ EEPROM هم داشته باشند.
http://www.weethet.nl/english/smartcards_types.php
كارتهاي تلفن از نوع (فقط EEPROM )هستن و ساختشون سريعتر و راحتره و ارزونتره
اين كارتها داراي استاندار ISO/IEC 7816-2 كه تعين كننده چيزايي مثل موقعيت پايه ها روي كارت- نوع پروتكل ارسال و يا دريافت اطلاعات و...هستند.( ساير كارتا مثل موبايل-رسيور-بانك
و.. هم از همين استاندارد يا بالاتر استفاده ميكنن)
كارتاي تلفن جديد يه حافظه 128 بيتي دارن كه 64 بيت اون از نوع EPROM هست(نوعي از حافظه ROM كه فقط بوسيله اشعه مادون قرمز قابل پاك شدن هست) به همين دليل اطلاعات اين قسمت از حافظه كارت قابل تغيير نيست و 64 بيت ديگه از نوعEEPROM هست .
برنامه اي كه تو پست اولي هست كل حافظه كارتو ميخونه اما نميتونه رو اون چيزي بنويسه البته
من فكر ميكنم برنامه هاپي كه براي برنامه ريزي ساير smartcard وجود دارن بتونن روي كارتاي تلفن بنويسن اما هنوز امتحان نكردم چون هنوز دنبال يه programmer كارا وز اون ممهمتر ساده
ميگردم كه البته يه برنامه خوبم داشته باشه وكلا تو خطشم عجيب :arrow:
8)
سعيد بابا
26 May 2005, 12:52 AM
ارتیاط با کارت
Reset :
ابتدا پایه ریست به حالت بالا (5+) رفته و سپس پایه ساعت در وضعیت بالا قرار میگیرد در این حالت مقدار شمارنده ادرس, ریست شده و به 0 تبدیل میشود و به ازای هر پالس ساعت مقدار address counter (شمارنده ادرس حافظه )یک واحد افزایش می یابد البته تا مادامی که پایه ریست در وضعیت پایین قرار دارد بعد از ریست و پایین امدن پایه ریست و ساعت, اولین بیت در پایه i/o ظاهر میشود و به ترتیب با هر بالا رفتن ساعت مقدار شمارنده افزایش یافته و با پایین امدن ان مقدار بیت بعدی در i/o قرار میگیرد این بدین معناست که برای خواندن بیت x باید پایه ساعت به تعداد n بار در وضعیت بالا و سپس پایین قرار بگیرد تا شمارنده ادرس حافظه برابر با مقدار x شود در نتیجه خروجی i/o
بلافاصله بعد از پایین امدن ساعت برابر با مقدار بیت x میشود
Write :
بالا بردن پایه ریست در حالی که ساعت در وضعیت پایین قرار دارد , به معنای غیر فعال کردن شمارنده اردس میباشد در این حالت بعد از پایین امدن ریست , ساعت بمدت حداقل 10 میلی ثانیه در وضع بالا قرار میگیرد و مقدار بیتی که شمارنده ادرس به ان اشاره میکند به صفر تبدیل میشود یا به عبارتی عمل Write انجام میشود و بعد از پایین امدن ساعت مقدار بیت جدید که 0 میباشد در i/o قرار میگیرد و همچنین شمارنده ادرس دوباره فعال میشود و با پالس ساعت بعدی بطور معمول یک واحد افزایش خواهد یافت
unit counter :
معمولا 4 بايت به اعتيار كارت اختصاص مي يابد كه شامل بايتهاي 10 و 11و12و13 است براي كاهش يك واحد از اعتبار, يكي از بيتهاي بايت 13 از مقدار 1 به 0 تبديل ميشود در نتيجه بعد از 8 بار كاهش اعتبار, مقدار بايت 13 برابر 0 ميشود و براي كاهش اعتبار كارت بايد يك بيت از بايت قبلي (12) به 0 تبديل شود و در مقابل 8 بيت بايت13 به 1 مبدل شود به زبان ساده هر يك واحد (بيت ویا خانه) از بايت 12 برابر با 8 واحد از بايت13 و همينطور هر واحد از بايت 11 برابر با 8 واحد بايت 12 به اين ترتيب بايت13 برابر 8 واحد و بايت 12 برابر 8x8 واحد و بایت 11 برابر( 8x( 8x8 واحد و بایت
10 برابر ( ( 8x(8x(8x8 واحد که مجموعا 4680 واحد حاصل میشود
همانطور که گفته شد بعد از 8 بار كاهش اعتبار , همه خانه های (بیتهای) بايت 13 برابر 0 ميشود در این شرایط با استفاده از WRITECARRY یک بیت از بایت مورد نظر (12) را پاک (WRITE) میکنیم و در مقابل 8 بیت بایت بعدی(13) به 1 تبدیل میشوند و اکنون میتوان یک واحد (بیت) از بایت 13 را بمنظور کاهش اعتبار به 0 تیدیل کرد ((WRITE) واین در مورد بایتهای 11 و 10 نیز صادق است
WriteCarry :
در حالی که ساعت در وضعیت پایین قرار دارد ریست بالا میرود که باعث غیر فعال شدن شمارشگر میشود بعد از پایین امدن ریست , ساعت بمدت 10 میلی ثانیه بالا میرود و خانه ( بیت) مورد نظر 0 میشود با پایین امدن ساعت, 0 در i/o ظاهر میشود (پایه i/o در وضعیت پایین قرار میگیرد ) ومجددا شمارشگر فعال میشود اما قبل از پالس بعدی ساعت
ریست بالا میرود و این به معنی در خواست WriteCarry از کارت وهمچنین غیر فعال کردن شمارشگر ادرس می باشد
در نتیجه بعد از پایین امدن ریست پایه ساعت بمدت 10 میلی ثانیه در وضعیت بالا باقی میماند تا کارت بتواند بایت مورد نظر را به FF$ تبدیل کند(در همه خانه های ان مقدار 1 را قرار دهد)
ریست = Rst = Reset
ساعت = Clk = Clock
بالا = +5
پایین = 0
http://www.epanorama.net/documents/..._chips_work.txt
Scorpio
26 May 2005, 02:40 AM
سعيد جان از اطلاعات آپديت شدت كه در دسترس قرار دادي خيلي ممنون ... فقط اگه لطف كني اون عكسهاي قديم را هم آپديت كني كه قابل ديدن باشه و يكم توضيح بيشتري بدي ممنون ميشم
.
.
.
موفق باشي :o
سعيد بابا
26 May 2005, 10:49 PM
در مورد عكسها ظاهرا امكان اديت پست اول وجود ندارد
خب همونطور كه در پست اول گفته شد برنامه اي كه معرفي شد طبق روش هايي كه كه در پست قيلي معرفي شد
از طريق اتصال كارت تلفن با پرت موازي كامپيوتر اطلاعات درون كارت را به صورت بيت هاي پشت سر هم خوانده و در پنجره برنامه نشان ميدهد
براي اينكار از پايه هاي شماره 2 و 3 و 15 و 25 پرت موازي كامپيوتر براي ارتباط با كارت تلفن استفاده شده است
بدين صورت كه پايه شماره 2 به پايه ريست كارت تلفن وصل ميشود و پايه شماره 3 به پايه ساعت كارت و پايه 15 به پايه
i/o كارت تلفن و در اخر پايه 25 كه منفي و بدنه كامپيوتر هست به منفي كارت تلفن متصل ميشود
با اتصال منبع تغذيه با ولتاژ 4 تا 5 ولت و جريان چند ميلي امپر (بوسيله سري كردن مقاومت1 يا2 كيلو اهم) به كارت
و اجراي برنامه و فشردن كليد Enter برنامه ابتدا پايه 3 و 2 كه متصل به پايه هاي ساعت و ريست كارت هستند در حالت بالا قرار ميدهد كه با اينكار كارت طبق گفته هاي پست قيلي كارت ريست ميشود و سپس هر دو را پايين مي اورد
بلافاصله بعد از اينكه ساعت پايين امد و ضعيت پايه شماره 15 پرت موازي كه متصل به i/o كارت تلفن هست خوانده ميشود و به عنوان بيت اول از 256 بيت موجود در كارت تلفن نشان داده ميشود و به همين ترتيب با بالا بردن ساعت و سپس پاييين اوردن ان و خوان و بلافاصله خواندن وضعيت i/o كارت تا 256 بيت خوانده ميشود و در پنجره برنامه بصورت دسته هاي 8 تايي (بايت) و در هر سطر 32 بيت يا 4 بايت نشان داده ميشود
همانطور كه در فايل پيوست شده در پست قبلي( به زبان انگليسي) بيان شده است سيستم كارت تلفن طوري طراحي شده است كه فقط مجازه به كاهش اعتبار كارت هستيم و همان طور كه گفته شد طبق فرمول WriteCarry فقط هنگامي ميتوان بيتهاي يك بايت (بايت هاي 10و11و12و13 ) را به 1 تيديل كرد كه در ازاي ان يك خانه از بايت قبل از ان پاك شده باشد (از 1 به 0 مبدل شود) به همين دليل نميتوان اعتيار كارت را افزايش داد
kavehmb
28 May 2005, 12:50 AM
با تشكر - ميشه در مورد emulator توضيح بدي ؟
سعيد بابا
10 July 2005, 10:17 PM
در مورد امولاتور که عزیز من دیگه من چی بگم
با دانستن روش برقراری ارتباط با کارت و البته انالیز کردن این ارتباط بوسیله یک (logic analyzer ) مثل سیزین اینترفیس و در اخر پیاده سازی این الگوریتم (که چیزی شبیه به سیستم عامل درون کارت می باشد ) بر روی یک میکرو کنترلر میتوان یک امولاتور ساخت
برای اطلاعات بیشتر از google استفاده کنید
در جستجوی خود میتوتنید از کلمه telecardr به همراه emulator و ... استفاده کنیدسعيد بابا
vBulletin v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.