fd

Syclover2019 WP

喜你入骨 提交于 2020-01-26 22:52:49
pwn Find Tools 没有附件,只给了远程环境,目的是让我们使用pwntools工具,exp如下: from pwn import * p=remote('pwnto.fun',9999) p.recvuntil("password:") p.send('l1ve_l0ng_and_pwn') #此处不能使用sendline(引入'\n') p.recv() print p.recv #!将接收到的flag打印出来 #p.interactive() 这道题只是发送和接收包,flag是通过接收得到的,而不是通过拿到shell得到的,所以并不需要交互 pwntools IO模块使用: p.send(data) #发送数据 p.sendline(data) #!! 发送数据和'\n' p.recv(numb=2048,timeout=default) #接收指定字节和超时的数据 p.recvline(keepends=True) #接收一行数据 p.recvuntil("...",drop=false) #接收数据直到我们设置的标志 p.recvall( ) #一直接收到EOF为止 p.recvrepeat(timeout=default) #持续接收直到EOF出现或超时 p.interactive( ) #得到shell后进入交互模式 Baby rop 查看保护:

【数学】二倍角,三折腰

天涯浪子 提交于 2020-01-26 10:19:14
【二倍角,三折腰】 \huge\textsf{【二倍角,三折腰】} 【二倍角,三折腰】 【模板】 \Large\texttt{【模板】} 【模板】 如图,当 ∠ C = 1 2 ∠ B 时,可在BC上取点D,使得 A D = D C \textsf{如图,当}\angle C = \frac{1}{2} \angle B \textsf{时,可在BC上取点D,使得}AD=DC 如图,当 ∠ C = 2 1 ​ ∠ B 时,可在 BC 上取点 D ,使得 A D = D C 此时 A B = A D = D C (显而易见) \textsf{此时}AB=AD=DC\textsf{(显而易见)} 此时 A B = A D = D C (显而易见) 有时可以作三线合一( A E ⊥ B C , F D ⊥ A C )为辅助。 \textsf{有时可以作三线合一(}AE \perp BC, FD \perp AC\textsf{)为辅助。} 有时可以作三线合一( A E ⊥ B C , F D ⊥ A C )为辅助。 【例1】《平几大典——60 ° 与正三角形》 229题 \large\texttt{【例1】《平几大典——60}\degree\texttt{与正三角形》 229题} 【例 1 】《平几大典 —— 60 ° 与正三角形》 229 题 如图 , ∠ D A C = 2 ∠ D

Linux 串口编程

折月煮酒 提交于 2020-01-26 08:23:39
今天对应用层串口编程进行了验证。程序来源于以下参考链接,自己进行了一些注释和更改,记录于此。                                Tony Liu, 2016-6-17, Shenzhen 参考链接 https://www.ibm.com/developerworks/cn/linux/l-serials/ http://digilander.libero.it/robang/rubrica/serial.htm http://blog.csdn.net/querdaizhi/article/details/7436722 程序 #include <stdio.h> /*标准输入输出定义*/ #include <stdlib.h> /*标准函数库定义*/ #include <unistd.h> /*Unix 标准函数定义*/ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> /*文件控制定义*/ #include <termios.h> /*PPSIX 终端控制定义*/ #include <errno.h> /*错误号定义*/ #include <string.h> #define FALSE -1 #define TRUE 0 void set_speed(int fd,

Linux课程设计报告【全集】

杀马特。学长 韩版系。学妹 提交于 2020-01-26 06:45:32
4个题目:进程创建及创建过程分析、进程族亲关系分析、进程间软中断通信、进程间管道通信 (欢迎评论/私信) 笔者用的是“ProcessOn免费在线作图网站”作的图。 报告格式要求:正文{中文:宋体、五号、单倍距;英文:Times New Roman、11号、单倍距} 一级标题{宋体、小三号、加粗} 二级标题{四号} 三级标题{小四} 不允许有四级标题 图命名{在图下方居中、宋体、五号、 仅允许出现2级图名 eg.3-1<空格>名称} 图中文字{宋体、小五} 表命名{在表上方居中、......} 表中文字{......} 页眉{学号<空格>姓名、宋体、小四、居中} 页脚{目录页码用罗马数字、正文页码用阿拉伯数字} 注* 参考文献格式要求、缩进要求 题目1 进程创建及创建过程分析 参看书P163~166 1.1设计目的 灵活运用fork系统调用创建进程,深入分析进程创建过程及fork系统调用返回值的含义,透彻分析父子进程代码共享、执行流程及数据集合的变化轨迹。 1.2设计要求 设计的程序能体现出父子进程执行轨迹的差别,也能体现出父子进程数据集合的差别。 1.3程序源代码 #include<stdio.h> #include<unistd.h> pid_t fork(void); int main() { printf("parent pid=%d\n",getpid()); pid_t

