Ana Diğer Wireshark'ta Lua Dissector Nasıl Kullanılır

Wireshark'ta Lua Dissector Nasıl Kullanılır



Dünyanın en iyi ağ paketi yakalama araçlarından biri olan Wireshark, hem çevrimdışı hem de gerçek zamanlı olarak analiz edebilmeniz için belirli veri paketlerine ulaşmanızı sağlar. Uygulamayı, ağınızda akan verileri yakından incelemenin bir yolu olarak düşünün, sorunları ve usulsüzlükleri yakalamanıza olanak tanır.

  Wireshark'ta Lua Dissector Nasıl Kullanılır

Bir paketin verilerinin belirli bir bölümünü analiz etmek istiyorsanız ayrıştırıcıları kullanabilirsiniz. Adından da anlaşılacağı gibi, bu işlem kodu 'inceler' ve dikkat etmeniz gereken belirli yönleri kesmenize olanak tanır. Bu eğitimde, Lua betik dili kullanılarak Wireshark'ta ayrıştırıcıların nasıl oluşturulacağı ve kullanılacağı açıklanmaktadır.

Başlamadan Önce – Disektörler Hakkında Bilmeniz Gerekenler

Ayrıştırıcılar, Wireshark'ta bir veri paketinin bölümlerini analiz etmenin hızlı bir yolunu sunsalar da, etkili bir şekilde çalışmak için bazı protokolleri takip etmeleri gerekir. Bu protokoller aşağıdakileri içerir:

  • Oluşturduğunuz her ayrıştırıcı, farklı bir protokolden belirli türde bir yükü işlemek için kaydedilmelidir. Bu kaydı tamamlamak için, ayrıştırıcınıza aşağıda göreceğiniz bir 'Proto' nesnesi atamanız gerekir.
  • Wireshark aracılığıyla bir disektörü aradığınızda, uygulamadan üç şey alır:
    • TVB Nesnesi – Veri paketinden bir TVB arabelleği.
    • TreeItem Nesnesi – Bir veri ağacında tek bir düğümü temsil eden bir ağaç kökü.
    • Pinfo Nesnesi – Bir paket bilgi kaydı.
  • Yalnızca veri paketiniz 'Proto' nesnenize ayarladığınız DissectorTable ile eşleşirse bir ayırıcı çağırabilirsiniz.
    • 'Farklı Kod Çöz' işlevi aracılığıyla bir ayrıştırıcı kullanımını zorlayarak bu gereksinimin üstesinden gelebilirsiniz. Ancak o zaman bile, yalnızca 'Proto' nesnenize ayarladığınız DissectorTable doğru türdeyse, ayrıştırıcıyı zorlayabilirsiniz.

LUA Kullanarak Disektörünüzü Kurma

Wireshark hem C programlama dilinde yazıldığından hem de C programlama dilini kullandığından, çoğu ayrıştırıcı benzer şekilde C dilinde yazılmıştır. Ancak, Lua'yı kullanmak isteyebilirsiniz. Bu betik dili, C'den daha basittir ve bu nedenle kodlamaya yeni başlayanlar veya daha basit bir dil kullanarak bir ayrıştırıcı oluşturmak isteyenler için daha erişilebilirdir.

Kodunuz daha basit olsa da, Lua'yı kullanırken elde ettiğiniz ayrıştırıcı genellikle C kullanarak oluşturduğunuzdan daha yavaştır.

Adım 1 – Wireshark'ta Lua'yı Kurun

Daha önce Wireshark'ta kullanmadıysanız Lua'yı kurmanız gerekir:

  1. 'Yardım'ı ve ardından 'Wireshark Hakkında'yı tıklayın.
  2. 'Klasörler'i tıklayın.
  3. Aktif bir Lua betiği oluşturmak için aşağıdakilerden birini seçin:
    • Küresel Lua Eklentileri
    • Kişisel Lua Eklentileri
    • Kişisel

Etkinleştirildiğinde, Wireshark'ı her başlattığınızda komut dosyanız hazır olacaktır. Bu komut dosyasında her değişiklik yaptığınızda, değişikliği kaydetmek için Wireshark'ı yeniden başlatmanız veya değişikliklerinizi etkin hale getirmek için tüm Lua komut dosyalarınızı yeniden yüklemek için 'Ctrl + Shift + L' tuşlarına basmanız gerekir.

Adım 2 – Disektörünüzü Oluşturmak İçin Temel Adımlar

