之前一直在学php,没想到考察的是python。。恶补了一下,幸好上课的时候看了一些基本语法和系统编程、linux里面关于线程的描述,最后还是做出来了。

第一题:Flag经base64编码后,再进行移位加密得到密文:IVUBNJmwAx5Wq29zXTekNyde。移位加密位移量未知。编写脚本得到flag。

很简单的一道题,移位后保存结果,然后用自带的base64模版里的函数直接解码,值得一提的是python中不支持字符(char)类型,所以很多操作较c语言来说还是比较麻烦的(可能是我对python里面字符串了解不多= =),用for遍历,得到每一个字符使用ord()函数取其asc码,加一之后利用chr()函数返回字符。完成移位操作。

以下是代码(python版本是2.7.6):

#usr/bin/env python
"8.6 exam1"
import base64
AIMSTR='IVUBNJmwAx5Wq29zXTekNyde'
FILENAME='/home/al/Desktop/res.txt'
def movword(n,a):"single letter"temp=ord(a)if temp>47 and temp<58:return chr(temp)i=0 while i<n:temp+=1if temp==91:temp =65if temp==123:temp =97i+=1 return chr(temp)def movstr(n,str):"for each word in str mov n forward"temp=""for ch in str:ch=movword(n,ch)temp+=chreturn tempfileobj=open(FILENAME,"w")
temp=AIMSTR
for i in range(24):temp=movstr(1,temp)temp2=base64.b64decode(temp)print temp2fileobj.writelines('%s\n'%temp2)
fileobj.close()
print 'Done!'

第二题: 设计一个线程池控制的端口扫描器,要求用socket connect方法即可。指定端口后开启线程池调度,扫描结束后将结果放入消息队列中,开启打印线程打印消息。要求扫描和打印是并行的。

关于多线程编程和消息队列的实现已在上一篇博文中讲过,这里不做赘述,主要总结下web编程,也就是socket模版和套接字的使用问题。

这里主要叙述如何建立一个TCP服务器。

首先创建一个socket对象,创建时第一个参数是套接字类型,这里我们使用AF_INET,是一种基于网络的套接字。        再使用bind()内建函数绑定套接字的地址,其中地址由主机和端口组成HOST设为空表示可以绑定在所有有效地址上,端口选一个未被占用的就行了。

之后这个socket对象就会一直监听这个端口传来的数据,使用内建的recv()可以被动接受传来的数据,并且可以将其保存在一个变量之中,或者直接放入消息列表。

接下来就只需要一直让这个recv()函数一直处于活动状态不停监听传来的数据就行了。

关于收到的数据放入消息队列q,然后reader()函数所在线程读取q中的消息,强调一下要给reader()中q.get()函数中加上非零的参数block,使得在队列中没有消息的时候能挂起而不是一直输出空格。

代码如下:

from socket import *
from time import *
from threading import Thread
from Queue import QueueHOST=''
PORT=9011
BUFSIZ=1024
ADDR=(HOST,PORT)#the attribute of socketdef listener(queue):tcp=socket(AF_INET,SOCK_STREAM)tcp.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)tcp.bind(ADDR)tcp.listen(0)print 'waiting for connection....'tcp,addr=tcp.accept()print '...connected from:',addrwhile True :data = tcp.recv(BUFSIZ)if not data:breakqueue.put('[%s] %s'%(ctime(),data),1)#print '[%s] %s'%(ctime(),data)tcp.close()def reader(queue):while True:data=queue.get(1)print datafuncs=[listener,reader]
nfuncs=range(len(funcs))
threads=[]
q=Queue(32)for i in nfuncs:t=Thread(target=funcs[i],args=(q,))threads.append(t)
for i in nfuncs:threads[i].start()
for i in nfuncs:threads[i].join()

最后说一下编写代码过程中遇到的问题。

一是如果过早的关闭了套接字对象,那么在调用recv()函数的时候会产生一个没有写权限的错误。

二是args的类型一定要是一个元组,当元组里面只有一个元素的时候似乎会出错,不过在后面加上逗号就好了。

转载于:https://blog.51cto.com/al0707/1537591

