டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

அனைவருக்கும் வணக்கம்.

நாங்கள், விக்டர் ஆன்டிபோவ் மற்றும் இலியா அலெஷின், இன்று பைதான் பையூஎஸ்பி வழியாக யூ.எஸ்.பி சாதனங்களுடன் பணிபுரிந்த அனுபவத்தைப் பற்றியும், தலைகீழ் பொறியியல் பற்றி கொஞ்சம் பேசுவோம்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

முன்வரலாறு

2019 ஆம் ஆண்டில், ரஷ்ய கூட்டமைப்பின் அரசாங்கத்தின் ஆணை எண். 224 “புகையிலைப் பொருட்களை அடையாளப்படுத்துவதற்கான விதிகளின் ஒப்புதலின் பேரில், அடையாள வழிமுறைகளுடன் கட்டாய லேபிளிங்கிற்கு உட்பட்ட பொருட்களின் புழக்கத்தை கண்காணிப்பதற்கான மாநில தகவல் அமைப்பை செயல்படுத்துவதற்கான அடையாள வழிமுறைகள் மற்றும் அம்சங்களுடன். புகையிலை பொருட்கள் தொடர்பாக” நடைமுறைக்கு வந்தது.
ஜூலை 1, 2019 முதல், உற்பத்தியாளர்கள் ஒவ்வொரு புகையிலை பொதியையும் லேபிளிட வேண்டும் என்று ஆவணம் விளக்குகிறது. மேலும் நேரடி விநியோகஸ்தர்கள் இந்த தயாரிப்புகளை உலகளாவிய பரிமாற்ற ஆவணம் (UDD) செயல்படுத்துவதன் மூலம் பெற வேண்டும். கடைகளில், பெயரிடப்பட்ட பொருட்களின் விற்பனையை பணப் பதிவேட்டில் பதிவு செய்ய வேண்டும்.

மேலும், ஜூலை 1, 2020 முதல், லேபிளிடப்படாத புகையிலைப் பொருட்களின் புழக்கம் தடைசெய்யப்பட்டுள்ளது. அதாவது அனைத்து சிகரெட் பொதிகளும் ஒரு சிறப்பு டேட்டாமேட்ரிக்ஸ் பார்கோடு மூலம் குறிக்கப்பட வேண்டும். மேலும் - ஒரு முக்கியமான விஷயம் - டேட்டாமேட்ரிக்ஸ் சாதாரணமாக இருக்காது, ஆனால் தலைகீழ் என்று மாறியது. அதாவது, வெள்ளை நிறத்தில் கருப்பு குறியீடு அல்ல, மாறாக நேர்மாறாகவும்.

எங்கள் ஸ்கேனர்களை நாங்கள் சோதித்தோம், அவற்றில் பெரும்பாலானவை புதுப்பிக்கப்பட வேண்டும்/மீண்டும் பயிற்சி செய்ய வேண்டும், இல்லையெனில் இந்த பார்கோடு மூலம் சாதாரணமாக வேலை செய்ய முடியாது. இந்த நிகழ்வுகள் எங்களுக்கு கடுமையான தலைவலிக்கு உத்தரவாதம் அளித்தன, ஏனென்றால் எங்கள் நிறுவனத்தில் ஏராளமான கடைகள் பரந்த பிரதேசத்தில் சிதறிக்கிடக்கின்றன. பல பல்லாயிரக்கணக்கான பணப் பதிவேடுகள் - மற்றும் மிகக் குறைந்த நேரம்.

என்ன செய்ய வேண்டும்? இரண்டு விருப்பங்கள் உள்ளன. முதலில்: ஆன்-சைட் இன்ஜினியர்கள் ஸ்கேனர்களை கைமுறையாக ஃப்ளாஷ் செய்து சரி செய்கிறார்கள். இரண்டாவது: நாங்கள் தொலைதூரத்தில் பணிபுரிகிறோம், முன்னுரிமை, ஒரே மறுமுறையில் பல ஸ்கேனர்களை ஒரே நேரத்தில் மூடுகிறோம்.