Lua'ya zaten aşina iseniz, Wireshark'ta çalışacak kendi inceleme betiğinizi oluşturmak için aşağıdaki adımları kullanabilirsiniz:

  • Hem protokol ağacında kullanım için uzun bir ad hem de ayırıcının görüntüleme filtresi adı olarak işlev gören bir kısa ad ayarlamanızı gerektiren, ayrıştırıcınız için protokolü bildirin.
    • Uygun türleriyle birlikte aşağıdaki üç alanı oluşturun:
    • Soru – Soru türünü gösterir.
    • Cevap – Cevap türünü gösterir.
  • MessageType – Paketinizin bir soru mu yoksa cevap mı istediğini gösterir.
  • Wireshark'ın onları nasıl görüntüleyeceğini bilmesi için alanlarınızı kaydedin. Kayıtlı alanlar olmadan, genellikle size Ağaç Öğesi ProtoField'inizin geçersiz olduğunu söyleyen bir 'Lua Hatası' mesajı alırsınız.
  • Daha önce bahsedilen Pinfo'yu (paketinizle ilgili verileri içeren) ve Ağaç Öğesini (bir alt ağaca ekleyeceğiniz ağacı oluşturarak) içeren bir diseksiyon işlevi oluşturun. Ayrıca, TCP'nizin üzerinde oturan bir 'arabellek' oluşturmalısınız.
  • Wireshark'ın ayrıştırıcıyı kullanması gereken protokolü ve bağlantı noktasını belirtin. Örneğin, protokolü 'TCP' olarak ve port numarasını kullanmak istediğiniz şekilde ayarlayabilirsiniz.

Adım 3 – Disektörünüzü Wireshark'a Ekleyin

Şu anda, disektörünüz elektriksiz bir ampul gibidir. O var, ama içinden biraz güç geçene kadar sana hiçbir faydası yok. Başka bir deyişle, ayrıştırıcınız henüz Wireshark'a eklenmedi, bu nedenle aşağıdaki adımları kullanarak çalışmasını sağlamak için manuel olarak eklemeniz gerekir:

facebooktan resim nasıl indirilir
  1. “Yardım”a tıklayın ve “Wireshark Hakkında” menüsüne gidin.
  2. Lua dosyanız için bir yol listesi bulmak üzere 'Klasör' sekmesini seçin.
  3. 'Kişisel Lua Eklentileri'ni seçin. Gerekirse bir dizin oluşturun.
  4. Oluşturduğunuz Lua dosyasını kopyalayıp “Kişisel Lua Eklentileri” dizinine yapıştırın. Disektörü açmak için Wireshark'ı yeniden yükleyin.

Yakaladığınız paketlerden bazılarını açarak yeni parçalayıcınızda bir test yapmak iyi bir fikirdir. Wireshark, incelemeniz için seçtiğiniz uzun adı, mesaj türü (soru veya cevap) ve kontrolünüzün sonucu hakkında bilgilerle birlikte gösteren bir mesaj göndermelidir.

Bazı Örnek Kodlar

Daha önce bir disektör oluşturmadıysanız (veya Lua'da yeniyseniz), Tel Köpekbalığı denemeniz için kullanışlı bir örnek ayırıcı sunar:

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)

Postdisektörler ve Zincirli Disektörler

Lua'da bunları oluşturmada ustalaştıktan sonra, parçalayıcı kullanımınızla biraz daha derinlemesine gitmek isteyebilirsiniz. Wireshark, daha fazla işlevsellik sunan iki ek tür disektör sunar - postdissectors ve zincirleme dissektörler.

Bir post-dissector, bir paket için çalıştırdığınız tüm dissector'ların son kontrolüne çok benzer. Wireshark, kullanmasını istediğiniz diğer tüm ayırıcıları çağırdığında bildirim almak için kaydedersiniz ve bunu 'Protokol' ve 'Bilgi' sütunlarını filtrelemek için kullanabilirsiniz. Bu özellik, veri kümeleri arasında uzun bir boşluk olduğu ve her birini tek tek hatırlayamadığınız bir oturumda birden çok paketi filtrelemek istiyorsanız özellikle kullanışlıdır.

Zincirleme ayrıştırıcılar, tek bir ayrıştırıcının verilerine erişmenizi sağlayarak benzer bir işlev görür (en azından daha önce kullanılan ayrıştırıcılar aracılığıyla filtreleme açısından). Buradaki en önemli avantaj, zincirleme ayrıştırıcının her paketi tekrar gözden geçirmesi gerekmemesi ve sizi orijinal ayrıştırıcının tekrar çalışmasını beklemeye zorlamadan bir sonuç vermesidir.

