Siber yıldız sınavındaki Splinter sorusu

Soru şu Şekilde idi.

//Splinter'ın bilgisayarından önemli veriler aldık, bunlarınn ne olduğu bul ve bize bildir.

Soruda ki pcap dosyaya ulaşmak isterseniz buradan ulaşıp indirebilirsiniz.Pcap dosyasını wiresharkta açtıktan paketlerin usb portundan geldiğini görmekteyiz.Ve bu aygıtın fare olduğunu ve farenin konum hareketlerinin olduğunu düşünerek Tshark aracını kullanarak paketlerde ki verileri çekeceğiz. Tshark aracı wireshark gibi paket analiz aracıdır ve fare konum hareketlerinin verileri çekmemize yarayacak.

tshark -r splinter -T fields -e usb.capdata > data.txt

bu komutla -r den sonra pcap dosyamız -T ve -e parametrelermizden sonra ise verilerin olduğu alanları belirlememizi sağlar.’>’ parametresinden sonra ise verileri kaydedeceğimiz dosya ismini belirler.

00:ff:01:00
00:fe:00:00
00:fe:00:00
00:fd:00:00
00:fb:00:00
00:fa:ff:00

Bize bu şekilde veriler döktü.Bu verileri ile x ve y şeklinde konum haline düzeltmem gerekiyor.Burada ise awk veri düzenleme aracını kullanmamız gerekiyor.

awk -F: 'function comp(v){if(v>127)v-=256;return v}{x+=comp(strtonum("0x"$2));y+=comp(strtonum("0x"$3))}$1=="01"{print x,y}' data2.txt > data3.txt

Awk aracı sutunlara ayırarak kullanmamızı sağlıyor.Bu komutla -F parametresiyle ‘:’ ‘ya göre ayıracağımızı belirttik.Ve bu ayırdığımız verileri sutun bazında $1,$2,$3 gibi değişkenlere atarak fonksiyonda x ve y değerlerimizi oluşturuyor.

-1084 -79
-1084 -79
-1083 -80
-1083 -86
-1083 -89
-1083 -97
-1083 -97
-1083 -102

Bu şekilde konum verilerini elde ettik bu konum verilerinden grafik çizdirmemiz gerekiyor.Bunun için ise gnuplot aracını kullanacağız.

apt-get install gnuplot

Linux’da bu komutu kullanarak yükleyebilirsiniz.

gnuplot
plot "data2.txt"

Plotla çizdirdikten sonra çıkan resmin simetrisini aldığımız zaman flag çıkıyor.

Python'da kullanıcı ile iletişim

Merhaba arkadaşlar. Bu yazı da kullanıcıyla iletişim yani raw_input() ve input() fonksiyonlarını inceleyeceğiz. Kullanıcıyla iletişim kullanıcıya soru sormaya yarayan fonksiyonlardır.Örneğin kullanıcı adı sormayı yada parola sormaya yarayan fonksiyonlardır.Yani soruyu sorup cevabı aldıktan sonra cevabı işleme katmamızı sağlayan fonksiyonlardır.raw_input() fonksiyonundan başlayalım.

raw_input() fonksiyonundan çıkan değer string olur.Yani karakter dizisidir sayı dizisi değil.Yani işlem yapamazsınız.Örneğin;

raw_input("Lütfen bir sayı giriniz:")

//Lütfen bir sayı giriniz:5

dersem bana şu şekilde; ‘5’ diye verecek.String olduğu için ben bunla herhangi bir işlem yapamam.raw_input’a değişken atayabiliriz.

a= raw_input("Adınızı giriniz:") 

//Adınızı giriniz:Python

Dediğim zaman a ya python değerini atadık ve bunu göstermek istersem:

print a

//Python

bu şekilde çıkacaktır.Başka bir örnek verirsek:

a = raw_input("Lütfen adınızı giriniz:")

//Adınızı giriniz:Python


print "Parolanız:" , a

//Parolanız: Python

//Diğer bir yolla;


print "Parolanız: %s" %a 

//Parolanız: Python

