版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息安全工程实践二实践报告姓名朱杰学号20165346班级软信1603指导教师徐剑王学毅马毅程序实践名称信息安全工程实践二程序实践内容网络程序设计开设学期2017-2018 第二学期开设时间第 1 7周第 1 9周报 告 日 期2018年7月14 日评定成绩评定人签字评定日期东北大学软件学院一、程序实践概述1、 题目名称:Linux操作系统及其相关命令,Linux编程基础Linux程序设计基础2、时间进度:12学时3、开发环境:Ubantu二、问题分析1、功能说明:who,w,du,du,df 等:touch,cp,mv,rm,fi nd,grep,cat,more,sort :ls,dir,
2、mkdir,rmdir,cd:ps,top,cal,last,whereis,date:pin g,write,te In et,ftp,talk熟练掌握如下Linux命令。系统信息命令 文件操作命令 目录操作命令 进程操作命令 网络操作命令vi命令 编程实现快速排序算法;;即实现如下功能:f2,且其内容与fl完全一致。 并保存在stu.txt文本文件中,文件中,同时在屏幕上输出高于 实现文本文件拷贝函数copy(f_source, f_target)$ ./copy f1 f2以上程序执行后当前目录会形成一个新的文件 编写一个程序,要求:输入N个学生的学号和成绩,对学生成绩进行排序并把排序后
3、的结果输出到score.txt平均成绩的学生的学号和成绩。 编写一个程序找出串str1和串str2的所有最长公共子串。 从文件file.in中读出整数,将其中不同整数及其出现次数,按整数由大到小的顺序输出到文件t.out中。要求:采用2叉有序树做为存储结构。(选作)2、解决方案:利用PPT中所提供的相关函数使用解决问题1、模块结构:模块功能图和模块描述 根据用户输入数组进行快速排序,然后输出排序后的数组 用户创建f1,然后运行函数生成f2 根据用户输入学生的数据,生成原数据stu文本以及根据成绩进行排序并把排序后的结果输出到score文本中,在屏幕上输出高于平均成绩的学生的学号和成绩 根据用户
4、输入的两个字符串,找出最长公共子串 读出文件中的整数,将其中不同整数及其出现次数,按整数由大到小的顺序输出到文件t.out 中2、数据结构: int a10 FILE *fp1,*fp2 struct stude ntint nu mber;int score;stude nt10 char a10,b10 文本fl3、总体流程: 给出流程图幵始用户输入学主数据生成別u文本按成绩进行 排序输出到屏幕否上结束幵蜡用户輪入两 于宇苻串掃出数组匕毎束4、关键算法:给出关键算法描述2,则不需排序if (n um1) /重复的判断条件,如果长度小于while (i != j) for (j=nu m_1
5、; ij; j-) m+;if (ajk) ai = aj;n+;break;for (i=0; ik) aj = ai;n+;break;ai = k;sort(a, i);sort(a+i+1, nu m-i-1); while(c=fgetc(fp1)!=E0F)将 fl 拷贝到 f2 中fputc(c,fp2);putchar(c); for(i=0;im;i+)ai=stude nti.score;sort(a,m);for(i=0;im;i+)/结构体排序for(j=0;jm;j+)if(ai=stude ntj.score) strcpy(stude nt1i. nu m,stu
6、de ntj. nu m); stude nt1i.score=stude ntj.score;fp=fope n( score.txt,w+);fwrite(&stude nt1,sizeof(stude nt1),1,fp);fclose(fp); for(i=0;ile n; i+)for(j=0;jstrle n( b)strcpy(b,a);m=0;四、调试记录给出测试用例编号用例描述测试结果修改情况分析2 1 3 4 5 6 7 8 9 101 2 3 4 5 6 7 89 10无程序运行正确在fl中输入asd生成了 f2,打 开后里面有asd无程序运行正确在屏幕中输入123456
7、 80123457 70123458 60屏幕上输出:比 平均成绩高的 学生:12345680无程序运行正确输入f仁abcdef 输入 f2=abcgkt最长公子串为:abc无程序运行正确五、创新说明 用户可以自行定义数据,根据用户输入的数组进行排序 将fl的内容同时在屏幕上输出,用户可以直接查看文件内容 用户可以自行定义学生个数以及在屏幕上输入学生数据,并且将成绩单独放到另一数组 排序后根据序号对结构体排序 用户可以输入任一字符串进行对比一、程序实践概述1、题目名称:Socket编程基础(1)时间服务器(2)远程文件备份服务器2、时间进度:8学时3、开发环境:Ubantu二、问题分析1、功能
8、说明:编程实现时间服务器编写一个网络时间服务器timeserver,该服务器能应具有如下功能:够为网络上的用户提供时间服务,即为网络用户返回服务器的当前时间;记录发出请求的网络用户的 IP地址(保存到文件中),格式如下:IP地址请求时间编写时间服务客户端 timeclie nt ,该客户端能够向服务器发送时间服务请求,并把获得的时间返回给用户。 编程实现远程文件备份服务器分别采用TCP或UDP协议编写一个远程数据备份服务器,运行客户端将本地文件备份到远程的服务器中。服务器的功能:接受客户端请求,把客户端的文件进行备份(可以备份到指定的文 件夹)。客户端的功能:与远程服务器进行连接,在连接后把本
9、地的文件发送给远程备份服务器。 设计并实现带身份认证的远程数据备份服务器(选作)在实验的基础上增加身份管理和认证功能:2、解决方案:对于客户端则是服务器端过程就是 socket-bi nd-liste n-accept-Read,write socket-c onn ect-read,write二、万案设计SetterLisieiu.|1、模块结构:CfeentSock 團W- fil*.写户眾勺4岂用吃戏半*,JRecm-L*2、数据结构: 文件操作,time_t t , socket 文件操作,socket3、总体流程:Server4、关键算法: time_t t;if(argc!=2)/
10、 获得 ip 地址prin tf(usage %sh_addr);if(conn ect(sockfd, (struct sockaddr *)& server, sizeof(server) = -1)prin tf(c onn etc() error n);return 0;recv(sockfd,(void *)&t,sizeof(time_t),0); prin tf(Time is %sn,ctime(&t);5、界面设计:直接使用终端界面进行四、调试记录给出测试用例编号用例描述测试结果修改情况分析1在客户端输入clientconn etc()错误将ip 改为172
11、.17.3.94这里的ip地 址应使用服 务端的ip地 址2在客户端输入client4Time is SatJul710:48:30 2018此时结果正 确3在客户端输入 client 4客户端输入/home/logi n/Desktop/f1.txt服务端输入/home/logi n/Desktop/f2.txt在服务端的文 件夹里找到f2.txt ,并且内容与f1 一致无程序运行正 确五、创新说明 拥有错误提示,即用户可以知道是哪个模块出错,方便进行检查 拥有用户认证功能,即登录时需要特定的用户名跟密码,客户端在屏幕上输入文件路径 上载,服务端再输入
12、存贮的文件路径。一、程序实践概述1、题目名称:Libpcap开发包使用2、时间进度:16学时3、开发环境:Ubantu二、问题分析1、功能说明:(1)获取网络接口名字和掩码等信息(2)捕获数据包(单个数据包和多个数据包两种情况)(3)以太网数据报捕获(4)ARP数据包捕获2、解决方案:并把抓包结果输出在文使用QT图形化编程,将4个功能分别对应 4个按钮点击事件, 本框中方案设计1、模块结构:2、数据结构:Libpcap3、总体流程:4、关键算法: 给出关键算法描述void getip()char error_co nten tPCAP_ERRBUF_SIZE;struct in _addr n
13、 et_ip_address; / 网络地址struct in _addr n et_mask_address; 掩码地址char *net_in terface; char *n et_ip_stri ng; char *n et_mask_stri ng; u_in t32_t net_ip;u_in t32_t n et_mask;/接口名字/网络地址字符串形式/掩码地址字符串形式/网络地址/掩码地址net_in terface=pcap_lookupdev(error_c onten t);/ 获取网络接口pcap_lookup net(获取网络和掩码地址net_in terface,
14、&n et_ip,&n et_mask,error_c ontent);printf(接口名字为:%sn,net_interface);n et_ip_address.s_addr= net_ip;net_ip_stri ng=i net_n toa( net_ip_address);网络地址转为字符串形式printf(网络地址为:%sn,net_ip_string);n et_mask_address.s_addr =n et_mask;n et_mask_stri ng=inet_n toa( net_mask_address); 掩码地址转为字符串形式 printf(掩码地址为:%sn,
15、net_mask_string);void getpacket()char error_co nte ntPCAP_ERRBUF_SIZE;struct pcap_pkthdr protocol_header;/ 数据包头/libpcap 句柄 /BPF过滤规则/过滤规则数据包内容/掩码地址/网络地址/网络接口pcap_t *pcap_ha ndle;struct bpf_program bpf_filter; char bpf_filter_stri ng=ip; const u_char *packet_c ontent;bpf_ u_in t32 n et_mask;bpf_u_i nt
16、32 net_ip;char *net_in terface;net_in terface=pcap_lookupdev(error_c onten t);/ 获取网络接口pcap_lookup net(获取网络和掩码地址n et_i nterface,&n et_ip,&n et_mask,error_c ontent);pcap_ha ndle=pcap_ope n_live(net_in terface,BUFSIZ,1,0,error_c onten t);/网络接口,数据包大小,混杂模式,等待时间,错误信息pcap_compile(pcap_ha ndle,&bpf_filter,b
17、pf_filter_stri ng,0,n et_ip);/编译过滤原则pcap_setfilter(pcap_ha ndle,&bpf_filter);/ 设置过滤原则packet_content=pcap_next(pcap_handle,&protocol_header); 捕获一个数据包 printf(从 %s 捕获了一个数据包 n,net_interface);printf(数据包长度为:%dn,protocol_header.len); pcap_close(pcap_ha ndle);void getpackets()void packet_callback(u_char *ar
18、gument,const struct pcap_pkthdr* packet_header,const u_char* packet_c onten t)static int packet_ nu mber=1;printf(捕获数据包的个数为:%dn,packet_number);packet_ nu mber+;char error_co nten tPCAP_ERRBUF_SIZE;/数据包头/libpcap 句柄 /BPF过滤规则/过滤规则数据包内容/掩码地址/网络地址/网络接口struct pcap_pkthdr protocol_header; pcap_t *pcap_ha n
19、dle;struct bpf_program bpf_filter; char bpf_filter_stri ng=ip;const u_char *packet_c ontent; bpf_ u_in t32 n et_mask;bpf_u_i nt32 net_ip;char *net_in terface;net_in terface=pcap_lookupdev(error_c onten t);/ 获取网络接口pcap_lookup net(获取网络和掩码地址n et_i nterface,&n et_ip,&n et_mask,error_c ontent);pcap_ha nd
20、le=pcap_ope n_live(net_in terface,BUFSIZ,1,0,error_c onten t);/网络接口,数据包大小,混杂模式,等待时间,错误信息pcap_compile(pcap_ha ndle,&bpf_filter,bpf_filter_stri ng,0,n et_ip);/编译过滤原则pcap_setfilter(pcap_ha ndle,&bpf_filter);/ 设置过滤原则pcap_loop(pcap_ha ndle,10,packet_callback,NULL);pcap_close(pcap_ha ndle);void getetherne
21、t()struct ether_headerunt8_t ether_dhost8; /目的以太网地址 unt8_t ether_shost8; 源以太网地址 un t16_t ether_type;/ 以太网类型;char error_co nte ntPCAP_ERRBUF_SIZE;/数据包头/libpcap 句柄 /BPF过滤规则/过滤规则/掩码地址/网络地址/网络接口 数据包缓存/以太网地址 以太网类型struct pcap_pkthdr protocol_header;pcap_t *pcap_ha ndle;struct bpf_program bpf_filter;char b
22、pf_filter_stri ng=ip;bpf_ u_in t32 n et_mask;bpf_u_i nt32 net_ip;char *net_in terface;const u_char *packet_c ontent;u_char *mac_stri ng;u_short ether net_type;struct ether_header *ethernet_protocol;/ 以太网协议变量 net_in terface=pcap_lookupdev(error_c onten t);/ 获取网络接口pcap_lookup net(获取网络和掩码地址n et_i nterf
23、ace,&n et_ip,&n et_mask,error_c ontent);pcap_ha ndle=pcap_ope n_live(net_in terface,BUFSIZ,1,0,error_c onten t);/网络接口,数据包大小,混杂模式,等待时间,错误信息pcap_compile(pcap_ha ndle,&bpf_filter,bpf_filter_stri ng,0,n et_ip);/编译过滤原则pcap_setfilter(pcap_ha ndle,&bpf_filter);/ 设置过滤原则if(pcap_datal in k(pcap_ha ndle)!=DLT_
24、EN10MB)return;packet_content=pcap_next(pcap_handle,&protocol_header); 捕获一个网络数据包printf(从 s 捕获了一个数据包 n,net_interface);printf(该数据包时间信息为:printf(数据包长度为:%dn,protocol_header.len);ether net_protocol=(struct ether_header*)packet_c ontent;ethernet_type=ntohs(ethernet_protocol-ether_type); 获得以太网类型printf(以太网类型为
25、:04xn,ethernet_type);switch(ethernet_type)case 0x0800: printf(协议类型为 IP 协议 n”);break;case 0x0806: printf(协议类型为 ARP 协议 n);break;case 0x8035: printf(协议类型为 RARP 协议 n);break;default: break;mac_string=ethernet_protocol-ether_shost; 获得源以太网地址prin tf(源以太网地为:%02x:%02x:%02x:%02x:%02x:%02x,*mac_string,*(mac_str
26、ing+1),*(mac_string+2),*(m ac_stri ng+3),*(mac_stri ng+4),*(mac_stri ng+5);mac_string=ethernet_protocol-ether_dhost; 获得目 的以太网地址printf(目的以太网地为:%02x:%02x:%02x:%02x:%02x:%02x,*mac_string,*(mac_string+1),*(mac_string+2),*(m ac_stri ng+3),*(mac_stri ng+4),*(mac_stri ng+5);pcap_close(pcap_ha ndle); void g
27、etarp()pcap_t* pcap_ha ndle; char error_co nten tPCAP_ERRBUF_SIZE;char *net_in terface;/掩码地址/网络地址获取网络和掩码地址struct bpf_program bpf_filter; char bpf_filter_stri ng=arp; bpf_ u_in t32 n et_mask; bpf_u_i nt32 net_ip; pcap_lookup net(net_in terface,&n et_ip,&n et_mask,error_c ontent);struct ether_headerun
28、t8_t ether_dhost8; /目的以太网地址 unt8_t ether_shost8; 源以太网地址 un t16_t ether_type;/ 以太网类型;typedef u_in t32_t in_addr_t;struct arp_headerarp 协议格式u_i nt16_t arp_hardware_type; 硬件地址类型u_int16_t arp_protocol_type; 协议地址类型u_int8_t arp_hardware_length;/ 硬件地址长度u_int8_t arp_protocol_length;/ 协议地址长度u_i nt16_t arp_op
29、eration_code;/ 操作类型u_in t8_t arp_source_ethernet_address 6;/ 源以太网地址u_int8_t arp_source_ip_address4; 源 IP 地址u_int8_t arp_destination_ethernet_address6;/ 目的以太网地址u_int8_t arp_destination_ip_address4; 目的 IP 地址;void arp_protocol_packet_callback(u_char*argume nt,c onststruct pcap_pkthdr*packet_header,c on
30、st u_char* packet_c onten t)struct arp_header *arp_protocol; /arp 协议变量u_short protocol_type;/ 协议类型u_short hardware_type;/ 硬件类型u_short operatio n_code; 操作类型u_char *mac_string; 以太网地址struct in_addr source_ip_address;/源 IP 地址struct in_addr destination_ip_address;/ 目的 IP 地址u_char hardware_le ngth;/ 硬件长度u
31、_char protocol_length;/ 协议长度arp_protocol=(struct arp_header*)(packet_c onten t+14);hardware_type=n tohs(arp_protocol-arp_hardware_type);protocol_type=n tohs(arp_protocol-arp_protocol_type);operatio n_code=n tohs(arp_protocol-arp_operati on _code);protocol_le ngth=arp_protocol-arp_protocol_le ngth;ha
32、rdware_le ngth=arp_protocol-arp_hardware_le ngth;printf(ARP硬件类型为 printf(ARP协议类型为 printf(ARP硬件长度为 printf(ARP协议长度为 printf(ARP操作类型为 switch(operati on _code)%dn ”,hardware_type);%dn ”,protocol_type);%dn,protocol_le ngth);%dn,protocol_le ngth);%dn,operati on _code);case 1:printf(ARP 查询协议 n);break; case 2
33、:printf(ARP 应答协议 n);break;case 3:printf(RARP 查询协议 n);break;case 4:printf(RARP 应答协议 n);break;default: break;mac_stri ng=arp_protocol-arp_source_ether net_address;prin tf(源以太网地址为:%02x:%02x:%02x:%02x:%02x:%02x,*mac_string,*(mac_string+1),*(mac_string+2),*(mac_stri ng+3),*(mac_stri ng+4),*(mac_stri ng+5
34、);memcpy(void*)& source_ip_address,(void*)&arp_protocol-arp_source_ip_address,sizeof(struct in _addr);printf(” 源 IP 网地址为:%sn,inet_ntoa(source_ip_address);mac_stri ng=arp_protocol-arp_dest in ati on _ether net_address;printf(目的以太网地址为:%02x:%02x:%02x:%02x:%02x:%02x,*mac_string,*(mac_string+1),*(mac_str
35、ing+2),*(m ac_stri ng+3),*(mac_stri ng+4),*(mac_stri ng+5);memcpy(void*)& desti nati on_i p_address,(void*)&arp_protocol-arp_desti nati on _ip_address,sizeof(struct in _addr);printf(目的 IP 网地址为:%sn,inet_ntoa(destination_ip_address);void ether net_protocol_packet_callback(u_char *argume nt,c onst stru
36、ct pcap_pkthdr* packet_header,c onst u_char* packet_c onten t)u_short ether net_type;struct ether_header *ether net_protocol;u_char *mac_stri ng;static int packet_ nu mber=1;printf(捕获了 %d 个 ARP 数据包 n”,packet_number);ether net_protocol=(struct ether_header*)packet_c ontent;ether net_type=n tohs(ether net_protocol-ether_type);printf(以太网类型为:%04xn,ethernet_type);switch(ethernet_type)case 0x0800: printf(协议类型为 IP 协议 n”);break;case 0x0806: printf(协议类型为 ARP 协议
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心血管疾病患者心理干预与生活质量优化策略
- 心脏移植供体分配的公众参与决策机制
- 心脏微血管病变的微循环功能保护策略
- 心脏介入手术中冠脉夹层的预防策略
- 循环肿瘤DNA(ctDNA)检测临床应用
- 影像AI筛查中的患者数据边界
- 2025年股权资产托管协议
- 应急指挥体系下的物资调度流程
- 平衡功能障碍的康复评定与训练策略
- 干细胞治疗伦理审查标准化
- 漳州物流行业分析报告
- 2025云南昆明巫家坝城市发展建设有限公司社会招聘14人笔试参考题库及答案解析
- 2025内蒙古通辽经济技术开发区社区工作者招聘35人参考题库附答案
- 2025年昆明市呈贡区城市投资集团有限公司及下属子公司第二批招聘(11人)备考笔试题库及答案解析
- 母牛出租合同范本
- 2025山西朔州市公安局招聘留置看护岗位辅警260人参考考试题库及答案解析
- 2025年计免相关传染病培训试题及答案
- 项目技术负责人绩效考评表范例
- 水电维修工面试题库含答案
- 土地整治项目课件
- 2025河北邯郸市武安市正通食品药品检验技术服务中心有限公司招聘食品检测专业技术人员4人参考模拟试题及答案解析
评论
0/150
提交评论