什么是tfn2k?  tfn2k通过主控端利用大量代理端主机的资源进行对一个或多个目标进行协同攻击。
当前互联网中的unix、solaris和windowsnt等平台的主机能被用于此类攻击,而且这个工具非常容易被移植到其它系统平台上。
  tfn2k由两部分组成:在主控端主机上的客户端和在代理端主机上的守护进程。
主控端向其代理端发送攻击指定的目标主机列表。
代理端据此对目标进行拒绝服务攻击。
由一个主控端控制的多个代理端主机,能够在攻击过程中相互协同,保证攻击的连续性。
主控央和代理端的网络通讯是经过加密的,还可能混杂了许多虚假数据包。
整个tfn2k网络可能使用不同的tcp、udp或icmp包进行通讯。
而且主控端还能伪造其ip地址。
所有这些特性都使发展防御tfn2k攻击的策略和技术都非常困难或效率低下。
  tfn2k的技术内幕  ◆主控端通过tcp、udp、icmp或随机性使用其中之一的数据包向代理端主机  发送命令。
对目标的攻击方法包括tcp/syn、udp、icmp/ping或broadcast  ping(smurf)数据包flood等。
  ◆主控端与代理端之间数据包的头信息也是随机的,除了icmp总是使用  icmp_echoreply类型数据包。
  ◆与其上一代版本tfn不同,tfn2k的守护程序是完全沉默的,它不会对接收  到的命令有任何回应。
客户端重复发送每一个命令20次,并且认为守护程  序应该至少能接收到其中一个。
  ◆这些命令数据包可能混杂了许多发送到随机ip地址的伪造数据包。
  ◆tfn2k命令不是基于字符串的,而采用了"++"格式,其中是  代表某个特定命令的数值,则是该命令的参数。
  ◆所有命令都经过了cast-256算法(rfc2612)加密。
加密关键字在程序编  译时定义,并作为tfn2k客户端程序的口令。
  ◆所有加密数据在发送前都被编码(base64)成可打印的ascii字符。
tfn2k  守护程序接收数据包并解密数据。
  ◆守护进程为每一个攻击产生子进程。
  ◆tfn2k守护进程试图通过修改argv[0]内容(或在某些平台中修改进程名)  以掩饰自己。
伪造的进程名在编译时指定,因而每次安装时都有可能不同。
  这个功能使tfn2k伪装成代理端主机的普通正常进程。
因而,只是简单地检  查进程列表未必能找到tfn2k守护进程(及其子进程)。
  ◆来自每一个客户端或守护进程的所有数据包都可能被伪造。
  监测tfn2k的特征
