Wire: API Geliştiricileri için Ağ Yakalama Araçları

Lane LiaBraaten, Google Veri API'leri Ekibi
Haziran 2007

Giriş

Web hizmetleriyle etkileşime giren uygulamalar geliştirmek benzersiz bir dizi sorun oluşturur. Sık karşılaşılan bir hayal kırıklığı kaynağı, tam olarak sunucuya gönderilen mesajı veya verilen yanıtı bilmektir. Takip edilmesi en zor hatalardan bazıları, sunucuyla ilgili olarak gönderdiğimiz ileti ile gerçekte olan biteni birbirinden ayırt edemememizden kaynaklanır.

Bu makalede, kablodaki verilerin daha görünür ve yararlı olmasını sağlayabilecek çeşitli araçlar açıklanmaktadır. "Paket nişancıları" olarak bilinen bu araçlar, ağ arayüzünüzde hareket eden tüm ağ paketlerini yakalar. Bu paketlerin içeriğini ve bunların gönderilme ve alınma sırasını incelemek faydalı bir hata ayıklama tekniği olabilir.

Örnek: Herkese açık feed alma

Bir hayır kurumu yolculuğu için bisiklet ekibi oluşturuyorum ve bilgi oturumları, ekip bağışları ve eğitim gezileri gibi etkinlikler için bir takvim oluşturdum. Ekip üyelerinin ve diğer sürücülerin takvimi görüntüleyebilmesi ve etkinliklere katılabilmesi için bu takvimi herkese açık hale getirdim. Ayrıca, yaklaşan etkinlikleri içeren bir bülten göndermek istiyorum. Bu nedenle, bilgileri Google Takvim web sitesinden kopyalamak yerine bu takvimi sorgulamak ve etkinlikleri almak için Google Calendar data API'yi kullanabilirim.

Google Calendar API dokümanlarında, RESTful Google Data API'nın takvimimle programatik olarak etkileşimde bulunmak için nasıl kullanılacağıyla ilgili bilgiler var. (Editörün Notu: 3. sürümden itibaren Google Calendar API, Google Veri biçimini artık kullanmayacaktır.) İlk olarak takvim ayarları sayfasındaki düğmesini tıklayarak takvimin etkinlik feed'i URL'sini alın:

http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic

Google Takvim dokümanlarını referans olarak kullanarak, etkinlik feed'i URL'sinin PUBLIC_FEED_URL olduğu bu tür takvim etkinliklerini alıp görüntüleyebilirim.

CalendarService myService = new CalendarService("exampleCo-fiddlerExample-1");
final String PUBLIC_FEED_URL = "http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic";
URL feedUrl = new URL(PUBLIC_FEED_URL);
CalendarEventFeed resultFeed = myService.getFeed(feedUrl, CalendarEventFeed.class);

System.out.println("All events on your calendar:");
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
  CalendarEventEntry entry = resultFeed.getEntries().get(i);
  System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println();

Bu, takvimimde etkinliklerin temel bir listesini oluşturur:

All events on your calendar:
    MS150 Training ride
    Meeting with Nicole
    MS150 Information session

Yukarıdaki kod snippet'i takvim etkinliklerinin başlıklarını görüntüler. Peki ya sunucudan aldığımız geri kalan veriler? Java istemci kitaplığı bir feed'in veya girişin XML olarak çıkışını basitleştirmez ve yapmış olsa bile XML her şeyi kapsamaz. Peki, isteğe eşlik eden HTTP üstbilgileri hakkında ne yapabilirsiniz? Sorgu proxy üzerinden mi yapıldı yoksa yönlendirildi mi? Daha karmaşık işlemlerde, özellikle bir şeyler ters gittiğinde ve hata yaptığımızda bu sorular giderek daha önemli hale gelir. Paket yoklama yazılımı, ağ trafiğini açığa çıkararak bu sorulara yanıt verebilir.

hedef EBM

tcpdump, Unix benzeri platformlarda çalışan bir komut satırı aracıdır. Ayrıca WinDump adlı bir Windows bağlantı noktası da vardır. Çoğu paket sniffer'ı gibi tcpdump de ağ kartınızı süper kullanıcı ayrıcalıkları gerektiren gizli moda yerleştirir. tcpdump'yi kullanmak için dinlenecek ağ arayüzünü belirtmeniz yeterlidir. Ağ trafiği stdout'a gönderilir:

sudo tcpdump -i eth0