Lua'da inceleme

Wireshark'ın zaten C'de (doğal dili) dissector oluşturma yeteneği sunduğu göz önüne alındığında, onları Lua'da da yaratma gereğini görmeyebilirsiniz. Yine de, C ile rahat olmayanlar ve Lua'da zaten ustalaşmış olanlar, Lua'nın hafif betiklerinin kendi ayrıştırıcılarını oluşturmayı kolaylaştırdığını görebilirler. Elbette, işlemi çalıştırdığınızda C tabanlı parçalayıcılara kıyasla daha uzun bir yükleme süresinden ödün vermeniz gerekir, ancak ne olursa olsun seçeneğe sahip olmak yararlıdır.

Bununla birlikte, sizden haber almak istiyoruz. Wireshark'ta disektörleri ne sıklıkla kullanıyorsunuz? Onları daha önce C'de yaratmayı denediniz mi ve Lua'da disektör yapmanın ne gibi faydalar sağladığını düşünüyorsunuz? Aşağıdaki yorumlar bölümünde bize bildirin.

Ilginç Haberler

Editörün Seçimi

Mobil Veriler Çalışmadığında Sorun Nasıl Düzeltilir
Mobil Veriler Çalışmadığında Sorun Nasıl Düzeltilir
iPhone veya Android'de çalışmayan mobil veriler, hasarlı bir SIM karttan, yazılım veya donanım sorunlarından veya ağ kesintisinden kaynaklanabilir. Tekrar nasıl çalıştırılacağını öğrenin.
Dosya Gezgini'nde Önizleme Bölmesini Etkinleştir veya Devre Dışı Bırak'ı indirin
Dosya Gezgini'nde Önizleme Bölmesini Etkinleştir veya Devre Dışı Bırak'ı indirin
Dosya Gezgini'nde Önizleme Bölmesini Etkinleştirin veya Devre Dışı Bırakın. Dosya Gezgini'nde Önizleme bölmesini etkinleştirmek veya devre dışı bırakmak için bu Kayıt Defteri dosyalarını kullanın. Yazar: Winaero. Dosya Gezgini'nde Önizleme Bölmesini Etkinleştir veya Devre Dışı Bırak 'Boyut: 685 B AdvertismentPCRepair: Windows sorunlarını düzeltin. Hepsi. İndirme bağlantısı: Dosyayı indirmek için buraya tıklayın Bizi destekleyinWinaero büyük ölçüde güveniyor
Android Kurtarma Modu Nasıl Kullanılır
Android Kurtarma Modu Nasıl Kullanılır
Android Kurtarma Modu, telefonunuzu sıfırlamanıza, güncellemeleri manuel olarak yüklemenize ve diğer yararlı tanılama ve onarımları gerçekleştirmenize olanak tanır.
iPhone'daki Metinlere Otomatik Yanıt Nasıl Verilir?
iPhone'daki Metinlere Otomatik Yanıt Nasıl Verilir?
Araba kullanıyorsanız ve insanların mesajlarınızı görmezden geldiğinizi düşünmesini istemiyorsanız, iPhone'unuzda otomatik yanıt özelliğini ayarlamayı düşünebilirsiniz. Bu özellik, metinlere cevap vermeden yanıt vermeyi mümkün kılar.
Bilgisayarım neden aniden yavaşlıyor [13 Reasons & Fix]
Bilgisayarım neden aniden yavaşlıyor [13 Reasons & Fix]
Sayfada otomatik reklamları programlı olarak devre dışı bırakamazsınız, işte buradayız!
POF'un Hesabınızı Sildiğini Nasıl Anlaşılır?
POF'un Hesabınızı Sildiğini Nasıl Anlaşılır?
Plenty of Fish hesabınız fazla etkinlik almıyor olabilir. Sonuç olarak, böylesine ani bir değişikliğin olası nedenlerini düşünmeye başlıyorsunuz. Akla gelenlerden biri, hesabınızın silinmiş olmasıdır. Ama nasıl yapabilirsin
Windows 8 Başlangıç ​​Ekranında paralaks efektinin ayarları nasıl değiştirilir
Windows 8 Başlangıç ​​Ekranında paralaks efektinin ayarları nasıl değiştirilir
Windows 8 Başlangıç ​​Ekranında paralaks efektinin ayarlarını değiştirmek için iki yöntemi açıklar