14-08-08 考核试题总结~相关推荐

  1. 成功解决xgboost.core.XGBoostError: b‘[14:48:08] 0 feature is supplied. Are you using raw Booster inter

    成功解决xgboost.core.XGBoostError: b'[14:48:08] C:\\Users\\Administrator\\Desktop\\xgboost\\src\\learner ...

  2. 面试题 08.08. 有重复字符串的排列组合-快速排序+回溯深度优先搜索

    面试题 08.08. 有重复字符串的排列组合+快速排序加回溯深度优先搜索 有重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合. 示例1: 输入:S = "qqe" 输 ...

  3. 面试题 08.08. 有重复字符串的排列组合

    面试题 08.08. 有重复字符串的排列组合 有重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合. 示例1: 输入:S = "qqe"输出:["eqq&qu ...

  4. 中国医科大学2021年9月《护理研究》作业考核试题

    中国医科大学2021年9月<护理研究>作业考核试题 试卷总分:100 得分:100 一.单选题 (共 20 道试题,共 20 分) 1.第二次世界大战后提出的关于人体医学研究行为准则的第一 ...

  5. 小米运维部14年校招笔试题A的个人答案

    15年准备实习生面试时答的题,仅供参考 具体题目详见  http://www.tuicool.com/articles/eYRZBr http://noops.me/?p=1154 一.linux基础 ...

  6. python基础考核试题及答案

    python考核试题及答案 mr_tangshuai 2019-06-12 16:14:34  61125  收藏 635 分类专栏: python 文章标签: python python习题 版权 ...

  7. 编译原理视角下的 c c 语言左值教学,西安交通大学18年3月课程考试《编译原理》作业考核试题...

    Q.微信均是1219895388,Q:1219895388 联系:QQ:576696131 西安交通大学18年3月课程考试<编译原理>作业考核试题 共题,总分:100分 答题中 分 一.单 ...

  8. HighNewTech:2019.08.08华为发布—面向2025十大趋势

    High&NewTech:2019.08.08华为发布-面向2025十大趋势 导读        华为今日发布全球产业展望GIV@2025,提出智能世界正在加速而来,触手可及,并预测:到202 ...

  9. 17届中职计算机应用基础,西安交通大学17年3月课程考试《计算机应用基础》作业考核试题...

    西安交通大学17年3月课程考试<计算机应用基础>作业考核试题 一.单选题(共 30 道试题,共 60 分.)V 1. 在Word中,要选定全文,可用的快捷键为(). A. Ctrl+S B ...

  10. 上海交通大学计算机应用基础答案,西安交通大学17年3月课程考试《计算机应用基础》作业考核试题答案...

    http://www.mouxue.com/forum.php? ... p;page=1#pid1402268 一.单选题(共 30 道试题,共 60 分.)V 1.  在Wor中,要选定全文,可用 ...

最新文章

  1. Django ModelForm操作及验证
  2. 服务管理---服务懂你的业务吗
  3. BZOJ 2806 Luogu P4022 [CTSC2012]Cheat (广义后缀自动机、DP、二分、单调队列)
  4. select中option解析
  5. 从分布式一致性谈到CAP理论、BASE理论
  6. python3档案管理程序源码_php人事档案管理系统,源码免费分享
  7. Enterprise Library 3.1 简化使用范例一
  8. PVS中TFTP的隐藏配置
  9. windows 下MinGW的选择和安装笔记
  10. 供应链金融——研究结果总结
  11. 三维装箱算法matlab,三维装箱遗传算法matlab程序
  12. 5g无线图传信号测试软件,不到千元的5G无线图传?小试致迅CineEye
  13. 平面设计是什么?学会平面设计可以从事什么工作?
  14. 微博SDK第三方授权登陆
  15. java网络编程--UDP程序设计
  16. TOJ 3015.Convert Kilometers to Miles
  17. Excel:12 个操作小技巧
  18. Linux 获取毫秒级时间戳
  19. 三菱FX5U系列PLC表格定位指令TBL出现偶尔不执行的处理对策
  20. 《四平青年》是部好电影

热门文章

  1. paip.提升安全性----软键盘的弱点
  2. Vanguard集团在美上市ETF资产超8700亿美元
  3. julia的几种画图方法
  4. 人工智能︱腾讯如何利用英特尔至强处理器在游戏内创建购买推荐系统?
  5. 从OpenStack到OpenInfra
  6. 【优化算法】混合灰狼优化布谷鸟搜索优化算法(AGWOCS)【含Matlab源码 1540期】
  7. 【定位仿真】基于matlab RSSI三边定位仿真【含Matlab源码 1690期】
  8. 毕设题目:Matlab数字信号处理
  9. 【优化算法】麻雀搜索优化算法(SSA)【含Matlab源码 1288期】
  10. 【图像去噪】基于matlab GUI均值+中值+高斯低通+多种小波变换图像去噪【含Matlab源码 856期】