உலகின் சிறந்த நெட்வொர்க் பாக்கெட் பிடிப்பு கருவிகளில் ஒன்றாக, Wireshark குறிப்பிட்ட தரவு பாக்கெட்டுகளை அடைய உங்களை அனுமதிக்கிறது, எனவே நீங்கள் அவற்றை ஆஃப்லைனிலும் உண்மையான நேரத்திலும் பகுப்பாய்வு செய்யலாம். உங்கள் நெட்வொர்க்கில் பாயும் தரவை நெருக்கமாக ஆராய்வதற்கான ஒரு வழியாக பயன்பாட்டை நினைத்துப் பாருங்கள், இது சிக்கல்கள் மற்றும் முறைகேடுகளைப் பிடிக்க உங்களை அனுமதிக்கிறது.
இணைப்பு அளவு மூலம் ஜிமெயிலை வரிசைப்படுத்துவது எப்படி
ஒரு பாக்கெட்டின் தரவின் குறிப்பிட்ட பகுதியை நீங்கள் பகுப்பாய்வு செய்ய விரும்பினால், நீங்கள் டிசெக்டர்களைப் பயன்படுத்தலாம். பெயர் குறிப்பிடுவது போல, இந்த செயல்முறை குறியீட்டை 'துண்டிக்கிறது', உங்கள் கவனம் தேவைப்படும் சில அம்சங்களை வெட்ட அனுமதிக்கிறது. லுவா ஸ்கிரிப்டிங் மொழியைப் பயன்படுத்தி வயர்ஷார்க்கில் டிசெக்டர்களை எவ்வாறு உருவாக்குவது மற்றும் பயன்படுத்துவது என்பதை இந்தப் பயிற்சி விளக்குகிறது.
நீங்கள் தொடங்குவதற்கு முன் - டிசெக்டர்களைப் பற்றி நீங்கள் தெரிந்து கொள்ள வேண்டியது
வயர்ஷார்க்கில் உள்ள தரவுப் பாக்கெட்டின் பகுதிகளை பகுப்பாய்வு செய்வதற்கான விரைவான வழியை டிசெக்டர்கள் வழங்கினாலும், அவை திறம்பட செயல்பட சில நெறிமுறைகளைப் பின்பற்ற வேண்டும். இந்த நெறிமுறைகளில் பின்வருவன அடங்கும்:
- நீங்கள் உருவாக்கும் ஒவ்வொரு டிசெக்டரும் வெவ்வேறு நெறிமுறையிலிருந்து ஒரு செட் பேலோடைக் கையாள பதிவு செய்ய வேண்டும். இந்தப் பதிவை முடிக்க, உங்கள் டிசெக்டருக்கு 'புரோட்டோ' பொருளை ஒதுக்க வேண்டும், அதை நீங்கள் கீழே பார்க்கலாம்.
- வயர்ஷார்க் வழியாக நீங்கள் ஒரு டிசெக்டரை அழைக்கும்போது, அது பயன்பாட்டிலிருந்து மூன்று விஷயங்களைப் பெறுகிறது:
- TVB ஆப்ஜெக்ட் - டேட்டா பாக்கெட்டில் இருந்து ஒரு TVB பஃபர்.
- TreeItem ஆப்ஜெக்ட் - டேட்டா ட்ரீயில் ஒற்றை முனையைக் குறிக்கும் ஒரு மர வேர்.
- பின்ஃபோ பொருள் - ஒரு பாக்கெட் தகவல் பதிவு.
- உங்கள் 'புரோட்டோ' பொருளுக்கு நீங்கள் அமைத்துள்ள DissectorTable உடன் உங்கள் டேட்டா பாக்கெட் பொருந்தினால் மட்டுமே நீங்கள் ஒரு dissector ஐ அழைக்க முடியும்.
- 'டிகோட் அஸ்' செயல்பாட்டின் மூலம் டிசெக்டரைப் பயன்படுத்துவதை கட்டாயப்படுத்துவதன் மூலம் இந்தத் தேவையைச் சமாளிக்கலாம். ஆனால் அப்போதும் கூட, உங்கள் “புரோட்டோ” பொருளுக்கு நீங்கள் அமைக்கும் டிஸ்செக்டர் டேபிள் சரியான வகையாக இருந்தால் மட்டுமே நீங்கள் டிசெக்டரை கட்டாயப்படுத்த முடியும்.
LUA ஐப் பயன்படுத்தி உங்கள் டிசெக்டரை அமைத்தல்
வயர்ஷார்க் C நிரலாக்க மொழியில் எழுதப்பட்டு பயன்படுத்துவதால், பெரும்பாலான dissectors C இல் எழுதப்பட்டுள்ளது. இருப்பினும், நீங்கள் Lua ஐப் பயன்படுத்த விரும்பலாம். இந்த ஸ்கிரிப்டிங் மொழி C ஐ விட எளிமையானது, எனவே புதியவர்கள் அல்லது அதிக எடை குறைந்த மொழியைப் பயன்படுத்தி ஒரு பிரிப்பான் உருவாக்க விரும்புபவர்களுக்கு குறியீட்டு முறைக்கு அணுகக்கூடியது.
உங்கள் குறியீடு எளிமையானதாக இருந்தாலும், லுவாவைப் பயன்படுத்தும் போது நீங்கள் பெறும் டிசெக்டார், C ஐப் பயன்படுத்தி உருவாக்குவதை விட பொதுவாக மெதுவாக இருக்கும். இருப்பினும், லுவாவைப் பயன்படுத்தி வயர்ஷார்க் டிஸ்செக்டரை உருவாக்க விரும்பினால், இந்த வழிமுறைகளைப் பின்பற்ற வேண்டும்.
படி 1 - வயர்ஷார்க்கில் லுவாவை அமைக்கவும்
நீங்கள் இதற்கு முன்பு வயர்ஷார்க்கில் லுவாவைப் பயன்படுத்தவில்லை என்றால், நீங்கள் அதை அமைக்க வேண்டும்:
- 'உதவி' என்பதைத் தொடர்ந்து 'வயர்ஷார்க் பற்றி' என்பதைக் கிளிக் செய்யவும்.
- 'கோப்புறைகள்' என்பதைக் கிளிக் செய்யவும்.
- செயலில் உள்ள Lua ஸ்கிரிப்டை உருவாக்க, பின்வருவனவற்றில் ஒன்றைத் தேர்ந்தெடுக்கவும்:
- உலகளாவிய லுவா செருகுநிரல்கள்
- தனிப்பட்ட Lua செருகுநிரல்கள்
- தனிப்பட்ட
செயல்படுத்தப்பட்டதும், நீங்கள் வயர்ஷார்க்கைத் தொடங்கும் போதெல்லாம் உங்கள் ஸ்கிரிப்ட் தயாராக இருக்கும். ஒவ்வொரு முறையும் அந்த ஸ்கிரிப்ட்டில் மாற்றம் செய்யும் போது, மாற்றத்தைப் பதிவு செய்ய வயர்ஷார்க்கை மறுதொடக்கம் செய்ய வேண்டும் அல்லது உங்கள் எல்லா லுவா ஸ்கிரிப்ட்களையும் மறுஏற்றம் செய்ய “Ctrl + Shift + L” அழுத்தவும்.
படி 2 - உங்கள் டிசெக்டரை உருவாக்குவதற்கான அடிப்படை படிகள்
லுவாவை நீங்கள் ஏற்கனவே அறிந்திருந்தால், வயர்ஷார்க்கில் வேலை செய்யும் உங்கள் சொந்த டிசெக்டர் ஸ்கிரிப்டை உருவாக்க பின்வரும் படிகளைப் பயன்படுத்தலாம்:
- உங்கள் டிசெக்டருக்கான நெறிமுறையை அறிவிக்கவும், இது நெறிமுறை மரத்தில் பயன்படுத்துவதற்கு ஒரு நீண்ட பெயரையும், டிசெக்டரின் காட்சி வடிகட்டி பெயராக செயல்படும் ஒரு குறுகிய பெயரையும் அமைக்க வேண்டும்.
- பின்வரும் மூன்று புலங்களை அவற்றின் பொருத்தமான வகைகளுடன் உருவாக்கவும்:
- கேள்வி - கேள்வி வகையைக் காட்டுகிறது.
- பதில் - பதில் வகையைக் காட்டுகிறது.
- செய்தி வகை - உங்கள் பாக்கெட் ஒரு கேள்வி அல்லது பதிலைக் கோருகிறதா என்பதைக் காட்டுகிறது.
- உங்கள் புலங்களைப் பதிவுசெய்யுங்கள், இதனால் வயர்ஷார்க் அவற்றை எப்படிக் காட்டுவது என்பதை அறியும். பதிவுசெய்யப்பட்ட புலங்கள் இல்லாமல், 'Lua Error' என்ற செய்தியைப் பெறுவீர்கள், பொதுவாக உங்கள் Tree Item ProtoField தவறானது என்று உங்களுக்குச் சொல்லும்.
- முன்னர் குறிப்பிடப்பட்ட பின்ஃபோ (உங்கள் பாக்கெட் பற்றிய தரவைக் கொண்டது) மற்றும் மர உருப்படி (நீங்கள் துணை மரத்தில் இணைக்கும் மரத்தை உருவாக்குதல்) ஆகியவற்றை உள்ளடக்கிய ஒரு பிரித்தெடுத்தல் செயல்பாட்டை உருவாக்கவும். உங்கள் TCP யின் மேல் அமர்ந்திருக்கும் “இடையகத்தையும்” நீங்கள் உருவாக்க வேண்டும்.
- வயர்ஷார்க் டிசெக்டரைப் பயன்படுத்த வேண்டிய நெறிமுறை மற்றும் போர்ட் இரண்டையும் குறிப்பிடவும். எடுத்துக்காட்டாக, நீங்கள் நெறிமுறையை “TCP” என்றும் போர்ட் எண்ணை நீங்கள் எதைப் பயன்படுத்த விரும்புகிறீர்களோ அதை அமைக்கலாம்.
படி 3 - வயர்ஷார்க்கில் உங்கள் டிசெக்டரைச் சேர்க்கவும்
இப்போதே, உங்கள் டிசெக்டர் மின்சாரம் இல்லாத மின்விளக்கு போல் உள்ளது. அது உள்ளது, ஆனால் நீங்கள் அதன் மூலம் சில சக்தியை இயக்கும் வரை அது உங்களுக்குப் பயன்படாது. வேறு வார்த்தைகளில் கூறுவதானால், உங்கள் டிசெக்டர் இன்னும் வயர்ஷார்க்கில் சேர்க்கப்படவில்லை, எனவே பின்வரும் படிகளைப் பயன்படுத்தி அதை இயக்குவதற்கு நீங்கள் அதை கைமுறையாகச் சேர்க்க வேண்டும்:
- 'உதவி' என்பதைக் கிளிக் செய்து, 'வயர்ஷார்க் பற்றி' மெனுவிற்குச் செல்லவும்.
- உங்கள் லுவா கோப்பிற்கான பாதைகளின் பட்டியலைக் கண்டறிய 'கோப்புறை' தாவலைத் தேர்ந்தெடுக்கவும்.
- 'தனிப்பட்ட லுவா செருகுநிரல்கள்' என்பதைத் தேர்ந்தெடுக்கவும். தேவைப்பட்டால் ஒரு கோப்பகத்தை உருவாக்கவும்.
- நீங்கள் உருவாக்கிய லுவா கோப்பை நகலெடுத்து, 'தனிப்பட்ட லுவா செருகுநிரல்கள்' கோப்பகத்தில் ஒட்டவும். டிசெக்டரை ஆன் செய்ய வயர்ஷார்க்கை மீண்டும் ஏற்றவும்.
நீங்கள் கைப்பற்றிய சில பாக்கெட்டுகளைத் திறந்து, உங்கள் புதிய டிசெக்டரில் சோதனை நடத்துவது நல்லது. வயர்ஷார்க் செய்தி வகை (கேள்வி அல்லது பதில்) மற்றும் உங்கள் காசோலையின் முடிவைப் பற்றிய தகவலுடன், உங்கள் டிசெக்டருக்கு நீங்கள் தேர்ந்தெடுத்த நீண்ட பெயரைக் காட்டும் செய்தியை வழங்க வேண்டும்.
சில மாதிரி குறியீடு
இதற்கு முன்பு நீங்கள் ஒரு டிசெக்டரை உருவாக்கவில்லை என்றால் (அல்லது நீங்கள் லுவாவிற்கு புதியவர்), வயர்ஷார்க் நீங்கள் முயற்சி செய்ய ஒரு எளிய உதாரணம் டிசெக்டரை வழங்குகிறது:
local p_multi = Proto("multi", "MultiProto");
local vs_protos = {
[2] = "mtp2",
[3] = "mtp3",
[4] = "alcap",
[5] = "h248",
[6] = "ranap",
[7] = "rnsap",
[8] = "nbap"
}
local f_proto = ProtoField.uint8("multi.protocol", "Protocol", base.DEC, vs_protos)
local f_dir = ProtoField.uint8("multi.direction", "Direction", base.DEC, { [1] = "incoming", [0] = "outgoing"})
local f_text = ProtoField.string("multi.text", "Text")
p_multi.fields = { f_proto, f_dir, f_text }
local data_dis = Dissector.get("data")
local protos = {
[2] = Dissector.get("mtp2"),
[3] = Dissector.get("mtp3"),
[4] = Dissector.get("alcap"),
[5] = Dissector.get("h248"),
[6] = Dissector.get("ranap"),
[7] = Dissector.get("rnsap"),
[8] = Dissector.get("nbap"),
[9] = Dissector.get("rrc"),
[10] = DissectorTable.get("sctp.ppi"):get_dissector(3), -- m3ua
[11] = DissectorTable.get("ip.proto"):get_dissector(132), -- sctp
}
function p_multi.dissector(buf, pkt, tree)
local subtree = tree:add(p_multi, buf(0,2))
subtree:add(f_proto, buf(0,1))
subtree:add(f_dir, buf(1,1))
local proto_id = buf(0,1):uint()
local dissector = protos[proto_id]
if dissector ~= nil then
-- Dissector was found, invoke subdissector with a new Tvb,
-- created from the current buffer (skipping first two bytes).
dissector:call(buf(2):tvb(), pkt, tree)
elseif proto_id < 2 then
subtree:add(f_text, buf(2))
-- pkt.cols.info:set(buf(2, buf:len() - 3):string())
else
-- fallback dissector that just shows the raw data.
data_dis:call(buf(2):tvb(), pkt, tree)
end
end
local wtap_encap_table = DissectorTable.get("wtap_encap")
local udp_encap_table = DissectorTable.get("udp.port")
wtap_encap_table:add(wtap.USER15, p_multi)
wtap_encap_table:add(wtap.USER12, p_multi)
udp_encap_table:add(7555, p_multi)
போஸ்ட் டிசெக்டர்கள் மற்றும் செயின்ட் டிசெக்டர்கள்
லுவாவில் அவற்றை உருவாக்குவதில் தேர்ச்சி பெற்றவுடன், உங்கள் டிசெக்டர் பயன்பாட்டை இன்னும் கொஞ்சம் ஆழமாகச் செல்ல விரும்பலாம். வயர்ஷார்க் இரண்டு கூடுதல் வகையான டிசெக்டர்களை வழங்குகிறது - போஸ்ட் டிசெக்டர்கள் மற்றும் செயின்ட் டிசெக்டர்கள் - அவை அதிக செயல்பாட்டை வழங்குகின்றன.
போஸ்ட்டிசெக்டர் என்பது நீங்கள் ஒரு பாக்கெட்டுக்காக இயக்கிய அனைத்து டிசெக்டர்களின் இறுதிச் சரிபார்ப்பு போன்றது. வயர்ஷார்க் நீங்கள் பயன்படுத்த விரும்பும் ஒவ்வொரு டிஸ்செக்டரையும் அழைத்தவுடன் அறிவிப்பைப் பெற நீங்கள் அதைப் பதிவு செய்கிறீர்கள், மேலும் 'நெறிமுறை' மற்றும் 'தகவல்' நெடுவரிசைகளை வடிகட்ட அதைப் பயன்படுத்தலாம். டேட்டா செட்களுக்கு இடையே நீண்ட இடைவெளி இருக்கும் மற்றும் ஒவ்வொன்றையும் தனித்தனியாக நினைவுபடுத்த முடியாத அமர்வில் பல பாக்கெட்டுகளை வடிகட்ட விரும்பினால் இந்த அம்சம் மிகவும் பயனுள்ளதாக இருக்கும்.
செயினிங் டிசெக்டர்கள் ஒரே மாதிரியான செயல்பாட்டை (குறைந்தபட்சம் முன்பு பயன்படுத்திய டிசெக்டர்கள் மூலம் வடிகட்டுவதன் அடிப்படையில்) உங்களுக்கு ஒரு டிசெக்டரின் தரவுக்கான அணுகலை வழங்குகின்றன. இங்குள்ள முக்கிய நன்மை என்னவென்றால், சங்கிலியால் இணைக்கப்பட்ட டிசெக்டரை மீண்டும் ஒவ்வொரு பாக்கெட்டிலும் இயக்க வேண்டியதில்லை, அசல் டிசெக்டரை மீண்டும் இயக்குவதற்கு உங்களை கட்டாயப்படுத்தாமல் ஒரு முடிவை உங்களுக்கு வழங்குகிறது.
லுவாவில் பிரிக்கவும்
வயர்ஷார்க் ஏற்கனவே சியில் (அதன் இயற்கையான மொழி) டிசெக்டர்களை உருவாக்கும் திறனை வழங்குவதால், லுவாவிலும் அவற்றை உருவாக்க வேண்டிய அவசியத்தை நீங்கள் காண முடியாது. இருப்பினும், C இல் வசதியில்லாதவர்களும், ஏற்கனவே லுவாவில் தேர்ச்சி பெற்றவர்களும், லுவாவின் இலகுரக ஸ்கிரிப்டிங் தங்கள் டிசெக்டர்களை உருவாக்குவதை எளிதாக்குவதைக் காணலாம். சி-அடிப்படையிலான டிசெக்டர்களுடன் ஒப்பிடும்போது நீங்கள் செயல்முறையை இயக்கும் போது நீண்ட ஏற்றுதல் நேரத்தை நீங்கள் வர்த்தகம் செய்ய வேண்டும் என்பது உண்மைதான், ஆனால் விருப்பத்தைப் பொருட்படுத்தாமல் இருப்பது உதவியாக இருக்கும்.
என்று சொன்னவுடன், நாங்கள் உங்களிடமிருந்து கேட்க விரும்புகிறோம். வயர்ஷார்க்ல் நீங்கள் எவ்வளவு அடிக்கடி டிசெக்டர்களை பயன்படுத்துகிறீர்கள்? நீங்கள் முன்பு அவற்றை C இல் உருவாக்க முயற்சித்திருக்கிறீர்களா, மேலும் லுவாவில் டிசெக்டர்களை உருவாக்குவது என்ன நன்மைகளை வழங்குகிறது என்று நினைக்கிறீர்கள்? கீழே உள்ள கருத்துகள் பிரிவில் எங்களுக்குத் தெரியப்படுத்துங்கள்.