Bu komutu çalıştırırsanız her türlü ağ trafiğiyle karşılaşırsınız. Bunların bazıları etkinliği tanımaz. Çıkışı bir dosyaya yönlendirip daha sonra bunu grep olarak değiştirebilirsiniz ancak bu durum çok büyük dosyalara yol açabilir. Çoğu paket yakalama yazılımında yerleşik bazı filtreleme mekanizmaları vardır, böylece yalnızca ihtiyacınız olanları yakalayabilirsiniz.

tcpdump, ağ trafiğinin çeşitli özelliklerine dayalı filtrelemeyi destekler. Örneğin, sunucunuzun ana makine adını aşağıdaki ifadeye ekleyerek tcpdump'e yalnızca sunucunuzdaki 80 numaralı bağlantı noktasından gelen (HTTP mesajları) trafiği yakalamasını söyleyebilirsiniz:

dst or src host <hostname> and port 80

tcpdump, filtre ifadesiyle eşleşen her paket için bir zaman damgası, paketin kaynağı ve hedefi ve çeşitli TCP işaretlerini gösterir. Bu bilgiler, paketlerin gönderilme ve alınma sırasını gösterdiği için değerli olabilir.

Paketlerin içindekileri görmek de genellikle yararlıdır. "-A" işareti, tcpdump'e her bir paketi ASCII olarak yazdırmasını söyler ve HTTP üstbilgileri ile ileti gövdesini açığa çıkarır. "-s" işareti, görüntülenecek bayt sayısını belirtmek için kullanılır (burada "-s 0", ileti gövdesinin hiç kısaltılmamasıdır).

Tümünü bir araya getirip şu komutu alırız:

sudo tcpdump -A -s 0 -i eth0 dst or src host <hostname> and port 80

Bu komutu çalıştırır ve ardından yukarıdaki kısa .Java örneğini çalıştırırsanız bu işlemle ilgili tüm ağ iletişimlerini görürsünüz. Trafik arasında HTTP GET isteğini görürsünüz:

22:22:30.870771 IP dellalicious.mshome.net.4520 > po-in-f99.google.com.80: P 1:360(359) ack 1 win 65535
E.....@....\...eH..c...P.=.....zP......GET /calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic HTTP/1.1
User-Agent: exampleCo-fiddlerExample-1 GCalendar-Java/1.0.6 GData-Java/1.0.10(gzip)
Accept-Encoding: gzip
Cache-Control: no-cache
Pragma: no-cache
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

Ayrıca, Google Veri feed'ini içeren 200 OK yanıt mesajını da görürsünüz. Feed'in dört paket halinde ayrıldığına dikkat edin:

22:22:31.148789 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 1:1431(1430) ack 360 win 6432
E...1 ..2.I.H..c...e.P.....z.=.:P..M...HTTP/1.1 200 OK
Content-Type: application/atom+xml; charset=UTF-8
Cache-Control: max-age=0, must-revalidate, private
Last-Modified: Mon, 11 Jun 2007 15:11:40 GMT
Transfer-Encoding: chunked
Date: Sun, 24 Jun 2007 02:22:10 GMT
Server: GFE/1.3

13da
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom'
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gCal='http://sc
hemas.google.com/gCal/2005' xmlns:gd='http://schemas.google.com/g/2005'><id>http
://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.goo
gle.com/public/basic</id><updated>2007-06-11T15:11:40.000Z</updated><category sc
heme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2
005#event'></category><title type='text'>MS150 Training Schedule</title><subtitl
e type='text'>This calendar is public</subtitle><link rel='http://schemas.google
.com/g/2005#feed' type='application/atom+xml' href='http://www.google.com/calend
ar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic'></
link><link rel='self' type='application/atom+xml' href='http://www.google.com/ca
lendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic
?max-results=25'></link><author><name>Lane LiaBraaten</name><email>api.lliabraa@
gmail.com</email></author><generator version='1.0' uri='http://www.google.com/ca
lendar'>Google Calendar</generator><openSearch:totalRe


22:22:31.151501 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 1431:2861(1430) ack 360 win 6432
E...1!..2.I.H..c...e.P.......=.:P.. 2...sults>3</openSearch:totalResults><openSe
arch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch
:itemsPerPage><gd:where valueString=''></gd:where><gCal:timezone value='America/
Los_Angeles'></gCal:timezone><entry><id>http://www.google.com/calendar/feeds/24v
j3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/dgt40022cui2k3j
740hnj46744</id><published>2007-06-11T15:11:05.000Z</published><updated>2007-06-
11T15:11:05.000Z</updated><category scheme='http://schemas.google.com/g/2005#kin
d' term='http://schemas.google.com/g/2005#event'></category><title type='text'>M
S150 Training ride</title><summary type='html'>When: Sat Jun 9, 2007 7am to 10am