முதல் விருப்பம், வெளிப்படையாக, எங்களுக்கு ஏற்றது அல்ல: வருகை தரும் பொறியாளர்களுக்கு நாங்கள் பணம் செலவழிக்க வேண்டியிருக்கும், இந்த விஷயத்தில் செயல்முறையை கட்டுப்படுத்தவும் ஒருங்கிணைக்கவும் கடினமாக இருக்கும். ஆனால் மிக முக்கியமான விஷயம் என்னவென்றால், மக்கள் வேலை செய்வார்கள், அதாவது, நாங்கள் நிறைய பிழைகளைப் பெறுவோம், பெரும்பாலும், காலக்கெடுவை சந்திக்க முடியாது.

இரண்டாவது விருப்பம் அனைவருக்கும் நல்லது, ஒன்று இல்லை என்றால். சில விற்பனையாளர்களிடம் தேவையான அனைத்து இயக்க முறைமைகளுக்கும் தேவையான தொலை ஒளிரும் கருவிகள் இல்லை. காலக்கெடு முடிந்துவிட்டதால், நான் என் சொந்த தலையுடன் சிந்திக்க வேண்டியிருந்தது.

அடுத்து, Debian 9.x OSக்கான கையடக்க ஸ்கேனர்களுக்கான கருவிகளை நாங்கள் எவ்வாறு உருவாக்கினோம் என்பதை உங்களுக்குக் கூறுவோம் (எங்கள் பணப் பதிவேடுகள் அனைத்தும் Debian இல் உள்ளன).

புதிரைத் தீர்க்கவும்: ஸ்கேனரை எவ்வாறு ப்ளாஷ் செய்வது

விக்டர் ஆன்டிபோவ் தெரிவிக்கிறார்.

விற்பனையாளரால் வழங்கப்பட்ட அதிகாரப்பூர்வ பயன்பாடு விண்டோஸின் கீழ் இயங்குகிறது, மேலும் IE உடன் மட்டுமே. பயன்பாடு ஸ்கேனரை ப்ளாஷ் செய்து கட்டமைக்க முடியும்.

எங்கள் இலக்கு அமைப்பு டெபியன் என்பதால், டெபியனில் ஒரு யூ.எஸ்.பி-ரீடைரக்டர் சேவையகத்தையும் விண்டோஸில் யூ.எஸ்.பி-ரீடைரக்டர் கிளையண்டையும் நிறுவினோம். யூ.எஸ்.பி-ரீடைரக்டர் பயன்பாடுகளைப் பயன்படுத்தி, ஸ்கேனரை லினக்ஸ் கணினியிலிருந்து விண்டோஸ் கணினிக்கு அனுப்பினோம்.

விண்டோஸ் விற்பனையாளரிடமிருந்து ஒரு பயன்பாடு ஸ்கேனரைப் பார்த்தது மற்றும் அதை சாதாரணமாக ஒளிரச் செய்தது. எனவே, நாங்கள் முதல் முடிவை எடுத்தோம்: எதுவும் OS ஐப் பொறுத்தது அல்ல, இது ஒளிரும் நெறிமுறையின் விஷயம்.

சரி. விண்டோஸ் கணினியில் ஃபிளாஷிங்கை இயக்கி, லினக்ஸ் கணினியில் உள்ள டம்பை அகற்றினோம்.

நாங்கள் வயர்ஷார்க்கில் குப்பையை அடைத்தோம், வருத்தமடைந்தோம் (திடத்தின் சில விவரங்களை நான் தவிர்க்கிறேன், அவை எந்த ஆர்வமும் இல்லை).

திணிப்பு நமக்குக் காட்டியது:

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

0000-0030 முகவரிகள், Wireshark ஆல் மதிப்பிடப்படும், USB சேவைத் தகவல்.

நாங்கள் 0040-0070 பகுதியில் ஆர்வமாக இருந்தோம்.

