9 Mart 2016 Çarşamba

C'DE LAGRANGE INTERPOLASYONU



#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *f;
int i, j, k = 0;
double a, b, *x, *fx, pn = 0, p, ival;
char s[20];
fpos_t position;

if ((f = fopen("datas.txt", "r")) == NULL)
{
printf("File could not be opened\n");
}

printf("\nEnter the point : ");
scanf("%lf", &p);
fgets(s, 20, f);
printf("\n %s", s);
fgetpos(f, &position);

do{
fscanf(f, "%lf%lf", &a, &b);
k++;
} while (!feof(f));

x = (double *)malloc(k * sizeof(double));
fx = (double *)malloc(k * sizeof(double));

fsetpos(f, &position);
printf("\n");

for (i = 0; i < k; i++)
{
fscanf(f, "%lf%lf", &x[i], &fx[i]);
printf("% lf\t\t%lf\n",x[i],fx[i]);
}

for (i = 0; i < k; i++)
{
ival = 1;
for (j = 0; j < k; j++)
{
if (i != j)
{
ival = ival * (p - x[j]) / (x[i] - x[j]);
}
}
pn = pn + (fx[i] * ival);
}

printf("\nResult is for P(nth) : %lf\n\n", pn);
system("pause");
return 0;
}

datas.txt :

x f(x)
1.0 0.7651977
1.3 0.6200860
1.6 0.4554022
1.9 0.2818186
2.2 0.1103623

C'DE SECANT VE REGULA FALSI METODU

 Secant Method : 

Regula Falsi Method : 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double functionOfX(double x)
{
double  fx;
fx = pow(x, 3) + 4 * pow(x, 2) - 10; //write here your function
return fx;
}