1
实验一Linux系统的安装及用户界面的使用一.实验目的1.了解Linux系统的安装、熟悉系统的启动过程和使用环境。
2.掌握Linux环境下vi编辑器的使用方法。
3.掌握Linux系统中编辑、编译、调试、运行一个C语言程序的全过程。
二.实验内容1、实验要求1.在VMWare虚拟机环境或真实物理机器上,安装一个Linux操作系统。
2.体验Linux操作系统中XWindows系统的使用。
3.尝试Linux系统键盘命令的使用,并熟练掌握常用的基本命令。
4.掌握命令行方式下vi编辑器的使用。
5.编写一段C程序,使用系统调用fork()创建两个子进程。
各进程显示不同的信息,如父进程显示字符“a”,子进程分别显示字符“b”和“c”。
多次运行观察显示结果,并分析产生这种执行效果的原因。
实验二Linux进程控制一.实验目的1.掌握进程的概念,明确进程和程序的区别。
2.认识和了解并发执行的实质。
二.实验内容1、实验要求1.编写一段程序,使用系统调用fork()创建两个子进程。
各进程显示不同的信息,如父进程显示字符“a”,子进程分别显示字符“b”和“c”。
多次运行观察显示结果,并分析产生这种执行效果的原因。
2.修改上面编写的程序,将每个进程的输出由单个字符改为循环输出一句话,如父进程显示:“parent:”加上进程ID,子进程分别显示:“Child1:”(或“Child2:”)加上自己的进程ID。
再观察程序执行时屏幕上出现的现象,并分析原因。
3.一个父进程创建一个子进程,子进程通过exec系统调用执行另一个文件。
各自的代码中显示不同的信息,观察其运行结果,分析两个进程并发执行的效果。
4.编写程序创建如图所示的进程树,在每个进程中显示当前进程ID和父进程ID。
实验三Linux进程间通信一.实验目的(1)分析进程争用临界资源的现象,学习处理进程互斥的方法;
(2)学习如何利用进程的“软中断”、管道机制进行进程间的通信,并加深对上述通信机制的理解;
(3)了解系统调用pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程,利用共享存储区机制进行进程间通信。
二、实验内容1、实验要求(1)进程的控制修改已编制的程序,将每个进程输出一个字符修改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析出现问题的原因,进一步理解各个进程争夺临界资源的情况。
如果在程序中使用系统调用locking()来给每一个进程加锁,可以实现进程之间的互斥,试观察并分析出现的现象。
(2)进程的软中断通讯编制一段程序,实现进程的软中断通讯:使用系统调用fork()创建两个子进程;
再使用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Del键);
在捕捉到中断信号后,父进程用系统调用kill()向两个子进程发信号;
子进程捕捉到信号后分别输出下列信息后终止:Childprocess1iskilledbyparent!Childprocess2iskilledbyparent!父进程等待两个子进程都终止以后,输出如下信息后终止:Parentprocessinkilled!(3)进程的管道通讯编制一段程序,实现进程的管道通讯:使用系统调用pipe()建立一条管道线;
两个子进程分别循环向这条管道写一句话:Child1issendingamessage!Child2issendingamessage!而父进程则循环从管道中读出信息,显示在屏幕上。
实验报告内含源代码
2019/6/17 5:27:26 267KB ubuntu
1
华中科技大学操作系统课程设计专用,内含5个部分:1.1利用系统调用实现文件拷贝(含代码和makefile)1.2多进程编程,实现三个子进程窗口(含代码和makefile)2本人的系统调用,只有系统调用实现的代码,系统调用需要本人编译内核3字符设备驱动的编写(含代码和makefile)4GTK编写系统监视器,可以监测系统很多方面(含代码和makefile)5虚拟文件系统(实现的比较简单)(含代码和makefile)说明:本内容实现本人添加设备驱动,含有代码部分以及调用部分和makefile。
2019/5/1 2:27:01 18KB 操作系统课设 字符设备驱动
1
编写一段程序,实现进程的管道通信。
使用零碎调用pipe()建立一条管道,创建两个子进程P1和P2。
让P1和P2分别向管道各写一句话:childprocessP1issendingmessages!childprocessP2issendingmessages!父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。
1
子进程这个gem旨在成为一种简单可靠的处理方案,用于控制在Ruby/OS组合中在后台运行的外部程序。
该代码起源于gem,但应证明它是独立的库很有用。
要求Ruby2.4以上版本,JRuby9以上版本Windows用户必须确保安装了ffigem(>=1.0.11)才能使用ChildProcess。
用法从ChildProcess.build返回的对象将实现ChildProcess::AbstractProcess。
基本例子process=ChildProcess.build("ruby","-e","sleep")#inheritstdout/stderrfromparent...process.io.inherit!#...orpassanIOprocess.io.stdout=Tempf
2021/11/1 17:35:43 46KB Ruby
1
服务器端利用I/O复用同时支持TCP和UDP,在同一个端口上同时绑定TCP套接口和UDP套接口,使用select()函数等待读写就绪条件的发生,然后经过FD_ISSET(listenfd,&rset)和FD_ISSET(listenfd,&rset)判断是TCP就绪还是UDP就绪。
使用fork()函数利用子进程处理并行客户,从而达到多个客户进行聊天。
当客户端从标准输入中输入信息,发送到服务器端,服务器接收信息并记录,又立即发送给除发送端之外的所有已连接客户,其他客户就可以看到聊天信息了,最终实现多个客户进行聊天的聊天室。
2018/9/22 3:30:32 788KB 课程设计
1
1)阅读父子进程利用管道进行通信的例子,写出程序的运行结果并分析。
(2)编写程序:父进程利用管道将一字符串交给子进程处理。
子进程读字符串,将里面的字符反向后再交给父进程,父进程最初读取并打印反向的字符串。
2022/9/5 7:51:07 46KB 操作系统 实验报告
1
1.在linux下编写一个应用程序,命名为an_ch2_1b。
这个程序不断地输出如下行:Thoseoutputcomefromchild,[系统时间]另外写一个应用程序,命名为an_ch2_1a。
这个程序创建一个子进程,执行an_ch2_1b。
这个程序不断地输出如下行:Thoseoutputcomefromchild,[系统时间]观察程序运转的结果,并对你看到的现象进行解释。
2。
在linux环境下编写一个控制台应用程序,程序中有一个共享的整型变量shared_var,初始值为0;
创建一个线程并使其立即与主线程并发执行。
新创建的线程与主线程均不断地循环,并输出shared_var的值。
主线程在循环中不断地对shared_var进行加1操作,即每次循环shared_var被加1;
而新创建的线程则不断地对shared_var进行减1操作,即每次循环shared_var被减1。
观察程序运转的结果,并对你看到的现象进行解释。
2022/9/5 0:47:13 916B linux 进程 线程
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