ஒரு டிரான்ஸ்மிஷன் ஃப்ரேமில் இருந்து MOCFT எழுத்துக்களைத் தவிர வேறு எதுவும் தெளிவாக இல்லை. இந்த எழுத்துகள் ஃபார்ம்வேர் கோப்பின் எழுத்துகளாகவும், சட்டத்தின் இறுதி வரை மீதமுள்ள எழுத்துக்களாகவும் மாறியது (ஃபர்ம்வேர் கோப்பு சிறப்பம்சமாக உள்ளது):

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

fd 3e 02 01 fe சின்னங்கள் எதைக் குறிக்கின்றன, தனிப்பட்ட முறையில் இலியாவைப் போலவே எனக்கும் தெரியாது.

நான் பின்வரும் சட்டத்தைப் பார்த்தேன் (சேவைத் தகவல் இங்கே அகற்றப்பட்டது, ஃபார்ம்வேர் கோப்பு முன்னிலைப்படுத்தப்பட்டுள்ளது):

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

என்ன தெளிவாகியது? முதல் இரண்டு பைட்டுகள் ஒருவித நிலையானது. அனைத்து அடுத்தடுத்த தொகுதிகளும் இதை உறுதிப்படுத்தின, ஆனால் பரிமாற்றத் தொகுதி முடிவதற்கு முன்பு:

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

இந்தச் சட்டமும் திகைப்பூட்டுவதாக இருந்தது, ஏனெனில் மாறிலி மாறிவிட்டது (சிறப்பம்சமாக) மற்றும், விந்தை போதும், கோப்பின் ஒரு பகுதி இருந்தது. கோப்பின் மாற்றப்பட்ட பைட்டுகளின் அளவு 1024 பைட்டுகள் மாற்றப்பட்டதைக் காட்டியது. மீதமுள்ள பைட்டுகள் என்னவென்று எனக்கு மீண்டும் தெரியவில்லை.

முதலில், பழைய BBS புனைப்பெயராக, நான் நிலையான பரிமாற்ற நெறிமுறைகளை மதிப்பாய்வு செய்தேன். எந்த நெறிமுறையும் 1024 பைட்டுகள் அனுப்பப்படவில்லை. நான் வன்பொருளைப் படிக்க ஆரம்பித்தேன் மற்றும் 1K Xmodem நெறிமுறையைக் கண்டேன். இது 1024 ஐ அனுப்ப அனுமதித்தது, ஆனால் ஒரு எச்சரிக்கையுடன்: முதலில் 128 மட்டுமே, மற்றும் பிழைகள் இல்லை என்றால் மட்டுமே, நெறிமுறை அனுப்பப்பட்ட பைட்டுகளின் எண்ணிக்கையை அதிகரித்தது. நான் உடனடியாக 1024 பைட்டுகளை மாற்றினேன். டிரான்ஸ்மிஷன் புரோட்டோகால்களைப் படிக்க முடிவு செய்தேன், குறிப்பாக எக்ஸ்-மோடம்.

மோடத்தில் இரண்டு மாறுபாடுகள் இருந்தன.

முதலில், CRC8 ஆதரவுடன் XMODEM தொகுப்பு வடிவம் (அசல் XMODEM):

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

இரண்டாவதாக, CRC16 ஆதரவுடன் XMODEM பாக்கெட் வடிவம் (XmodemCRC):

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

SOH, தொகுப்பு எண் மற்றும் CRC மற்றும் தொகுப்பு நீளம் ஆகியவற்றைத் தவிர, இது ஒரே மாதிரியாகத் தெரிகிறது.

நான் இரண்டாவது டிரான்ஸ்மிஷன் பிளாக்கின் தொடக்கத்தைப் பார்த்தேன் (மீண்டும் ஃபார்ம்வேர் கோப்பைப் பார்த்தேன், ஆனால் ஏற்கனவே 1024 பைட்டுகளால் உள்தள்ளப்பட்டது):

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