int main(){

FILE *f;
int i = 2;
double P[10], Q[2];
double q, TOL = pow(10, -5);
P[0] = 1;
P[1] = 2;

if ((f = fopen("results.txt", "a+")) == NULL)
{
printf("File could not be opened\n");
}

Q[0] = functionOfX(P[0]);
Q[1] = functionOfX(P[1]);
printf("\n ### SECANT METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
printf("\n # %d # --> %lf\n", i - 2, P[0]);
printf(" # %d # --> %lf\n", i - 1, P[1]);
fprintf(f, "\n ### SECANT METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
fprintf(f, "\n # %d # --> %lf\n", i - 2, P[0]);
fprintf(f, " # %d # --> %lf\n", i - 1, P[1]);
while (i <= 10)
{
P[i] = P[i - 1] - (Q[1] * (P[i - 1] - P[i - 2]) / (Q[1] - Q[0]));
printf(" # %d # --> %lf\n", i, P[i]);
fprintf(f, " # %d # --> %lf\n", i, P[i]);
if (fabs(P[i] - P[i - 1]) <= TOL)
{
break;
}
Q[0] = Q[1];
Q[1] = functionOfX(P[i]);
i++;
}

printf("\n\n");

i = 2;
Q[0] = functionOfX(P[0]);
Q[1] = functionOfX(P[1]);
printf("\n ### REGULA FALSI METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
printf("\n # %d # --> %lf\n", i - 2, P[0]);
printf(" # %d # --> %lf\n", i - 1, P[1]);
fprintf(f, "\n ### REGULA FALSI METHOD ###\n\n > FUNCTION is : x^3 + 4(x^2) - 10\n > TOLERANCE VALUE is : %lf\n > INTERVAL is : [1,2]\n > Q(0) : %lf\n > Q(1) : %lf\n", TOL, Q[0], Q[1]);
fprintf(f, "\n # %d # --> %lf\n", i - 2, P[0]);
fprintf(f, " # %d # --> %lf\n", i - 1, P[1]);
while (i <= 10)
{
P[i] = P[i - 1] - (Q[1] * (P[i - 1] - P[i - 2]) / (Q[1] - Q[0]));
printf(" # %d # --> %lf\n", i, P[i]);
fprintf(f, " # %d # --> %lf\n", i, P[i]);
if (fabs(P[i] - P[i - 1]) <= TOL)
{
break;
}

q = functionOfX(P[i]);
if (q * Q[1] < 0)
{
Q[0] = Q[1];
}
Q[1] = q;
i++;
}

printf("\n");
system("pause");
fclose(f);
return 0;
}

results.txt : 

 ### SECANT METHOD ###

 > FUNCTION is : x^3 + 4(x^2) - 10
 > TOLERANCE VALUE is : 0.000010
 > INTERVAL is : [1,2]
 > Q(0) : -5.000000
 > Q(1) : 14.000000

 # 0 # --> 1.000000
 # 1 # --> 2.000000
 # 2 # --> 1.263158
 # 3 # --> 1.338828
 # 4 # --> 1.366616
 # 5 # --> 1.365212
 # 6 # --> 1.365230
 # 7 # --> 1.365230

 ### REGULA FALSI METHOD ###

 > FUNCTION is : x^3 + 4(x^2) - 10
 > TOLERANCE VALUE is : 0.000010
 > INTERVAL is : [1,2]
 > Q(0) : -5.000000
 > Q(1) : 14.000000

 # 0 # --> 1.000000
 # 1 # --> 2.000000
 # 2 # --> 1.263158
 # 3 # --> 1.338828
 # 4 # --> 1.336571
 # 5 # --> 1.336644
 # 6 # --> 1.336642


3 Şubat 2016 Çarşamba

REAVER İLE KABLOSUZ AĞ ŞİFRESİ BULMA

Bu yöntem için airmon-ng, airodump-ng, wash, aireplay-ng, ve reaver araçlarının bulunduğu bir platform gereklidir. Ben sanal makine üzerinde Kali Linux 2.0 işletim sistemini kullanıyorum. Ağ bağdaştırıcınız da bu araçları destekliyor olmalı. Sanal makineler genellikle ağ bağdaştırıcılarını görmüyor, o yüzden harici olarak TP-LINK WN722N ağ bağdaştırıcısını kullanıyorum. Ağ bağdaştırıcınız bu araçları destekliyorsa, bilgisayarınıza bu araçların olduğu bir platform kurarsanız harici bir bağdaştırıcıya gerek yok. USB Boot ile de bilgisayara kurulum yapmadan ve harici bağdaştırıcı olmadan kullanabilirsiniz.

reaver aracı deneme - yanılma yöntemi ile WPS PIN üzerinden kablosuz ağ şifresine ulaşan bir yöntemdir.
8 basamaklı WPS PIN'in 7 basamağının toplamı 8. basamağı veriyor (her zaman geçerli olan bir durum değil ama reaver aracı başarıya ulaşıyor).
reaver 4 + 4 olarak iki parça halinde modeme bilgi yolluyor ve ilk 4 rakamı bulduktan sonra diğer 4 rakama geçiyor. Son rakam diğerlerinin toplamı olduğu için ikinci kısımda geriye 3 rakam kalıyor.
Sonuç olarak toplam PIN deneme sayısı 10^4 + 10^3 = 11000.
Ortalama 10 saat süren bir işlem bu. Sinyal gücüne bağlı olarak bu süre artabilir.
13 ve 20 saatte sonuca ulaştığım oldu. :)
reaver kesin sonuca ulaşan bir araç (şu ana kadar aksi bir duruma rastlamadım).



airmon-ng aracı ile ağ bağdaştırıcılarımızı görüntülüyoruz.


airmon-ng start wlan0 komutu ile ağ bağdaştırıcımızı monitor moduna getireceğiz.
Bu komut ağ bağdaştırıcısı için bir arayüz (interface) oluşturacak.
Tekrar airmon-ng yazarak arayüz ismini görebilirsiniz.
Benimki wlan0mon.


"Device or resource busy (-16)" hatası ile karşılaşırsanız sırası ile bu komutları yazın :
ifconfig <interface> down
iwconfig <interface> mode monitor
ifconfig <interface> up
Hatayı almazsanız bir sonraki aşamadan devam edin.


airodump-ng aracı etraftaki modemlerin bilgilerini gösterir.


BSSID : MAC adresleri
PWR : Sinyal Gücü (az olanlar daha yakın)
CH : Kanal
ESSID : Ağ isimleri
Yeterince ağ sayısı bulunca Ctrl + C ile işlemi sonlandırın.


wash aracı ile modemlerin WPS (Wi - Fi Protected Setup) kilidini görüntülüyoruz. 
WPS kilidi açıksa veya saldıracağımız adresin WPS bilgisi yoksa "reaver" aracı işe yaramaz.
reaver, WPS PIN üzerinden şifreye ulaşıyor.


Yeterince ağ sayısı bulunca Ctrl + C ile işlemi sonlandırın.
aireplay-ng ve reaver işlemlerini birlikte ve farklı terminallerde başlatıyoruz.


-i : <interface> 
"-i" parametresinden sonra arayüzümüzün ismini yazıyoruz.

-b : <bssid>
"-b" parametresinden sonra saldıracağımız MAC adresini yazıyoruz.

-c : <channel>
"-c" parametresinden sonra ağın bulunduğu kanalı yazıyoruz.

-S : dh small
"-S" parametresi Diffie - Hellman algoritmasını kullanarak işlemi hızlandırır.

-l : <lock delay>
"-l" parametresi geçici kilitlenmeye karşı bekleme süresi ayarlar.

-f : fixed
"-f" parametresi kanalın sabit kalmasını sağlıyor.

-r : <recurring delay>
"-r" parametresi ile deneme sayısını : bekleme süresini ayarlıyoruz. 
Ben 9 denemede 61 saniye bekleyecek şekilde ayarladım.
Deneme sayısı modemden modeme değişiklik gösteriyor. 
Bazıları 3 denemede kilitlenirken bazıları 10 denemede kilitleniyor. 

-N : no nacks
Daha az paket yakalayarak süreyi kısaltır.

-vv : verbose
"-v" parametresi ayrıntılı olarak bize bilgi veriyor. Daha fazla detay için "v" sayısını arttırabilirsiniz.

reaver bilgileri bir dosyada saklıyor. İşlemi kesip, daha sonra devam ettiğinizde bu dosya sayesinde kaldığı yerden devam ediyor.
(Ctrl + C ile işlemi durdurabilirsiniz)
Terminale "reaver --help" yazarak parametreler ile ilgili detaylı bilgilere ulaşabilirsiniz.
Parametreler sadece bunlarla sınırlı değil, ihtiyacınıza göre başka parametreler de kullanmanız gerekebilir.


-1 : fake authentication
"-1" parametresi sahte MAC adresleriyle ağda trafik oluşturup, paket toplamaya yarıyor. 120 ise süresi.

-a : <bssid>
"-a" parametresinden sonra saldıracağımız MAC adresini yazıyoruz.

-e : <essid>
"-e" parametresinden sonra saldıracağımız ağın ismini yazıyoruz.

Terminale "aireplay-ng--help" yazarak parametreler ile ilgili detaylı bilgilere ulaşabilirsiniz.
Parametreler sadece bunlarla sınırlı değil, ihtiyacınıza göre başka parametreler de kullanmanız gerekebilir.


reaver PIN denemeleri


aireplay-ng kimlik doğrulama ve paket işlemleri


239 saniye yazmasına bakmayın durdurup daha sonra devam ettim.
~11 saat sürdü :)

reaver, WPS transaction failed (code 0x02) uyarısını sinyali alamadığında veriyor. 

Detaylı bilgi için :

2 Şubat 2016 Salı

C'DE SIN(X) FONKSİYONUNUN MACLAURIN SERİSİ İLE HESAPLANMASI


#include <stdio.h>
#include <stdlib.h>
#define _USE_MATH_DEFINES
#include <math.h>

int main(){
int N, c = 0, i, Fctrl = 1, y;
float x, z, Sum = 0;

printf("For exit enter the N is 0 or negative number !\n\n");
printf("Enter a number for Nth term(s) calculating : ");
scanf("%d", &N);
if (N < 1){
return 0;
}
printf("Enter the degrees : ");
scanf("%f", &x);

z = (x * M_PI) / 180;

while (c < N){
if (N > 0){
y = (2 * c) + 1;
for (i = 1; i <= y; i++){
Fctrl = Fctrl * i;
}
Sum = Sum + (pow(-1, c) * (pow(z, y) / Fctrl));
c++;
}
else{
break;
}
}
printf("Sinx Nth terms sum is : %f\n", Sum);
system("pause");
return 0;
}

29 Ocak 2016 Cuma

VHDL'DE D - FLIP FLOP DEVRESİ


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity dflipflop is
port ( D : in std_logic;
CLK : in std_logic;
Q : inout std_logic;
QN : inout std_logic
);
end dflipflop;

architecture Behavioral of dflipflop is

begin
process(D,CLK)
begin
if CLK' event and CLK='1' then
Q <= D;
QN <= NOT D;
end if;
end process;
end Behavioral;

-------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Circuit is
port ( X : in std_logic;
CLK : in std_logic;
Z : out std_logic
);
end Circuit;

architecture Structural of Circuit is

component dff is
port ( D : in std_logic;
CLK : in std_logic;
Q : inout std_logic;
QN : inout std_logic
);
end component;

signal S2: std_logic_vector (1 downto 0);
signal Q1,Q1N,Q2,Q2N : std_logic;

begin
S2(0) <=  Q1N OR Q2;
S2(1) <= Q2N AND X;
DFF1: dff port map (S2(0),CLK,Q1,Q1N);
DFF2: dff port map (S2(1),CLK,Q2,Q2N);
Z <= Q1 OR Q2N;

end Structural;

VHDL'DE 4 BİTLİK TAM TOPLAYICI / ÇIKARICI DEVRESİ


library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity fullAdder is
   port( X : in std_logic;
Y : in std_logic;
Cin : in std_logic;
sum : out std_logic;
Cout : out std_logic);
end fullAdder;

architecture data_flow of fullAdder is

begin

   sum <= (X XOR Y) XOR Cin;
   Cout <= ((X XOR Y) AND Cin) OR (X AND Y);

end data_flow;

--------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity fourBitsAdderSubtractor is
   port( S : in std_logic;
A  : in std_logic_vector(3 downto 0);
B  : in std_logic_vector(3 downto 0);
SUM  : out std_logic_vector(3 downto 0);
Cout : out std_logic);
end fourBitsAdderSubtractor;

architecture Structural of fourBitsAdderSubtractor is
component fullAdder is        
   port( X : in std_logic;
Y : in std_logic;
Cin : in std_logic;
sum : out std_logic;
Cout : out std_logic);
end component;

signal C: std_logic_vector(3 downto 0);
signal TMP: std_logic_vector(3 downto 0);

begin
TMP(0) <= B(0) XOR S;
TMP(1) <= B(1) XOR S;
TMP(2) <= B(2) XOR S;
TMP(3) <= B(3) XOR S;

FA0: fullAdder port map(A(0), TMP(0), S, SUM(0), C(0));
FA1: fullAdder port map(A(1), TMP(1), C(0), SUM(1), C(1));
FA2: fullAdder port map(A(2), TMP(2), C(1), SUM(2), C(2));
FA3: fullAdder port map(A(3), TMP(3), C(2), SUM(3), C(3));

Cout <= C(3);

end Structural;

VHDL'DE KOD ÇÖZÜCÜ DEVRESİ



library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Decoder_2_to_4 is
port ( w: in std_logic_vector(1 downto 0);
E: in std_logic;
y: out std_logic_vector( 3 downto 0)
);
end Decoder_2_to_4;

architecture Behavioral of Decoder_2_to_4 is

begin
process (w,E)
begin
if(E='1') then
case w is
when "00"=> y(0) <='1';
when "01"=> y(1) <='1';
when "10"=> y(2) <='1';
when "11"=> y(3) <='1';
when others => y <="1111";
end case;
else
y <="0000";
end if;
end process;
end Behavioral;

----------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Circuit is
port ( W: in std_logic_vector (2 downto 0);
EN:  in std_logic;
Y: out std_logic_vector (7 downto 0)
);      
end Circuit;

architecture Structural of Circuit is

component Decoder_2_to_4 is
port ( w: in std_logic_vector(1 downto 0);
E: in std_logic;
y: out std_logic_vector( 3 downto 0)
);
end component;

signal temp : STD_LOGIC_VECTOR(2 downto 0);
begin
temp(0) <= NOT W(2);
temp(1) <= temp(0) AND EN;
temp(2) <= W(2) AND EN;

DEC1: Decoder_2_to_4 port map(W(1 downto 0),temp(1),Y(3 downto 0));
DEC2: Decoder_2_to_4 port map(W(1 downto 0),temp(2),Y(7 downto 4));

end Structural;