&amp;nbsp; PDT&lt;br&gt;   &lt;br&gt;Event Status:     confirmed</summary><conte
nt type='text'>When: Sat Jun 9, 2007 7am to 10am&amp;nbsp; PDT&lt;br&gt;   &lt;b
r&gt;Event Status:     confirmed</content><link rel='alternate' type='text/html'
 href='http://www.google.com/calendar/event?eid=ZGd0NDAwMjJjdWkyazNqNzQwaG5qNDY3
NDQgMjR2ajNtNXBsMTI1YmgyaWpiYm5laDk1M3NAZw' title='alternate'></link><link rel='
self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/24v
j3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/dgt40022cui2k3j
740hnj46744'></link><author><name>MS150 Training Schedule</name></author><gCal:s
endEventNotifications value='false'></gCal:sendEventNotifications></entry><entry

><id>http://www.google.com/cal

22:22:31.153097 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 2861:4291(1430) ack 360 win 6432
E...1#..2.I.H..c...e.P.......=.:P.. ....endar/feeds/24vj3m5pl125bh2ijbbneh953s%4
0group.calendar.google.com/public/basic/51d8kh4s3bplqnbf1lp6p0kjp8</id><publishe
d>2007-06-11T15:08:23.000Z</published><updated>2007-06-11T15:10:39.000Z</updated
><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.g
oogle.com/g/2005#event'></category><title type='text'>Meeting with Nicole</title

><summary type='html'>When: Mon Jun 4, 2007 10am to 11am&amp;nbsp; PDT&lt;br&gt;
  &lt;br&gt;Where: Conference Room B &lt;br&gt;Event Status:     confirmed</summ
ary><content type='text'>When: Mon Jun 4, 2007 10am to 11am&amp;nbsp; PDT&lt;br&
gt;  &lt;br&gt;Where: Conference Room B &lt;br&gt;Event Status:     confirmed

&lt;br&gt;Event Description: Discuss building cycling team for MS150</content><l
ink rel='alternate' type='text/html' href='http://www.google.com/calendar/event?
eid=NTFkOGtoNHMzYnBscW5iZjFscDZwMGtqcDggMjR2ajNtNXBsMTI1YmgyaWpiYm5laDk1M3NAZw'
title='alternate'></link><link rel='self' type='application/atom+xml' href='http
://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.goo
gle.com/public/basic/51d8kh4s3bplqnbf1lp6p0kjp8'></link><author><name>MS150 Trai
ning Schedule</name></author><gCal:sendEventNotifications value='false'></gCal:s
endEventNotifications></entry><entry><id>http://www.google.com/calendar/feeds/24
vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/va41amq3r08dhh
kpm3lc1abs2o</id><published>20


22:22:31.190244 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: P 4291:5346(1055) ack 360 win 6432
E..G1$..2.K.H..c...e.P.....<.=.:P.. ....07-06-11T15:10:08.000Z</published><updat
ed>2007-06-11T15:10:08.000Z</updated><category scheme='http://schemas.google.com
/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title ty
pe='text'>MS150 Information session</title><summary type='html'>When: Wed Jun 6,
 2007 4pm to Wed Jun 6, 2007 5pm&amp;nbsp; PDT&lt;br&gt;   &lt;br&gt;Event Statu
s:     confirmed</summary><content type='text'>When: Wed Jun 6, 2007 4pm to Wed
Jun 6, 2007 5pm&amp;nbsp; PDT&lt;br&gt;   &lt;br&gt;Event Status:     confirmed<

/content><link rel='alternate' type='text/html' href='http://www.google.com/cale
ndar/event?eid=dmE0MWFtcTNyMDhkaGhrcG0zbGMxYWJzMm8gMjR2ajNtNXBsMTI1YmgyaWpiYm5la
Dk1M3NAZw' title='alternate'></link><link rel='self' type='application/atom+xml'
 href='http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.c
alendar.google.com/public/basic/va41amq3r08dhhkpm3lc1abs2o'></link><author><name
>MS150 Training Schedule</name></author><gCal:sendEventNotifications value='fals
e'></gCal:sendEventNotifications></entry></feed>