நான் அறிந்த தலைப்பு fd 3e 02 ஐப் பார்த்தேன், ஆனால் அடுத்த இரண்டு பைட்டுகள் ஏற்கனவே மாறிவிட்டன: அது 01 fe ஆக இருந்தது, 02 fd ஆனது. இரண்டாவது தொகுதி இப்போது 02 என எண்ணப்பட்டிருப்பதை நான் கவனித்தேன், இதனால் புரிந்து கொள்ளப்பட்டது: எனக்கு முன்னால் டிரான்ஸ்மிஷன் பிளாக்கின் எண் இருந்தது. முதல் 1024 கியர் 01, இரண்டாவது 02, மூன்றாவது 03 மற்றும் பல (ஆனால் ஹெக்ஸில், நிச்சயமாக). ஆனால் fe இலிருந்து fdக்கு மாற்றுவதன் அர்த்தம் என்ன? கண்கள் 1 ஆல் குறைவதைக் கண்டது, புரோகிராமர்கள் 0 இல் இருந்து எண்ணுவதை மூளை நினைவூட்டியது, 1 அல்ல. ஆனால் ஏன் முதல் தொகுதி 1, மற்றும் 0 அல்ல? இந்தக் கேள்விக்கான பதிலை நான் இன்னும் கண்டுபிடிக்கவில்லை. ஆனால் இரண்டாவது தொகுதி எவ்வாறு கணக்கிடப்படுகிறது என்பதை நான் புரிந்துகொண்டேன். இரண்டாவது தொகுதி FF - (கழித்தல்) முதல் தொகுதியின் எண்ணிக்கையைத் தவிர வேறில்லை. எனவே, இரண்டாவது தொகுதி = 02 (FF-02) = 02 FD என நியமிக்கப்பட்டது. திணிப்பு பற்றிய அடுத்தடுத்த வாசிப்பு எனது யூகத்தை உறுதிப்படுத்தியது.

பின்னர் பரிமாற்றத்தின் பின்வரும் படம் வெளிவரத் தொடங்கியது:

பரிமாற்றத்தின் ஆரம்பம்
fd 3e 02 - தொடக்கம்
01 FE - பரிமாற்ற கவுண்டர்
பரிமாற்றம் (34 தொகுதிகள், 1024 பைட்டுகள் மாற்றப்பட்டது)
fd 3e 1024 பைட்டுகள் தரவு (30 பைட் தொகுதிகளாகப் பிரிக்கப்பட்டது).
பரிமாற்றத்தின் முடிவு
fd 25

மீதமுள்ள தரவு 1024 பைட்டுகளுக்கு சீரமைக்கப்பட வேண்டும்.

பிளாக் டிரான்ஸ்மிஷன் எண்ட் ஃபிரேம் எப்படி இருக்கும்:

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

fd 25 - தொகுதி பரிமாற்றத்தை முடிக்க சமிக்ஞை. அடுத்த 2f 52 – மீதமுள்ள கோப்பு 1024 பைட்டுகள் வரை இருக்கும். 2f 52, நெறிமுறை மூலம் மதிப்பிடுவது, 16-பிட் CRC செக்சம் ஆகும்.

பழைய காலத்துக்காக, ஒரு கோப்பிலிருந்து 1024 பைட்டுகளை இழுத்து, 16-பிட் CRC ஐக் கணக்கிடும் ஒரு நிரலை C இல் உருவாக்கினேன். நிரலைத் தொடங்குவது இது 16-பிட் CRC அல்ல என்பதைக் காட்டுகிறது. மீண்டும் மயக்கம் - சுமார் மூன்று நாட்களுக்கு. இந்த நேரமெல்லாம், செக்சம் இல்லையென்றால் அது என்னவாக இருக்கும் என்பதைப் புரிந்துகொள்ள முயன்றேன். ஆங்கில மொழி தளங்களைப் படிக்கும் போது, ​​X-மோடம் அதன் சொந்த செக்சம் கணக்கீட்டைப் பயன்படுத்துவதைக் கண்டுபிடித்தேன் - CRC-CCITT (XModem). இந்த கணக்கீட்டின் C இல் செயல்படுத்தல்களை நான் காணவில்லை, ஆனால் ஆன்லைனில் இந்த செக்ஸமைக் கணக்கிடும் தளத்தைக் கண்டேன். எனது கோப்பின் 1024 பைட்டுகளை வலைப்பக்கத்திற்கு மாற்றிய பின்னர், கோப்பிலிருந்து செக்சம் உடன் முழுமையாக ஒத்துப்போன செக்ஸத்தை தளம் எனக்குக் காட்டியது.