Şimdi diğer kullanıcıyla iletişimi sağlayacak ikinci fonksiyonumuz input() fonksiyonuna gelelim.

input() fonksiyonunu integerlarda yani tamsayılarda kullanırız.Yani biz karekter dizisi yazdığımızda bize hata verecektir.input() tamsayılarda kullandığımız için işlemleri bu fonksiyondan gerçekleştirebiliriz.

a = input("Bir sayı giriniz:")

//Bir sayı giriniz:27 


print a

//27


print a-3

//24

Bir de b’ye de bir sayı verelim.Şu şekilde:

b = input("Bir sayı giriniz:")

//Bir sayı giriniz:3 


print a+b

//30

Bunu aynı şekilde raw_inputta yazmış olsaydık.Yani input yerine raw_input olduğunu düşünürsek ve print a+b dersek bize şu şekilde verir: 273 çünkü raw_input fonksiyonu toplayamıyor birleştiriyor.Yani matematiksel işlemlerde input’u kullanıyoruz. Karekter dizilerinde raw_input kullanacağız. Yanlız input’un güvenlik açıkları olduğundan dolayı bunu kullanmayacağız.Hem sayılarda hem de karekter dizilerinde raw_inputu kullanacağız.Ona da şöyle bir örnek verebiliriz.

a = raw_input("raw_input")
b = raw_input("Bir sayı giriniz:")

toplam=int(a)+int(b)
print toplam

//Bir sayı giriniz:27

//Bir sayı giriniz:3

//30

raw_input’u kullanarak sayısal işlemleri de değişkenleri int’e çevirerek yapabildiğimizi gördük.

Pyhton'da kaçış dizileri ve yorum satırları

Merhaba arkadaşlar.Pyhton’da işimizi kolaylaştıracak kaçış dizileri vardır. Bunlar:

  • ’'
  • ‘\n’
  • ‘\t’

sola yatık olanlardır.Görevlerini şu şekilde açıklayayım.

Kaçış Dizileri

  1. si ‘\n’ bu diğer satıra kaydırır.Yani bu diziden sonra ki kısmı alt satıra geçirir. örnek verecek olursak ;
print ("Merhaba\npython") 

//Merhaba

//python

bize bu şekilde vermesini sağlayan kaçış dizisidir.

2.si ‘\t’ bir tab boyu kadar boşluk bırakmamıza yarar.örnek verecek olursak;

print ("merhaba\tpython") 

//merhaba		python

\t bu şekilde yani tab kadar boşluk bırakmaya yarayan kaçış dizisidir diyebiliriz. İkisinide aynı anda kullanabiliriz tabi ki. Örnekle açıklayalım yine.

print ("Merhaba\n\tpython") 

//merhaba

//		python

Yani ilk önce satır atla (\n) sonra bir tab tuşu kadar boşluk bırak (\t) anlamına gelir.

3.kaçış dizisi olan ‘' bu ise bize karışıklığı önlemek adına kullanılır.Örnekle izah edeyim.

print ("\n \t bir kaçış dizileridir") 

//

//		bir kaçış dizileridir.

şeklinde çıkar. bunları kaçış dizisi gibi algılayıp görevlerini yerine getirir. ‘' bunu kullanırsam amacıma ulaşmış olacağım yine örnek vereyim.

print ("\\n \\t bir kaçış dizileridir") 

// \n \t bir kaçış dizileridir

Yani istediğim şekilde çıktı.Bu karışıklığı önlemenin bir diğer yolu ise tırnak işaretinin soluna r işareti koymaktır. Başına koyacağımız r işareti oradaki bütün kaçış dizilerini görmezden gelmesi anlamına gelir. örnek verecek olursak:

print (r"\\n \\t bir kaçış dizileridir") 

// \n \t bir kaçış dizileridir

ve son olarak enbasit ve en zevkli olan ise yorum satırı.

Yorum Satırı

’#’ bu sembolü koyarsak bundan sonra yazacağımız hiçbir şey işleme sokulmaz.

//#yani kafana göre herşey yazabilirsin bu sembolden 

//#satır bitene kadar özgürsün