Bu çıkışta tüm HTTP üstbilgileri ve içeriklerinin yanı sıra şifrelenmiş kripto TCP işaretleri bulunur. Tüm veriler burada mevcuttur ancak okunması ve anlaşılması zordur. Bu verileri görüntülemeyi kolaylaştıran çeşitli grafik araçlar mevcuttur.

WireShark (eski adıyla Ethereal)

Wireshark&#39;ın ekran görüntüsü
WireShark, ağ trafiğini farklı şekillerde gösterir.

WireShark, libcpcap ile oluşturulan ve tcpdump'in temel aldığı aynı kitaplık olan ve Linux, Mac OS X ve Windows'da kullanılabilen bir grafik aracıdır. WireShark'ın GUI'sı, paket yakalama verilerini yorumlamak ve bu verilerle etkileşim kurmak için birçok yeni yol sağlar. Örneğin paketler ağ arayüzünden yakalandığı için, kullandıkları protokole bağlı olarak farklı renklerde gösterilir. Trafiği zaman damgası, kaynak, hedef ve protokole göre de sıralayabilirsiniz.

Paketler listesinde bir satır seçerseniz Wireshark, okunabilir bir ağaçtaki paket başlıklarında IP, TCP ve protokole özel diğer bilgileri görüntüler. Veriler, ekranın alt kısmındaki HEX ve ASCII'de de gösterilir.

WireShark'ın görsel yapısı, ağ trafiğinin daha kolay anlaşılmasını sağlasa da çoğu durumda ağ trafiğini filtrelemeyi tercih edersiniz. WireShark, yüzlerce protokol için destek dahil olmak üzere güçlü filtreleme özelliklerine sahiptir.

İPUCU: Kullanılabilir protokolleri görüntülemek ve karmaşık filtreler oluşturmak için WireShark penceresinin üst tarafına yakın bir yerdeki düğmesini tıklayın.

Yukarıdaki hedef tcpdump örneğinde kullanılan filtreyi yeniden oluşturmak için WireShark filtre kutusuna şu ifadeyi ekleyebilirsiniz:

ip.addr==<your IP address> && tcp.port==80

Veya WireShark'ın HTTP bilgisinden yararlanın:

ip.addr==<your IP address> && http

Bu şekilde yakalamanızın sonuçları yalnızca Google Takvim sunucusuyla bu etkileşime dahil olan paketlere göre filtrelenir. İçeriği görmek ve işlemi oluşturmak için her bir paketi tıklayabilirsiniz.

İPUCU: İsteklerden ve yanıtları tek bir pencerede sırayla görüntülemek için paketlerden birini sağ tıklayıp " TCP Akışını İzle"yi seçebilirsiniz.

WireShark, yakalama bilgilerinizi kaydetmek için çeşitli yollar sunar. Paketlerin birini, bir kısmını veya tamamını kaydedebilirsiniz. Bir TCP akışı görüntülüyorsanız sadece ilgili paketleri kaydetmek için "Farklı Kaydet" düğmesini tıklayabilirsiniz. Çıkışı bir tcpdump yakalamasından içe aktarabilir ve WireShark'da görüntüleyebilirsiniz.

Sorun: SSL ve şifreleme

Paket yakalama araçlarının yaygın bir eksikliği, SSL bağlantısı üzerinden şifrelenmiş verilerin görüntülenememesidir. Yukarıdaki örnek herkese açık bir feed'e eriştiği için SSL gerekmez. Ancak, örnek özel bir feed'e eriştiyse istemcinin SSL bağlantısı gerektiren Google kimlik doğrulama hizmetiyle kimlik doğrulaması yapması gerekir.

Aşağıdaki snippet, önceki örnekle benzerdir ancak burada CalendarService, kullanıcının takvim meta feed'ini ister. Bu, kimlik doğrulama gerektiren özel bir feed'dir. Kimlik doğrulaması için setUserCredentials yöntemini çağırmanız yeterlidir. Bu yöntem, ClientLogin hizmetine bir HTTPS isteği tetikler ve kimlik doğrulama jetonunu yanıttan çıkarır. Ardından CalendarService nesnesi, sonraki tüm isteklerde kimlik doğrulama jetonunu içerir.

CalendarService myService = new CalendarService("exampleCo-fiddlerSslExample-1");
myService.setUserCredentials(username, userPassword);
final String METAFEED_URL = "http://www.google.com/calendar/feeds/default";
URL feedUrl = new URL(METAFEED_URL);
CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