ஹூரே! கடைசி புதிர் தீர்க்கப்பட்டது, இப்போது நான் எனது சொந்த ஃபார்ம்வேரை உருவாக்க வேண்டும். அடுத்து, சக்திவாய்ந்த கருவித்தொகுப்பான பைத்தானை நன்கு அறிந்த இலியாவுக்கு எனது அறிவை (அது என் தலையில் மட்டுமே இருந்தது) அனுப்பினேன்.

ஒரு திட்டத்தை உருவாக்குதல்

இலியா அலெஷின் அறிக்கை.

தகுந்த அறிவுரைகளைப் பெற்றதால், நான் மிகவும் "மகிழ்ச்சியாக" இருந்தேன்.

எங்கு தொடங்குவது? அது சரி, ஆரம்பத்திலிருந்தே.  யூ.எஸ்.பி போர்ட்டில் இருந்து டம்ப் எடுப்பதில் இருந்து.

USB-pcap ஐ இயக்கவும் https://desowin.org/usbpcap/tour.html

சாதனம் இணைக்கப்பட்டுள்ள போர்ட் மற்றும் டம்பைச் சேமிக்கும் கோப்பைத் தேர்ந்தெடுக்கவும்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

விண்டோஸிற்கான சொந்த EZConfigScanning மென்பொருள் நிறுவப்பட்டுள்ள கணினியுடன் ஸ்கேனரை இணைக்கிறோம்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

சாதனத்திற்கு கட்டளைகளை அனுப்புவதற்கான உருப்படியை அதில் காணலாம். ஆனால் அணிகளைப் பற்றி என்ன? நான் அவற்றை எங்கே பெறுவது?
நிரல் தொடங்கும் போது, ​​உபகரணங்கள் தானாகவே வாக்களிக்கப்படும் (இதை சிறிது நேரம் கழித்து பார்ப்போம்). உத்தியோகபூர்வ உபகரண ஆவணங்களிலிருந்து பயிற்சி பார்கோடுகள் இருந்தன. இயல்புநிலை. இது எங்கள் அணி.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

தேவையான தரவுகள் பெறப்பட்டுள்ளன. வயர்ஷார்க் வழியாக dump.pcap ஐத் திறக்கவும்.

EZConfigScanning ஐத் தொடங்கும் போது தடு. நீங்கள் கவனம் செலுத்த வேண்டிய இடங்கள் சிவப்பு நிறத்தில் குறிக்கப்பட்டுள்ளன.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

இதையெல்லாம் முதன்முதலாகப் பார்த்து மனம் நொந்து போனேன். அடுத்து எங்கு தோண்டுவது என்று தெரியவில்லை.

ஒரு சிறிய மூளைச்சலவை மற்றும்-மற்றும்-மற்றும்... ஆஹா! குப்பையில் வெளியே - ஆகும் inமற்றும் in அது வெளியே.

URB_INTERRUPT என்றால் என்ன என்று கூகுளில் பார்த்தேன். இது ஒரு தரவு பரிமாற்ற முறை என்பதை நான் கண்டுபிடித்தேன். மேலும் இதுபோன்ற 4 முறைகள் உள்ளன: கட்டுப்பாடு, குறுக்கீடு, ஐசோக்ரோனஸ், மொத்தமாக. நீங்கள் அவர்களைப் பற்றி தனித்தனியாக படிக்கலாம்.

மேலும் USB சாதன இடைமுகத்தில் உள்ள இறுதிப்புள்ளி முகவரிகளை "lsusb -v" கட்டளை மூலமாகவோ அல்லது pyusb ஐப் பயன்படுத்தியோ பெறலாம்.

