рдХреАрд╡ рдореЗрдЯреНрд░реЛ рдХреЗ рд╕рдВрдкрд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ?

рдХреАрд╡ рдореЗрдЯреНрд░реЛ рдореЗрдВ рд╕рдВрдкрд░реНрдХ рд░рд╣рд┐рдд рдХрд╛рд░реНрдб 2007 ( рдореЗрдЯреНрд░реЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ, рдпреВрдХреНрд░реЗрдиреА рдкрд░ рдЬрд╛рдирдХрд╛рд░реА) рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рд▓рдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдХреЗрд╡рд▓ 2008 рдХреЗ рдЕрдВрдд рддрдХ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЖрдЬ рддрдХ, рджреЛ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯрд┐рдХрдЯ рд╣реИрдВ: рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдЯрд┐рдХрдЯ, рдФрд░ рдпрд╛рддреНрд░рд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЯрд┐рдХрдЯред рдпрд╛рддреНрд░рд╛ рдХрд╛рд░реНрдб MIFARE рдХреНрд▓рд╛рд╕рд┐рдХ 1K рдирд┐рдХрдЯрддрд╛ рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдлреЛрдЯреЛ - Metromuseum.net

MIFARE рдХреНрд▓рд╛рд╕рд┐рдХ рдЪрд┐рдк рднреЗрджреНрдпрддрд╛рдПрдБ 2007 рдореЗрдВ рдЬреНрдЮрд╛рдд рд╣реБрдИрдВред рднреЗрджреНрдпрддрд╛ рдЦреЛрдЬ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЗрддрд┐рд╣рд╛рд╕ рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдЦ, рд╣рд╛рд▓рд╛рдВрдХрд┐ 2008, рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдФрд░ рдпрд╣ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рдорд┐рд▓рд╛рдХрд░, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╛рддреНрд░рд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛рддреНрд░рд╛ рдХрд╛рд░реНрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреАрд╡ рдореЗрдЯреНрд░реЛ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрд╕реНрд╡реАрдХрд░рдг: рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд╖рд┐рддрд┐рдЬ рдХреЛ рд╡реНрдпрд╛рдкрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИред


рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ


рд╕рдВрдкрд░реНрдХ рд░рд╣рд┐рдд рдХрд╛рд░реНрдб рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

рд░реАрдбрд░



рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо libnfc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдкрд╛рдардХ рдХреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдВрдЧрдд рд╣реИред рд╣рдо рд╕рдВрдЧрддрддрд╛ рдкреГрд╖реНрда рдкрд░ рдЙрдкрдпреБрдХреНрдд рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦрд░реАрджрддреЗ рд╣реИрдВред рдореИрдВ рдПрдХ PN533 v2.7 рдЪрд┐рдк (рдлреЛрдЯреЛ рдореЗрдВ, рдореИрдВрдиреЗ $ 35 рдХреЗ рд▓рд┐рдП eBay рдкрд░ рдЦрд░реАрджрд╛) рдХреЗ рд╕рд╛рде SCL3711 рд░реАрдбрд░ рдкрд░ рдмрд╕ рдЧрдпрд╛ред

Libnfc рдкреБрд╕реНрддрдХрд╛рд▓рдп

рдореИрдВ Ubuntu 12.04 рдХреЗ рд▓рд┐рдП libnfc рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдЯ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред

рд╣рдо рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдФрд░ рдПрд╕рд╡реАрдПрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИрдВ):
sudo apt-get install рддреЛрдбрд╝рдлреЛрдбрд╝ dpkg-dev рдбреАрд╢реЗрд▓рдкрд░ dh-autoreconf libtool

Libnfc рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
sudo apt-get install libusb-dev libpcsclite-dev

рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ (1.6.0-rc1), рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕реЗ рдбреАрдм рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:
wget http: // libnfc.googlecode.com / files / libnfc-1.6.0-rc1.tar.gz
tar -xvzf libnfc-1.6.0-rc1.tar.gz
cd libnfc-1.6.0-rc1 /
svn рдЪреЗрдХрдЖрдЙрдЯ http: // libnfc.googlecode.com / svn / рдЯреИрдЧ / libnfc-1.6.0-rc1 / рдбреЗрдмрд┐рдпрди

рдореИрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрдмрд┐рдпрди / рд░реВрд▓реНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ dh_auto_configure рд▓рд╛рдЗрди рдореЗрдВ --enable-debug рд╕реНрд╡рд┐рдЪ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

рд╣рдо рдкреИрдХреЗрдЬ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ:
dpkg-buildpackage -b -us -uc

рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
sudo apt-get install libusb- 0.1 - 4 libpcsclite1 libccid PCcd
sudo dpkg -i .. / libnfc * .deb

рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдардХ рдХреЛ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ (рдЙрд╕рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ) рдПрдХ рдХрд╛рд░реНрдб рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо nfc- рд╕реВрдЪреА рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рдирд╢реАрд▓рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╛рдардХреЛрдВ рдФрд░ рдХрд╛рд░реНрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкрд╛рдардХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ:
$ nfc- рд╕реВрдЪреА
nfc- рд╕реВрдЪреА libnfc 1.6.0-rc1 (rexported) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ
NFC рдбрд┐рд╡рд╛рдЗрд╕: SCM рдорд╛рдЗрдХреНрд░реЛ / SCL3711-NFC рдФрд░ RW - PN533 v2.7 (0x07) рдЦреЛрд▓рд╛ рдЧрдпрд╛
ATQA (SENS_RES): 00 04
рдпреВрдЖрдИрдбреА (рдПрдирдПрдлрд╕реАрдЖрдИрдбреА тАЛтАЛ1): 5 рдмреА рдмреА 5 5 рдПрдл 28
SAK (SEL_RES): 08

рдпрджрд┐ рдЖрдкрдиреЗ рдРрд╕рд╛ рдХреБрдЫ рджреЗрдЦрд╛, рддреЛ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ " libnfc.driver.pn53x_usb USB рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╕реНрдд) рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде " рдорд┐рд▓реА ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ Ubuntu 12.04 рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, PN533 рдЪрд┐рдк рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреНрд░рд╛рдЗрд╡рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ libnfc рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ " sudo modprobe -r pn533 " рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Mfoc рдЙрдкрдпреЛрдЧрд┐рддрд╛

рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ nfc-tools рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ mfoc рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
svn рдЪреЗрдХрдЖрдЙрдЯ http: // nfc-tools.googlecode.com / svn / trunk / mfoc / mfoc
рд╕реАрдбреА mfoc
dpkg-buildpackage -b -us -uc
рд╕реБрдбреЛ dpkg -i mfoc_0.10.2pre3.1- 0 _amd64.deb


рдЕрдВрджрд░ рджреЗрдЦреЛ


рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рднрд╛рдЧ

MIFARE рдХреНрд▓рд╛рд╕рд┐рдХ 1K рдХрд╛рд░реНрдб рдореЗрдВ 1 KB рдореЗрдореЛрд░реА рд╣реИ, рдЬреЛ 16 рд╕реЗрдХреНрдЯрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдХреНрдЯрд░ рдореЗрдВ 16 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ 4 рдмреНрд▓реЙрдХ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рджреЛ 48-рдмрд┐рдЯ рдХреБрдВрдЬреА рдП рдФрд░ рдмреА (рдЬреЛ 4 рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ) рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдкрд╛рдардХ рдХреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА (рдП рдпрд╛ рдмреА) рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИред Mfoc рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рднреЗрджреНрдпрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдХрд┐рд╕реА рдХреБрдВрдЬреА рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж, mfoc рджреВрд╕рд░реЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдирдП рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдХреЗ 32 рдмрд┐рдЯреНрд╕ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИред рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╛рдпрд░рд▓реЗрд╕рд▓реА рдкрд┐рдХрдкреЙрдХреЗрдЯрд┐рдВрдЧ рдП рдорд┐рдлрд╛рд░реЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд╛рд░реНрдб ред

рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛

рд╣рдореЗрдВ mfoc рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдб рдХреА рдЪрд╛рдмреА рдорд┐рд▓рддреА рд╣реИ:
mfoc -O keys.mfd