System.out.println("Your calendars:");
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
  CalendarEntry entry = resultFeed.getEntries().get(i);
  System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println();

Özel bir Google Data API feed'inin kimliğini doğrulamak ve ona erişmek için gereken ağ trafiğini göz önünde bulundurun:

  1. Kullanıcı kimlik bilgilerini ClientLogin hizmetine gönderin
    • İleti gövdesinde aşağıdaki parametrelerle https://www.google.com/accounts/ClientLogin adresine bir HTTP POST gönderin:
      • E-posta: Kullanıcının e-posta adresi.
      • Passwd: Kullanıcının şifresi.
      • kaynak - istemci uygulamanızı tanımlar. CompanyName-applicationName-versionID biçiminde olmalıdır. Örnekler, ExampleCo-FiddlerSSLExample-1 adını kullanır.
      • hizmet - Google Takvim hizmeti adı "cl"dir.
  2. Yetkilendirme jetonunu alma
    • Kimlik doğrulama isteği başarısız olursa HTTP 403 Yasak durum kodu alırsınız.
    • İstek başarılı olursa hizmetten gelen yanıt, bir HTTP 200 OK durum kodu ve yanıtın gövdesinde üç uzun alfanümerik kod olur: SID, LSID ve Auth. Auth değeri, yetkilendirme jetonudur.
  3. Gizli takvim meta akışı isteme
    • Aşağıdaki üstbilgiyi kullanarak http://www.google.com/calendar/feeds/default adresine bir HTTP GET gönderin:
    • Authorization: GoogleLogin auth=<yourAuthToken>
      

Bu snippet'i çalıştırmayı ve WireShark'daki ağ trafiğini görüntülemeyi deneyin (filtre olarak "http || ssl"yi kullanın). İşleme ait SSL ve TLS paketlerini görürsünüz. Ancak ClientLogin isteği ve yanıt paketleri, "Uygulama Verileri" paketlerinde şifrelenir. Endişelenmeyin, şimdi bu şifrelenmiş bilgileri gerçekten açığa çıkaracak bir araca göz atacağız.

Fiddler

Fiddler, başka bir grafik paket koku alma aracıdır, ancak şu ana kadar sunulan araçlardan çok farklı davranır. Fiddler, uygulamanız ile etkileşimde bulunduğunuz uzak hizmetler arasında bir proxy görevi görür ve etkili bir şekilde ortadaki adam haline gelir. Fiddler, hem uygulamanızla hem de uzak web hizmetiyle SSL bağlantısı kurar. Uç noktalardan gelen trafiğin şifresini çözer, şifrelenmemiş metni yakalar ve göndermeden önce trafiği yeniden şifreler. Maalesef Fiddler yalnızca Windows ve Mac kullanıcılarınız için kullanılabilir.

Not: SSL desteği için Fiddler sürüm 2 ve .NET Framework sürüm 2.0 gerekir.

Fiddler'daki ağ trafiğini görüntüleme işlemi çoğunlukla Oturum Denetleyicisi sekmesi aracılığıyla yapılır. Google Veri API'leriyle ilgili hataları ayıklamak için en faydalı alt sekmeler şunlardır:

  • Üstbilgiler: HTTP başlıklarını daraltılabilir ağaç biçiminde gösterir.
  • Auth - Kimlik doğrulama üstbilgilerini gösterir.
  • Ham: Ağ paketlerinin içeriğini ASCII metin olarak gösterir

İPUCU: Yakalamayı açmak ve kapatmak için Fiddler penceresinin sol alt köşesindeki simgesini tıklayın.

Fiddler, ağ bağlantılarını yapılandırarak Fiddler'ı proxy olarak kullanacak şekilde .NET Framework'ü kullanır. Bu, Internet Explorer veya .NET koduyla yaptığınız tüm bağlantıların varsayılan olarak Fiddler'da görüneceği anlamına gelir. Ancak, Java'nın HTTP proxy'lerini ayarlamak için farklı bir yöntemi olduğundan yukarıdaki Java örneğinden gelen trafik görünmez.

Java'da, HTTP proxy'yi sistem özelliklerini kullanarak ayarlayabilirsiniz. Fiddler, 8888 numaralı bağlantı noktasında çalışır. Bu nedenle yerel bir kurulum için, Fiddler'ı HTTP ve HTTPS için bir proxy olarak aşağıdaki satırları ekleyerek yapabilirsiniz:

System.setProperty("http.proxyHost", "localhost");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "8888");

Örneği aşağıdaki satırlarla çalıştırırsanız Java güvenlik paketinden gerçekten kötü bir yığın izleme alırsınız:

[java] Caused by:
  sun.security.validator.ValidatorException: PKIX path building failed:
  sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Fiddler&#39;ın ekran görüntüsü
Fiddler, SSL trafiğinin şifresini çözebilir ve SSL trafiğini görüntüleyebilir.

Bu hata, SSL bağlantısında sunucudan döndürülen sertifika doğrulanamadığında ortaya çıkar. Bu örnekte, kötü sertifika, ortadaki adam rolünde olan Fiddler'dan gelmektedir. Fiddler çalışırken sertifikaları oluşturur ve Fiddler güvenilir bir sağlayıcı olmadığından, bu sertifikalar SSL bağlantısının kurulmasında başarısız olur.

Not: Fiddler çalışırken, Internet Explorer'da oluşturduğunuz herhangi bir SSL bağlantısı, güvenlik sertifikasına rağmen devam etmek isteyip istemediğinizi soran bir "Güvenlik Uyarısı"nı tetikler. Fiddler'ın oluşturduğu sertifikayı görmek için "Sertifikayı Görüntüle" seçeneğini tıklayabilirsiniz.

Peki bu güvenlik istisnasına nasıl çözüm bulabilirsiniz? Temel olarak Java'nın güvenlik çerçevesini tüm sertifikalara güvenecek şekilde yeniden yapılandırmanız gerekir. Neyse ki burada tekerleği yeniden icat etmeniz gerekmez. Francis Labrie'nin çözümünü inceleyerek yukarıdaki örneğe SSLUtilities.trustAllHttpsCertificates() ekleyin.

Java'yı Fiddler'ı proxy olarak kullanacak şekilde yapılandırdıktan ve varsayılan sertifika doğrulamasını devre dışı bıraktıktan sonra, örneği çalıştırabilir ve kablo üzerinden düz metin olarak gönderilen tüm trafiği görebilirsiniz. Şifremi çalma!

Bu kimlik doğrulama işleminin SSL trafiğine ilişkin yalnızca küçük bir örnek olduğunu unutmayın. Bazı web uygulamaları yalnızca SSL bağlantılarını kullandığından, HTTP trafiğindeki hataları ayıklama, verilerin şifresini çözmenin bir yolu olmadan söz konusu değildir.

Sonuç

Linux, Mac OS X ve Windows'da kullanılabilen tcpdump, aradığınız şeyi bildiğinizde ve hızlı bir çekime ihtiyacınız olduğunda mükemmel bir araçtır. Ancak, ağ trafiğini anlaşılması daha kolay biçimlerde sunan bazı grafik araçları vardır. tcpdump, burada ele alınanlardan çok daha fazla seçeneğe ve filtreleme özelliğine sahiptir. Hedef EBM işlevinin tam açıklaması için "man tcpdump" yazın veya çevrimiçi tcpdump man sayfasını ziyaret edin.

WireShark, Linux, Mac OS X ve Windows'da da kullanılabilir. Yüzlerce protokol için yerleşik destek, WireShark'ı yalnızca HTTP hata ayıklaması değil, birçok uygulama için yararlı bir araç haline getirir. Bu giriş, WireShark'ın birçok becerisini neredeyse hiç keşfedemiyor. Daha fazla bilgi için "man Wishark" yazın veya WireShark web sitesini ziyaret edin.

Fiddler'ın birçok muhteşem özelliği de vardır ancak onu farklı kılan şey, SSL trafiğinin şifresini çözmesidir. Daha fazla bilgi için Fiddler2 web sitesini ziyaret edin.

Bu paket algılama uygulamaları, araç kemerinizde kullanabileceğiniz mükemmel araçlardır ve gözlemci okuyucuların hepsi ücretsiz olduğunu fark eder! Bir sonraki sefer Google API'leriyle çalışırken ve şüpheli bir şey gördüğünüzde bu ağ analizcilerinden birini çıkarıp kablonun içeriğini daha yakından inceleyin. Soruyu bulamazsanız istediğiniz zaman tartışma grubumuzda soru yayınlayabilirsiniz. Alakalı ağ mesajlarını eklemek, başkalarının sizin sorununuzu anlayıp teşhis etmesine yardımcı olur.

Bol şans ve kokuyu çekeriz.

Kaynaklar