இப்போது இந்த VID உள்ள எல்லா சாதனங்களையும் நாம் கண்டுபிடிக்க வேண்டும். நீங்கள் குறிப்பாக VID:PID மூலம் தேடலாம்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

இது போல் தெரிகிறது:

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

எனவே, எங்களிடம் தேவையான தகவல்கள் உள்ளன: P_INFO கட்டளைகள். அல்லது DEFALT, கட்டளைகளை எழுதும் முகவரிகள் endpoint=03 மற்றும் பதில் endpoint=86ஐ எங்கு பெறுவது. கட்டளைகளை ஹெக்ஸாக மாற்றுவது மட்டுமே எஞ்சியுள்ளது.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

சாதனத்தை ஏற்கனவே கண்டுபிடித்துவிட்டதால், அதை கர்னலில் இருந்து துண்டிப்போம்...

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

0x03 என்ற முகவரியுடன் இறுதிப் புள்ளியில் எழுதவும்,

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

... பின்னர் 0x86 முகவரியுடன் இறுதிப் புள்ளியிலிருந்து பதிலைப் படிக்கவும்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

கட்டமைக்கப்பட்ட பதில்:

P_INFOfmt: 1
mode: app
app-present: 1
boot-present: 1
hw-sn: 18072B44CA
hw-rev: 0x20
cbl: 4
app-sw-rev: CP000116BBA
boot-sw-rev: CP000014BAD
flash: 3
app-m_name: Voyager 1450g
boot-m_name: Voyager 1450g
app-p_name: 1450g
boot-p_name: 1450g
boot-time: 16:56:02
boot-date: Oct 16 2014
app-time: 08:49:30
app-date: Mar 25 2019
app-compat: 289
boot-compat: 288
csum: 0x6986

இந்தத் தரவை dump.pcap இல் பார்க்கிறோம்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

நன்று! கணினி பார்கோடுகளை ஹெக்ஸாக மாற்றவும். அவ்வளவுதான், பயிற்சி செயல்பாடு தயாராக உள்ளது.

ஃபார்ம்வேர் பற்றி என்ன? எல்லாம் ஒரே மாதிரியாகத் தெரிகிறது, ஆனால் ஒரு நுணுக்கம் உள்ளது.

ஒளிரும் செயல்முறையின் முழுமையான டம்ப் எடுத்த பிறகு, நாங்கள் எதைக் கையாளுகிறோம் என்பதை தோராயமாகப் புரிந்துகொண்டோம். XMODEM பற்றிய ஒரு கட்டுரை இதோ, இந்த தகவல்தொடர்பு எவ்வாறு நிகழ்கிறது என்பதைப் புரிந்துகொள்வதில் மிகவும் உதவியாக இருந்தது, இருப்பினும் பொதுவாக: http://microsin.net/adminstuff/others/xmodem-protocol-overview.html அதைப் படிக்க பரிந்துரைக்கிறேன்.

திணிப்பைப் பார்க்கும்போது, ​​சட்டத்தின் அளவு 1024 ஆகவும், URB-தரவு அளவு 64 ஆகவும் இருப்பதைக் காணலாம்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

எனவே - 1024/64 - ஒரு தொகுதியில் 16 வரிகளைப் பெறுகிறோம், ஃபார்ம்வேர் கோப்பை ஒரு நேரத்தில் 1 எழுத்தைப் படித்து ஒரு தொகுதியை உருவாக்குகிறோம். சிறப்பு எழுத்துகள் fd1e3 + தொகுதி எண் கொண்ட ஒரு தொகுதியில் 02 வரியை நிறைவு செய்கிறது.
அடுத்த 14 வரிகள் fd25 + உடன் சேர்க்கப்பட்டுள்ளன, XMODEM.calc_crc() ஐப் பயன்படுத்தி, முழுத் தொகுதியின் செக்ஸத்தையும் கணக்கிடுகிறோம் ("FF - 1" என்பது CSUM என்பதை புரிந்து கொள்ள நிறைய நேரம் எடுத்தது) மற்றும் கடைசி, 16வது வரி கூடுதலாக சேர்க்கப்பட்டுள்ளது. fd3e உடன்.