рд▓рдЧрднрдЧ рдПрдХ рдорд┐рдирдЯ рдмрд╛рдж, рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдорд┐рд▓реЗрдЧрд╛ " рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕рдлрд▓, рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдбрдВрдкрд┐рдВрдЧ! "ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдореИрдк рдХреА рдЪрд╛рдмрд┐рдпрд╛рдБ keys.mfd рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВред рд╕рднреА рдХрд╛рд░реНрдбреЛрдВ рдХреА рдЪрд╛рдмрд┐рдпрд╛рдВ рд╕рдорд╛рди рд╣реИрдВ , рдФрд░ рд╡реИрд╕реЗ, рд╡реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджреНрд╡рд╛рд░рд╛) ред

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рдбрдВрдк рдореИрдк рдХреЛ рдорд░реНрдЬ рдХрд░реЗрдВ:
nfc-mfclassic r a new00-04-11.mfd keys.mfd

рд╣рдо рдореЗрдЯреНрд░реЛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рдпрд╛рддреНрд░рд╛ рдХреЗ рдмрд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рдпрд╛ рдЦрд╛рддреЗ рдХреЛ рдКрдкрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдбрдВрдк рдорд┐рд▓рддреЗ рд╣реИрдВред

рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдореИрдВ рд▓рдВрдмреЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдореИрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рд░рд╣реВрдВрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдореЗрдореЛрд░реА рд╣реЗрдбрд░ рдХреЗ рджреЛ рд╕реЗрдХреНрд╢рди рдФрд░ рдСрдкрд░реЗрд╢рди рд╣рд┐рд╕реНрдЯреНрд░реА рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд╛рд░реНрдб рдХрд╛ рд╣реЗрдбрд░ 0x2D0 рдФрд░ 0x2E0 рдкрддреЗ рдкрд░ рджреЛ рд╕рдорд╛рди рдмреНрд▓реЙрдХ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдХрд╛рд░реНрдб рд▓реЗрдирджреЗрди рдХреА рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛, рдпрд╛рддреНрд░рд╛ рдХреА рд╢реЗрд╖ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЕрдВрддрд┐рдо рдСрдкрд░реЗрд╢рди рдХреА рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝, рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕реЗрдХрдВрдб 2 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рдиреАрдЪреЗ рдХреЛрдб рджреЗрдЦреЗрдВ)ред

рдкрд┐рдЫрд▓реЗ рдЫрд╣ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ 0xC0, 0xD0, 0xE0, 0x100, 0x110, 0x120 рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдЯрд░реНрдорд┐рдирд▓ рдирдВрдмрд░ рдореЗрдЯреНрд░реЛ рд╕реНрдЯреЗрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдПрдХ рдЕрд▓рдЧ, рд▓реЗрдХрд┐рди рдЙрд╕реА рдЕрджреНрднреБрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВред

рдЙрджрд╛рд╣рд░рдг


рдПрдХ рдЕрдЬрдЧрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬреЛ nfc-mfclassic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдбрдВрдк рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ:
#! / usr / bin / env рдЕрдЬрдЧрд░
рдЖрдпрд╛рдд sys
рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЗрдВрдкреЛрд░реНрдЯ рдЕрдирдкреИрдХ рд╕реЗ
рдЖрдпрд╛рдд рд╕реЗ

рдорд┐рд▓ get_crc ( рдмреНрд▓реЙрдХ ) :
"" "XOR рд╕рднреА рдмрд╛рдЗрдЯреНрд╕ рдЗрди рдмреНрд▓реЙрдХ" "
рд╡рд╛рдкрд╕реА рдХрдо рдХрд░реЗрдВ ( рд▓рдВрдмреЛ x, y: x ^ ord ( y ) , рдмреНрд▓реЙрдХ, 0 )

def get_bits ( i, s, l ) :
"" "L рдмрд┐рдЯреНрд╕ рдХреЛ s" "рдкрд░ рд╢реБрд░реВ рдХрд░реЗрдВ
рдорд╛рд╕реНрдХ = ( рез << ( рдПрд▓ ) ) - рез
int ( ( i >> s ) рдФрд░ рдорд╛рд╕реНрдХ рд▓реМрдЯрд╛рдПрдВ )

