Bài tập môn an toàn bảo mật thông tin

73 886 1
Bài tập môn an toàn bảo mật thông tin

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÀI TẬP THỰC HÀNH PHẦN MẬT MÃ (12 tiêt) Bài 1 : Kiểm tra số nguyên tố : #include <iostream.h> #include <conio.h> void main() { clrscr(); int x , n; cout<<"nhap vao so nguyen can kiem tra: ";cin>>x; n=2; while(x%n>0) { n++; } if (n==x ) cout<<"La so nguyen to"; else cout<<"Khongla so NT"; getch(); } Bài 2 :Tạo N số nguyên tố đầu tiên #include <stdio.h> #include <math.h> #define N 100 int i,j,k; long int q,r,n,pr[N+1]; int main() { pr[1]=2;n=3;j=1; label1:j++;pr[j]=n; if (j==N) goto label4; label2: n+=2;k=2; label3: q=n/pr[k];r=n%pr[k]; if(r==0) goto label2; if (q<=pr[k]) goto label1; k++;goto label3 ; label4: for(i=1;i<=N;i++) { printf("%1d ",pr[i]); if(i%10==0) printf(" "); } getchar(); return(n,j,k); }/*main*/ Bài 3 Biểu diễn theo cơ số B /*BIEU DIEN CO SO B*/ #include<stdio.h> #include<math.h> /* input : two non_negative intergers a,b ,b>=2 output : base b representation of a */ int a,b; long repre(int a,int b); long repre0(int a,int b); void main() { a=12;b=2; repre(a,b); a=8;b=4; repre(a,b); a=15245;b=32; repre(a,b); a=748;b=16; repre(a,b); a=14;b=2; repre0(a,b); getchar(); }/* main */ long repre(int a,int b) { int n,i,A[20];long x,q; n=0;q=a/b;A[n]=a%b; while(q>0) { n++;x=q;q=x/b;A[n]=x%b; }/* end while */ printf("a=%1d b=%1d n=%1d\n " ,a,b,n); for(i=0;i<=n;i++) printf(" A[%d]=%1d\n ",i,A[i]); } /* b-representation */ long repre0(int a,int b) { int A0,A1; A0=a%b;A1=(a/b)%b; printf("a=%ld d=%1d A0=%1d A1=%1d ",a,b,A0,A1); }/* b-representation */ Bài 4 : Cộng hai số biểu diễn theo cơ số B #include<stdio.h> #include<math.h> /* input : Two positive integers x,y in base b representation output : x+y in base b representation */ long a,b,x,y,z,t; int A[100],X[100],Y[100],Z[100],i,n,N; long repre(long a,long b); long add(long x,long y); void main() { x=2748;y=659260;b=32; a=x; /*printf("a=%d b=%d x=%d y=%d \n",a,b,x,y);*/ repre(a,b); N=n; for(i=0;i<=n;i++) X[i]=A[i]; a=y;repre(a,b);if(N<n) N=n; for(i=0;i<=n;i++) Y[i]=A[i]; printf("x=%ld y=%ld b=%ld N=%d \n",x,y,b,N); for(i=0;i<=N;i++) printf("X[%d]=%d Y[%d]=%d \n",i,X[i],i,Y[i]); add(x,y); for(i=0;i<=N;i++) printf("Z[%d]=%d \n",i,Z[i]); /* verification */ z=Z[0];t=1; for(i=1;i<=N+1;i++) {t*=b;z+=(Z[i]*t);} printf("z=%ld x+y=%ld \n",z,x+y);getchar(); }/* main */ long repre(long a,long b) { long q,qq ; n=0 ; q =a/b ; A[n]=a%b ; while(q>0) {n++ ; qq=q ; q=qq/b ; A[n]=qq%b;} } /* b - representation */ long add(long x,long y) { int ii,c=0,tem; /* c is the carry digit */ for(ii=0;ii<=n;ii++) { tem=(X[ii]+Y[ii]+c); if(tem<b) {Z[ii]=tem;c=0;} else {Z[ii]=tem-b;c=1;} }/* ii */ Z[N+1]=c; }/* add */ Bài 5 Nhân hai số theo cơ số B # include<stdio.h> # include<math.h> /* input : 2 positive integers x , y in base b representation, b>=2 , having N+1 digits respectively ; output : x*y in base b representation , with N+M+2 digits */ long a,x,y,z,t,bb,b,k,B[20] ; int A[20],X[20],Y[20],Z[20],i,n,N,M,A0,A1; long repres(long x,long b); long mult(long x,long y); void main () /* cr5i. C , 21 / 6 / 1998 */ { x=659260 ; y=2748 ; b=32 ; repres(x,b) ; N=n ; for(i=0 ; i<=n ; i++ ) X[i]=A[i] ; repres(y,b) ; N=n ; for(i=0 ; i<=n ; i++) Y[i]=A[i] ; printf("x=%ld y=%ld b=%ld N=%ld M=%ld ",x,y,b,N,M); for (i=0 ; i<=N ;i++) printf("X[%d]=%d Y[%d]=%d",i,X[i],i,Y[i]); mult (x,y) ; for (i=0 ; i<=N+M+1 ; i++) printf("Z[%d]=%d ",i,Z[i]); /* verification */ z=Z[0] ; t=1 ; for(i=0 ; i<=(N+M+1) ; i++) {t*=b ; z+=(Z[i]*t) ;} printf ( "z=%ld x*y=%ld" ,z,x*y ) ; } /*MAIN*/ long mult (long x,long y) { int ii,jj,ca ; for(ii=0 ; ii<= N+M+1 ; ii++ ) Z[ii]=0 ; for (ii=0 ; ii<=M ; ii++) { ca=0 ; for(jj=0 ; jj<=N ; jj++ ) { a=Z[ii+jj]+(X[jj]*Y[ii])+ca ; k=1 ; while(k*b<=a) k++ ; k ; A1=k ; A0=a-k*b; Z[ii+jj]=A0 ; ca=A1; } /* jj */ Z[ii+N+1]=A1; } /* ii */ } /* mult */ long a0; int b0 ; long repes (long a0 ,int b0 ) { n=0 ; bb=1 ; B[0]=1 ; while(bb<a0) {bb*=b0 ; n++ ; B[n]=bb ; } n ; for (i=n ; i>0 ; i ) { bb=B[i] ; k=1 ; while(( k*bb) <= a0) k++ ; k ; A[i]=k ; a0-=k*bb ; } A[0]=a0; } /* b - repres*/ Bài 5: Thuật giải Beazout tính gcd của a & b /*Bezout*/ #include <stdio.h> #include <math.h> long A,B; long bezout(long A,long B); void main() /*main*/ { A=9; B=0; bezout(A,B); A=13; B=17;bezout(A,B); A=21; B=36; bezout(A,B); A=2145378312; B=1256993; bezout(A,B); getchar(); } /*Main*/ long a,b; long bezout(long a,long b) { long d,q,r,x,x1,x2,y,y1,y2,tem; if (b==0) { d=a;x=1;y=0; } else { x2=1;x1=0;y2=0;y1=1; while (b>0) { q=a/b;r=a-q*b;x=x2-q*x1;y=y2-q*y1; a=b;b=r;x2=x1;x1=x;y2=y1;y1=y; } d=a;x=x2;y=y2; } tem=A*x+B*y-d; /* if (y<0) y=A+y;*/ printf("A=%ld B=%ld d=%ld x=%ld y=%ld tem=%ld ",A,B,d,x,y,tem); return(a,b); }/*bezout*/ Bài 6 : Tính lũy thừa modulo nghich đảo /* Multiplicative inverse (ok!) */ #include <stdio.h> #include <math.h> long A,B; long inverse(long B, long A); void main() { B=28; A=25; inverse(B,A); B=13; A=3; inverse(B,A); B=12; A=5; inverse(B,A); B=13; A=3; inverse(B,A); getchar(); } long a,b; long inverse(long b,long a) { long d,q,r,x,x1,x2,y,y1,y2,tem; if (b==0) { d=a;x=1;y=0; } else { x2=1;x1=0;y2=0;y1=1; while (b>0) { q=a/b;r=a-q*b;x=x2-q*x1;y=y2-q*y1; a=b;b=r;x2=x1;x1=x;y2=y1;y1=y; } d=a;x=x2;y=y2; } tem=A*x+B*y-d; if (y<0) y=A+y; printf("A=%ld B=%ld d=%ld x=%ld y=%ld tem=%ld \n ",A,B,d,x,y,tem); } Bài 7 : Chương trình mã –dich dùng RSA /* Chuong trinh MA-DICH tren RSA . Plain text duoc bieu dien duoi dang mot day so nguyen */ #include <stdio.h> #include <math.h> #include <conio.h> #define I 4 #include<time.h> long Q[40]; int n,N,M; typedef long vector[I+1]; long MP(long long x,long y,long z); long inverse(long x,long m),ME(long x,long y,long z); long BR(long s); void main() {/*main*/ clrscr(); long q1,p1,M1,x1,phi1,e1,d1,xx,xx1,xx2,xx3, p2,q2,M2,phi2,e2,d2,yy,yy1,yy2,yy3,now0,now,user_time; now0=time(NULL); p1=2699;q1=795659; M1=p1*q1; printf("p1=%ld q1=%ld M1=%ld ",p1,q1,M1); phi1=(p1-1)*(q1-1);e1=3674911; d1=inverse(e1,phi1); printf("phi1=%ld e1=%ld d1=%ld \n",phi1,e1,d1);printf(""); p2=5843;q2=367531;M2=p2*q2;phi2=(p2-1)*(q2-1); e2=3674911;printf("p2=%ld q2=%ld M2=%ld ",p2,q2,M2); d2=inverse(e2,phi2); printf("phi2=%ld e2=%ld d2=%ld \n",phi2,e2,d2);printf(""); xx=12345; xx1=ME(xx,M1,e1);xx2=ME(xx1,M1,e1);xx3=ME(xx2,M1,e1); yy1=ME(xx3,M2,e2);yy2=ME(yy1,M2,e2);yy3=ME(yy2,M2,e2) ; cprintf("\n KET QUA MA : ",yy3); printf("xx=%ld \n\nxx1=%ld xx2=%ld xx3=%ld \n",xx,xx1,xx2,xx3); printf("yy1=%ld yy2=%ld yy3=%ld \n",yy1,yy2,yy3); yy2=ME(yy3,M2,d2);yy1=ME(yy2,M2,d2);xx3=ME(yy1,M2,d2) ; xx2=ME(xx3,M1,d1);xx1=ME(xx2,M1,d1);xx=ME(xx1,M1,d1); /* m=c^d modNN=RO */ cprintf("\n KET QUA DICH : ",xx); printf("xx=%ld \n\nxx1=%ld xx2=%ld xx3=%ld \n",xx,xx1,xx2,xx3); printf("yy1=%ld yy2=%ld yy3=%ld \n",yy1,yy2,yy3); now=time(NULL);user_time=now-now0; printf("\nuser_time = %d seconds ",user_time,"seconds");getchar(); }/*main*/ long x0,m0,p0; long ME(long x0,long m0,long p0) { long A0,p1,Z[40];int i1; BR(p0);N=n;for (i1=0;i1<=N;i1++) Z[i1]=Q[i1]; /*for (i1=0;i1<=N;i1++) printf("Q[%d]=%ld \n",i1,Q[i1]);getchar();*/ A0=x0%m0;p1=1;/* A0=x1modMM B pesentation of x1*/ if(p0>0); { if (Z[0]>0) p1=A0; for(i1=1;i1<=N;i1++) { A0=MP(A0,A0,m0); if(Z[i1]>0) p1=MP(A0,p1,m0); }/*i1*/ } return (p1); }/*phep tinh luy thua modulo*/ long s; long BR(long s) { int ii; long x,q; ii=0;x=s;q=(x>>1);Q[ii]=x-(q<<1); while (q>0) { ii++;x=q;q=(x>>1);Q[ii]=x-(q<<1); } n=ii; }/*Bit-Representation,bieu dien x theo bimary*/ long x,y,k; long MP(long x,long y,long k) { int ii;long P,t1,t2,Y[40];double tem;t1=x;t2=y; if(x<0) {x=-x;x=k-(x%k);} else x=x%k; if(y<0) {y=-y;y=k-(y%k);} else y=y%k; if ((x==0)||(y==0)) {P=0;goto label1;} BR(y); M=n; for(ii=0;ii<=M;ii++) Y[ii]=Q[ii]; if(Y[0]>0) P=x; else P=0; for(ii=1;ii<=M;ii++) { tem=2.0*x; if(tem>=k) tem-=k; x=(long)tem; if(Y[ii]>0) { tem+=P; if(tem>=k) P=(long)(tem-k); else P=(long)tem; } }/*ii*/ x=t1; y=t2; label1:return(P); }/*phep nhan modulo*/ long b,a;/*0<b<a,Multicative inverce of b mod a*/ long inverse(long b,long a) { long A,B,d,q,r,x,x1,x2,y,y1,y2,tem; A=a;B=b; /*Dung Beazout*/ if(b==0) { d=a;x=1;y=0; }/*if*/ else { x2=1;x1=0;y2=0;y1=1; while (b>0) { q=a/b; r=a-q*b; x=x2-q*x1; y=y2-q*y1; a=b;b=r;x2=x1;x1=x;y2=y1;y1=y; }/*while*/ d=a;x=x2;y=y2; }/*else*/ tem=A*x+B*y-d; if(y<0) y=A+y; return(y); }/*inverse*/ Bài 8 : RSA mã chuỗi ký tự : plain text được nhập vào dưới dạng một chuỗi ký tự #include <iostream.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <stdio.h> #include<string.h> #include<iomanip.h> long MP(long long ,long ,long ); //Nhan luy thua long inverse(long ,long ); //Modulo nghich dao long ME(long ,long ,long ); //Luy thua modulo void BR(long ); //Doi sang dang bit (co so 2) int SNT(long); int snt( long); [...]... C ( bảo mật thông điệp) Nhập thông điệp cần bảo mật “m” từ KB Lấy (e,N) của bên nhận thông điệp từ bang khóa hoặc PK server Mã bằng (e,N) của bên nhận : c= me modN gửi c đi Bên nhận dùng (d,N) của mình để giải mật Nếu giải được  OK! Thoát ra menu chính Hỏi có tiếp tục Ko??? Yes ! Trở về menu chính No ! Bye bye! Thoát ra HĐH BÀI TẬP THỰC HÀNH AN TOÀN & BẢO MẬT THÔNG TIN PHẦN 2 : AN TOÀN VÀ BẢO MẬT... thông qua tấn công mail Server hay sniffer trong mạng nội bộ v.v Và cuối cùng lấy được Domain này thông qua email chủ này Bước 1: Tìm thông tin về Domain Ta vào trang www.whois.net để tìm kiếm thông tin và đánh vào domain mình muốn tìm kiếm thông tin Sau đó ta nhận được thông tin như sau: Ngoài việc tìm thông tin về domain như trên, chúng ta có thể sử dụng các tiện ích Reverse IP domain lookup để có thể... Việc tìm kiếm được thông tin này rất cần thiết với Hacker, bởi vì dựa vào thông tin sử dụng chung Server này, Hacker có thể thông qua các Website bị lỗi trong danh sách trên và tấn công vào Server từ đó kiểm soát tất cả các Website được hosting trên Server Bước 2: Tìm thông tin email Trong bài thực hành này, chúng ta sử dụng phần mềm “1st email address spider” để tìm kiếm thông tin về các email Hacker... mềm này để thu thập thêm thong tin về mail, hay lọc ra các đối tượng email khác nhau, tuy nhiên bạn có thể sử dụng tool này để thu thập thêm thông tin nhằm mục đích marketing, ví dụ bạn cần tìm thông tin của các email có đuôi là @vnn.vn hay @hcm.vnn.vn để phục cho việc marketing sản phẩm Ta có thể cấu hình việc sử dụng trang web nào để lấy thông tin , ví dụ sử dụng trang google.com để tìm kiếm Sau... bằng sử dụng lệnh “ Nmap –v -O ip address” C:\Documents and Settings\longdt>nmap -vv -O 10.100.100.7 (xem chi tiết Nmap quét) Starting Nmap 4.20 (http://insecure.org ) at 2007-08-02 10:46 Pacific Standard Time Initiating ARP Ping Scan at 10:46 Scanning 10.100.100.7 [1 port] Completed ARP Ping Scan at 10:46, 0.22s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host at 10:46 Completed... mật khẩu Bước 4 : crack mật khẩu dùng Brute force NTLM hash Trong bài ta chọn user longdao, kích phải tên user vừa chon và chọn Brute force theo NTLM hash.Chọ start Sau khi chọn chế độ này ta thấy PC bắt đầu tính toán và cho ra kết quả Kết quả : password of longdao user is 12345 BÀI THỰC HÀNH SYSTEM HACKING BÀI 1: FOOTPRINTING Đây là kỹ thuật giúp hacker tìm kiếm thông tin về 1 doanh nghiệp, cá nhân hay... rất nhiều thông tin của mục tiêu nhờ vào kỹ thuật này Ví dụ trong phần thực hành thứ 1 chúng ta áp dụng kỹ thuật này tìm kiếm thông tin về một domain(ví dụ là www.itvietnam.com) và xem thử email liên lạc của domain này là của ai, trong phần thực hành thứ 2 chúng ta truy tìm 1 danh sách các email của 1 keywork cho trước, phương pháp này hiệu quả cho các doanh nghiệp muốn sử dụng marketing thông qua... Stop and View → double click trên dòng có Protocol là ESP →chọn mục ESP Bài 7 : Quản lý local Password Như chúng ta đã học ở phần lý thuyết, Module System Hacking bao gồm những kỹ thuật lấy Username và Password, nâng quyền trong hệ thống, sử dụng keyloger để lấy thông tin của đối phương(trong bước này cũng có thể Hacker để lại Trojan, vấn đề học ở chương tiếp theo), ẩn thông tin của process đang hoạt... Network Distance: 1 hop OS detection performed Please report any incorrect results at http://insecure.org/nmap/submit/ Nmap finished: 1 IP address (1 host up) scanned in 2.781 seconds Tuy nhiên có 1 số host Nmap không thể nhận diện ra như sau: C:\Documents and Settings\longdt>nmap -O 10.100.100.16 Starting Nmap 4.20 (http://insecure.org ) at 2007-08-02 10:55 Pacific Standard Time Interesting ports... d1=inverse(e1,phi1); cout . cout<<" NHAP VAN BAN CAN MA HOA: "; gets(a); int n= strlen(a); cout<<"chieu dai chuoi = "<<n<<endl; cout<<" VAN BAN CAN MA HOA "<<a;. #include<iomanip.h> long MP(long long ,long ,long ); //Nhan luy thua long inverse(long ,long ); //Modulo nghich dao long ME(long ,long ,long ); //Luy thua modulo void BR(long ); //Doi sang dang. BÀI TẬP THỰC HÀNH PHẦN MẬT MÃ (12 tiêt) Bài 1 : Kiểm tra số nguyên tố : #include <iostream.h> #include <conio.h>

Ngày đăng: 14/08/2014, 15:03

Từ khóa liên quan

Trích đoạn

Tài liệu cùng người dùng

Tài liệu liên quan