அதுதான் என்று தோன்றுகிறது, ஃபார்ம்வேர் கோப்பைப் படித்து, தொகுதிகளைத் தாக்கி, கர்னலில் இருந்து ஸ்கேனரைத் துண்டித்து சாதனத்திற்கு அனுப்பவும். ஆனால் அது அவ்வளவு எளிதல்ல. ஸ்கேனரை ஃபார்ம்வேர் பயன்முறைக்கு மாற்ற வேண்டும்,
отправив ему NEWAPP = ‘\xfd\x0a\x16\x4e\x2c\x4e\x45\x57\x41\x50\x50\x0d’.
இந்த அணி எங்கிருந்து வந்தது?? குப்பையில் இருந்து.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

ஆனால் 64 வரம்பு காரணமாக ஸ்கேனருக்கு முழுத் தொகுதியையும் அனுப்ப முடியாது:

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

சரி, NEWAPP ஒளிரும் பயன்முறையில் உள்ள ஸ்கேனர் ஹெக்ஸை ஏற்கவில்லை. எனவே, நீங்கள் ஒவ்வொரு வரி bytes_array ஐ மொழிபெயர்க்க வேண்டும்

[253, 10, 22, 78, 44, 78, 69, 87, 65, 80, 80, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

பின்னர் இந்தத் தரவை ஸ்கேனருக்கு அனுப்பவும்.

நாங்கள் பதிலைப் பெறுகிறோம்:

[2, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

XMODEM பற்றிய கட்டுரையை நீங்கள் சரிபார்த்தால், அது தெளிவாகிவிடும்: தரவு ஏற்றுக்கொள்ளப்பட்டது.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

அனைத்து தொகுதிகளும் மாற்றப்பட்ட பிறகு, பரிமாற்றத்தை முடிக்கிறோம் END_TRANSFER = 'xfdx01x04'.

சரி, இந்த தொகுதிகள் சாதாரண மக்களுக்கான எந்த தகவலையும் கொண்டு செல்லாததால், முன்னிருப்பாக மறைந்த பயன்முறையில் ஃபார்ம்வேரை நிறுவுவோம். ஒரு வேளை, tqdm மூலம் ஒரு முன்னேற்றப் பட்டியை ஏற்பாடு செய்வோம்.

டெவலப்பருக்கான பணி, அல்லது விற்பனையாளர் இல்லாமல் கையடக்க ஸ்கேனர்களை எப்படி ஒளிரச் செய்தோம்

உண்மையில், இது சிறிய விஷயங்களின் விஷயம். செக் அவுட்களில் பணிபுரியும் செயல்முறையை மெதுவாக்காமல், உள்நுழைவைச் சேர்ப்பதற்காக, தெளிவாக வரையறுக்கப்பட்ட நேரத்தில் வெகுஜன நகலெடுப்புக்கான தீர்வை ஸ்கிரிப்ட்களில் போர்த்துவது மட்டுமே எஞ்சியுள்ளது.

இதன் விளைவாக

நிறைய நேரத்தையும் முயற்சியையும் நம் தலையில் முடியையும் செலவழித்ததால், எங்களுக்குத் தேவையான தீர்வுகளை உருவாக்க முடிந்தது, மேலும் காலக்கெடுவையும் சந்தித்தோம். அதே நேரத்தில், ஸ்கேனர்கள் இப்போது புதுப்பிக்கப்பட்டு மையமாக மீண்டும் பயிற்சி செய்யப்படுகின்றன, முழு செயல்முறையையும் நாங்கள் தெளிவாகக் கட்டுப்படுத்துகிறோம். நிறுவனம் நேரத்தையும் பணத்தையும் மிச்சப்படுத்தியது, மேலும் இந்த வகையின் தலைகீழ் பொறியியல் உபகரணங்களில் விலைமதிப்பற்ற அனுபவத்தைப் பெற்றோம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்