文件I/O

岁酱吖の 提交于 2020-01-26 03:02:09
目录: 1、文件I/O 1.1 ---- C标准函数与系统函数的区别 1.2 ---- PCB概念 1.3 ---- open/close 1.4 ---- read/write 1.5 ---- 阻塞和非阻塞 1.6 ---- lseek 1.7 ---- fcntl 1.8 ----ioctl 1.1 C标准函数与系统函数的区别 有一定编程基础的小伙伴应该都接触过文件编程吧,file. 在C语言里面是包一个<file.h>的头 每一个文件都有一个缓冲区,C和系统函数的区别也不想说太多,系统函数可以实现不同进程共享一个缓冲区,而C函数不行。 1.2 PCB的概念 PCB(process control block),进程控制块。 Linux的进程控制块为一个由结构task_struct所定义的数据结构,task_struct存/include/ linux/sched.h 中,其中包括管理进程所需的各种信息。 在创建一个新进程时,系统在内存中申请一个空的task_struct区,即空闲PCB块,并填入所需信息。 1.3 open/close 首先了解一下文件描述符,和文件描述符表。 注意:以下内容记住基于进程,所以文件描述符和符表都存在PCB里面了。 文件描述符表:纪录文件描述符使用情况的表。 文件标书符:在一个进程创建时吗,默认自动打开三个文件,即生成了三个文件描述符:

高并发的epoll+线程池,线程池专注实现业务

折月煮酒 提交于 2020-01-25 02:05:18
我们知道,服务器并发模型通常可分为单线程和多线程模型,这里的线程通常是指“I/O线程”,即负责I/O操作,协调分配任务的“管理线程”,而实际的请求和任务通常交由所谓“工作者线程”处理。通常多线程模型下,每个线程既是I/O线程又是工作者线程。所以这里讨论的是,单I/O线程+多工作者线程的模型,这也是最常用的一种服务器并发模型。我所在的项目中的server代码中,这种模型随处可见。它还有个名字,叫“半同步/半异步“模型,同时,这种模型也是生产者/消费者(尤其是多消费者)模型的一种表现。 这种架构主要是基于 I/O多路复用 的思想(主要是epoll,select/poll已过时),通过单线程I/O多路复用,可以达到高效并发,同时避免了多线程I/O来回切换的各种开销,思路清晰,易于管理,而基于线程池的多工作者线程,又可以充分发挥和利用多线程的优势,利用线程池,进一步提高资源复用性和避免产生过多线程。 瓶颈在于IO密集度 。 线程池你开10个线程当然可以一上来全部accept阻塞住,这样客户端一连上来便会自动激活一个线程去处理,但是设想一下,如果10个线程全部用掉了,第11个客户端就会发生丢弃。这样为了实现”高并发“你得不断加大线程池的数量。这样会带来严重的内存占用和线程切换的时延问题。 于是前置事件轮询设施的方案就应运而生了, 主线程轮询负责IO,作业交给线程池。 在高并发下

【转帖】从操作系统层面理解Linux下的网络IO模型