рдкреНрд░рд┐рдВрдЯ Print_info ( рдбреЗрдЯрд╛ ) :
# рдХрд╛рд░реНрдб рдирдВрдмрд░
рд╕рдВрдЦреНрдпрд╛ = рдЕрдирдкреИрдХ ( '<4H' , рдбреЗрдЯрд╛ [ 0x46: 0x4E ] )
"рдХрд╛рд░реНрдб #: tt {3: 04X} {2: 04X} {1: 04X} {0: 04X}" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( * рд╕рдВрдЦреНрдпрд╛ )

# рдХрд╛рд░реНрдб рд╣реИрдбрд░ рдмреНрд▓реЙрдХ
рд╣реИрдбрд░_рдмреНрд▓реЙрдХ = рдбреЗрдЯрд╛ [ 0x2D0: 0x2E0 ]
crc_2d = get_crc ( рд╣реИрдбрд░_рдмреНрд▓реЙрдХ )
crc_2e = get_crc ( рдбреЗрдЯрд╛ [ 0x2E0: 0x2F0 ] )
"nHeader: t" + ( "ok" рдЕрдЧрд░ crc_2d == crc_2e рдФрд░ " рдЗрд░реЗрдЯ " рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
"рдмреНрд▓реЙрдХ 0x2D CRC: t {: # x}" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( crc_2d )
"рдмреНрд▓реЙрдХ 0x2E CRC: t {: # x}" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( crc_2e )

# рдЕрдВрддрд┐рдо рдЧрддрд┐рд╡рд┐рдзрд┐
activity_number, activity2, activity1 = unpack ( '> HLH' , рдбреЗрдЯрд╛ [ 0x2E2: 0x2EA ] )
рдЧрддрд┐рд╡рд┐рдзрд┐ = рдЧрддрд┐рд╡рд┐рдзрд┐ 1 + ( рдЧрддрд┐рд╡рд┐рдзрд┐ 2 << 16 )
activity_count = get_bits ( рдЧрддрд┐рд╡рд┐рдзрд┐, 38 , 10 )
y = get_bits ( рдЧрддрд┐рд╡рд┐рдзрд┐, 6 , 5 ) + 2000
M = get_bits ( рдЧрддрд┐рд╡рд┐рдзрд┐, 11 , 4 )
d = get_bits ( рдЧрддрд┐рд╡рд┐рдзрд┐, 15 , 5 )
h = get_bits ( рдЧрддрд┐рд╡рд┐рдзрд┐, 20 , 5 )
m = get_bits ( рдЧрддрд┐рд╡рд┐рдзрд┐, 25 , 6 )
s = get_bits ( рдЧрддрд┐рд╡рд┐рдзрд┐, 31 , 5 ) * 2
activity_date = рдбреЗрдЯрд╛рдЯрд╛рдЗрдо ( y, M, d, h, m, s )
activity_position, = unpack ( '> H' , рдбреЗрдЯрд╛ [ 0x147: 0x149 ] )
activity_index = ( activity_position / 0x40 ) - 32
"nLast рдЧрддрд┐рд╡рд┐рдзрд┐ #t {}" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( activity_number )
"рд╕реНрдерд┐рддрд┐ {: # x} ({})" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( activity_position, activity_index )
"рджрд┐рдирд╛рдВрдХ: tt" + activity_date рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред isoformat ( )
"рдХрд╛рдЙрдВрдЯрд░: рдЯреА {}" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( activity_count )

# рдЕрдВрддрд┐рдо рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐
рдкрдж = [ 0xC0,0xD0,0xE0,0x100,0x110,0x120 ]
"n {: ^ 20} {: ^ 5} {: ^ 20} {: ^ 12}" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( "рддрд┐рдерд┐" , "рдЕрдВрдХ" , "рдЯрд░реНрдорд┐рдирд▓" , "рдСрдкрд░реЗрд╢рди" )
"{:> 31} {:> 5} {:> 4} {:> 10} {:> 7}" рдореБрджреНрд░рд┐рдд рдХрд░реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( "ID" , "рдкреНрд░рдХрд╛рд░" , "Cnt" , "рдкреНрд░рдХрд╛рд░" , "Cnt" )

# рд╕рд╣реА рдЖрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
i = 5 рдпрджрд┐ activity_index > 5 рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐_ index
posts_ordered = рд╕реНрдерд┐рддрд┐рдпрд╛рдБ [ ( i + 1 ) : ] + рд╕реНрдерд┐рддрд┐рдпрд╛рдБ [ : ( i + 1 ) ]
рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐
рдмреНрд▓реЙрдХ = рдбреЗрдЯрд╛ [ рд╕реНрдерд┐рддрд┐: рдкреЙрд╕ + 0x10 ]
# рдпрджрд┐ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рдЦрд╛рд▓реА рдмреНрд▓реЙрдХ
рдЕрдЧрд░ ( get_crc ( block ) <> 0 ) рдпрд╛ ( ord ( рдмреНрд▓реЙрдХ [ 0 ] ) == 0 ) :
рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
date_i, unk = unpack ( '> LH' , рдмреНрд▓реЙрдХ [ 1 : 7 ] )
term_id, term_type, term_cnt = рдЕрдирдкреИрдХ ( '> BBH' , рдмреНрд▓реЙрдХ [ 7 : 11 ) )
op_type, op_cnt_i = unpack ( '> HH' , рдмреНрд▓реЙрдХ [ 11 : 15 ] )
op_cnt = op_cnt_i / 0x40
h = get_bits ( рджрд┐рдирд╛рдВрдХ_i, 2 , 5 )
m = get_bits ( рджрд┐рдирд╛рдВрдХ_i, 7 , 6 )
s = get_bits ( date_i, 13 , 5 ) * 2
y = реирежрежреж + рдЧреЗрдЯ_рдмрд┐рдЯреНрд╕ ( рджрд┐рдирд╛рдВрдХ_ рдЖрдИ, рез_, рел )
M = get_bits ( рджрд┐рдирд╛рдВрдХ_i, 23 , 4 )
d = get_bits ( рджрд┐рдирд╛рдВрдХ_i, 27 , 5 )
рджрд┐рдирд╛рдВрдХ = рдбреЗрдЯрд╛рдЯрд╛рдЗрдо ( y, M, d, h, m, s )
рдкреНрд░рд┐рдВрдЯ "{} {:> # 5x} {:> # 7x} {:> # 5x} {:> # 7x} {:> # 9x} {:> 4}
" ред рдкреНрд░рд╛рд░реВрдк ( рджрд┐рдирд╛рдВрдХред isoformat ) , unk, term_id, term_type, term_cnt, op_type, op_cnt )

рдбреАрдИрдПрдо рдореБрдЦреНрдп ( рдлрд╝рд╛рдЗрд▓ рдирд╛рдо ) :
рдЦреБрд▓реЗ рдХреЗ рд╕рд╛рде ( рдлрд╝рд╛рдЗрд▓ рдирд╛рдо, "рдЖрд░рдмреА" ) рдПрдл рдХреЗ рд░реВрдк рдореЗрдВ :
рдбреЗрдЯрд╛ = рдПрдлред рдкрдврд╝реЗрдВ ( 1024 )
Print_info ( рдбреЗрдЯрд╛ )

рдЕрдЧрд░ __name__ == "__main__" :
рдореБрдЦреНрдп ( sys ред argv [ 1 ] )

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:



рдореИрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?


рдкрд┐рдЫрд▓реА 6 рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕реНрдЯреЗрд╢рди рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╛рддреНрд░рд╛ рдХреА рд╕рдЯреАрдХ рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░реА рдУрд░, рдЖрдк рдореЗрдЯреНрд░реЛ рдЖрдБрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯрд░реНрдирд╕реНрдЯрд╛рдЗрд▓ рдХрд╛рд░реНрдб рдкрд░ рдЕрдкрдирд╛ рд▓реЗрдирджреЗрди рдирдВрдмрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреЗ рд▓реЛрдЧ рдЯрд░реНрдирд╕реНрдЯрд╛рдЗрд▓ рд╕реЗ рдЧреБрдЬрд░реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рдХреЗ рдбрдВрдк рдкрд░ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ 1000 рд▓реЛрдЧ рдкреНрд░рддрд┐рджрд┐рди рдкреЙрд▓рд┐рдЯреЗрдХреНрдирд┐рдХ рдЗрдВрд╕реНрдЯреАрдЯреНрдпреВрдЯ (рдЯрд░реНрдорд┐рдирд▓ рдирдВрдмрд░ 0x14) рдореЗрдВ рдШреВрдорддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In141213/


All Articles