笑着哭i 提交于 2020-01-24 20:10:39
从操作系统层面理解Linux下的网络IO模型 https://segmentfault.com/a/1190000021587865 I/O( INPUT OUTPUT),包括文件I/O、网络I/O。 计算机世界里的速度鄙视: 内存读数据:纳秒级别。 千兆网卡读数据:微妙级别。1微秒=1000纳秒,网卡比内存慢了千倍。 磁盘读数据:毫秒级别。1毫秒=10万纳秒 ,硬盘比内存慢了10万倍。 CPU一个时钟周期1纳秒上下,内存算是比较接近CPU的,其他都等不起。 CPU 处理数据的速度远大于I/O准备数据的速度 。 任何编程语言都会遇到这种CPU处理速度和I/O速度不匹配的问题! 在网络编程中如何进行网络I/O优化:怎么高效地利用CPU进行网络数据处理??? 一、相关概念 从操作系统层面怎么理解网络I/O呢?计算机的世界有一套自己定义的概念。如果不明白这些概念,就无法真正明白技术的设计思路和本质。所以在我看来,这些概念是了解技术和计算机世界的基础。 1.1 同步与异步,阻塞与非阻塞 理解网络I/O避不开的话题:同步与异步,阻塞与非阻塞。 拿山治烧水举例来说,(山治的行为好比用户程序,烧水好比内核提供的系统调用),这两组概念翻译成大白话可以这么理解。 同步/异步关注的是水烧开之后需不需要我来处理。 阻塞/非阻塞关注的是在水烧开的这段时间是不是干了其他事。 1.1.1 同步阻塞 点火后

Linux下监控文件系统

前提是你 提交于 2020-01-24 13:53:59
Linux下监控文件系统 Linux的后台程序通常在机器没有问题的情况下,需要长期运行(比如说数个月,甚至是数年)。但是,程序的配置文件有时候是需要定期作调整。为了不影响程序对外服务(不重启),动态加载配置文件是一种非常常见的需求。通过监控某个文件的创建、删除和修改等事件,可以很方便做出对应的动作(比如说reload)。 1. Linux下监控文件系统的常用方法 监控配置文件或配置文件目录的变化,一种可行的方法是程序启动的时候记录下文件(或目录)的修改时间,周期性检查(比如说一秒一次)文件是否已经被修改,来决定是否需要重新加载配置文件。 另一种更为优雅的办法是使用Linux系统从内核层面支持的系统API dnotify、inotify或者fanotify。inotify API提供一个文件描述符,可以在该文件描述符上注册对指定的文件或者目录的文件系统事件(文件删除、文件修改和文件创建),然后通过read系统调用读取该文件描述法上的事件。 2. 使用stat或fstat监控Linux文件系统 通过周期性地获取被监控文件的状态,stat和fstat可以帮助用户监控指定文件的状态。 int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); struct stat { dev_t

详解linux下的串口通讯开发

孤街浪徒 提交于 2020-01-24 05:37:54
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C接口 (又称 EIA RS-232-C)它是在 1970年由美国电子工业协会 (EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。串口通讯指的是计算机依次以位( bit)为单位来传送数据,串行通讯使用的范围很广,在嵌入式系统开发过程中串口通讯也经常用到通讯方式之一。 Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串口,只需打开其设备文件即可操作串口设备。在 linux系统下面,每一个串口设备都有设备文件与其关联,设备文件位于系统的 /dev目录下面。如 linux下的 /ttyS0, /ttyS1分别表示的是串口 1和串口 2。下面来详细介绍 linux下是如何使用串口的: 1. 串口操作需要用到的头文件 #include <stdio.h> /*标准输入输出定义 */ #include <stdlib.h> /*标准函数库定义 */ #include <unistd.h> /*Unix 标准函数定义 */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> /*文件控制定义 */ #include <termios.h> /*POSIX

网络编程——TCP和UDP编程模型(TCP/UDP服务器和客户端-实现代码)

天大地大妈咪最大 提交于 2020-01-23 00:37:14
网络编程及其编程环境 : 通信连接: 局域网拓扑图: 广域网拓扑图: 编程环境:vim,linux,..... TCP和UDP编程模型 1,传输层TCP和UDP 1)OSI七层模型 2)TCP协议 :传输控制协议,向用户进程提供可靠的全双工字节流 3)UDP协议:用户数据报协议,是一种无连接的协议,不可靠传输 2,TCP编程模型 1)客户端 2)服务器 例子1:socket()实现进程间通信,AF_UNIX (1)服务器端;server.c #include<stdlib.h> #include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/un.h> int main() { int serverfd,clientfd; struct sockaddr_un server,client; int client_len=sizeof(client); //initial server.sun_family = AF_UNIX; strcpy(server.sun_path,"mysocketunix"); //socket serverfd=socket(AF_UNIX,SOCK_STREAM,0); if(serverfd ==-1) { printf(