【原创】Character Generator Protocol

=== 

      Character Generator Protocol (CHARGEN) 是在 RFC 864 中由 Jon Postel 定义的 Internet Protocol Suite 中的一个服务。主要用于测试调试,以及测量的目的。该协议很少被使用,因为其固有的设计缺陷容易导致误用和攻击。 

      任意 host 都可以通过 TCP 或 UDP 方式连接到支持 Character Generator Protocol 并启用了该服务的服务器上,默认端口号为 19。当采用 TCP 方式成功连接时,服务器端将开始连续不断的发送任意字符到该连接上的 host,直到 host 主动关闭该连接为止。当采用 UDP 方式时,服务器端会在每一次收到来自 host 的数据报时,回复包含随机数(0~512)的字符形式 UDP 数据报。服务器接收到的任何数据均会被丢弃。 

      在大多数类 UNIX 操作系统上,CHARGEN 服务被放置在 inetd 或 xinetd 守护进程中。CHARGEN 服务器通常默认情况下不被使能。 

      CHARGEN 服务可以作为产生字节流的源用于调试 TCP 网络程序代码,比如,边界检查和缓存管理。该服务同样可以作为带宽测量或 Qos 调优的通用负载产生的源。 

      典型的 CHARGEN 服务会话看起来如下:用于通过 telnet 客户端连接到(提供该服务的)服务器上,用户连续不断的接收来自服务端的字节流。尽管在 RFC 864 里没有指定字节流的数据格式,但推荐的格式为(事实上的标准)循环左移含有 72 个 ASCII 字符的行。 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

$ telnet localhost chargen

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh

"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi

#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij

$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk

%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl

&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm

'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn

()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno

)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop

*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq

+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr

,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs

-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst

./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu

/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv

^]

telnet> quit

Connection closed.

这个数据将一直持续到当前 TCP 连接被关闭为止(比如上面通过 ^] 来停止 telnet 会话)。 

=== 

附:网上找的一个用 erlang 实现的 chargen 服务的程序。 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

-module(chargen).

-author('Jesse E.I. Farmer <jesse@20bits.com>').

 

-export([listen/1]).

 

-define(START_CHAR, 33).

-define(END_CHAR, 127).

-define(LINE_LENGTH, 72).

 

-define(TCP_OPTIONS, [binary, {packet, 0}, {active, false}, {reuseaddr, true}]).

 

% Call chargen:listen(Port) to start the service.

listen(Port) ->

        {ok, LSocket} = gen_tcp:listen(Port, ?TCP_OPTIONS),

        accept(LSocket).

 

% Wait for incoming connections and spawn the chargen loop when we get one.

accept(LSocket) ->

        {ok, Socket} = gen_tcp:accept(LSocket),

        spawn(fun() -> loop(Socket) end),

        accept(LSocket).

 

loop(Socket) ->

        loop(Socket, ?START_CHAR).

 

loop(Socket, ?END_CHAR) ->

        loop(Socket, ?START_CHAR);

loop(Socket, StartChar) ->

        Line = make_line(StartChar),

        case gen_tcp:send(Socket, Line) of

                {error, _Reason} ->

                        exit(normal);

                ok ->

                        loop(Socket, StartChar+1)

        end.

 

 

make_line(StartChar) ->

        make_line(StartChar, 0).

 

% Generate a new chargen line -- [13, 10] is CRLF.

make_line(_, ?LINE_LENGTH) ->

        [13, 10];

make_line(?END_CHAR, Pos) ->

        make_line(?START_CHAR, Pos);

make_line(StartChar, Pos) ->

        [StartChar | make_line(StartChar + 1, Pos + 1)].

时间: 2024-09-20 09:38:52

【原创】Character Generator Protocol的相关文章

Linux 服务详解

acpid ACPI(全 称 Advanced Configuration and Power Interface)服务是电源管理接口.建议所有的笔记本用户开启它.一些服务器可能不需要 acpi.支持的通用操作有:"电源开关","电池监视","笔记本 Lid 开关","笔记本显示屏亮度","休眠", "挂机",等等. anacron, atd, crond这几个调度程序有很小的差别. 建

深入理解Linux操作系统守护进程的意义

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大多数服务器都是用守护进程实现的.同时,守护进程完成许多系统任务,比如,作业规划进程crond.打印进程lqd等.有些书籍和资料也把

绿盟科技网络安全威胁10月月报 请大家关注Mirai分析报告及2016网络视频监控系统安全报告

绿盟科技发布了10月互联网安全威胁月报,月报编号NSFOCUS-16-11.10月,绿盟科技漏洞库新增283条,其中高危216条.本次周报建议大家关注 OpenSSL告警处理不当远程拒绝服务漏洞 绿盟科技发布安全威胁通告 . 绿盟科技发布LINUX内核本地提权漏洞技术分析与防护方案 . 物联网恶意软件"Mirai"源代码被黑客公开 绿盟科技分析报告开放下载 . 绿盟科技发布2016网络视频监控系统安全报告 台湾.广东.江苏.福建视频系统问题最多 . Debian Ubuntu Root

绿盟科技互联网安全威胁月报2016.10 请关注新型PLC蠕虫病毒及应对策略

绿盟科技发布了9月互联网安全威胁月报,月报编号NSFOCUS-16-10.9月,绿盟科技漏洞库新增108条,其中高危8条.本次周报建议大家关注 新型PLC蠕虫病毒及应对策略 , 绿盟科技研究员刚实现PLC蠕虫 荷兰研究员就要发布PLC Rootkit 据说这种攻击难以检测 9月数据统计 9月高危漏洞答复下降 2016年9月绿盟科技安全漏洞库共收录108个漏洞, 其中高危漏洞8个.相比8月份的高危漏洞数量大幅下降. 互联网安全漏洞在行业领域增多 BTS 软件漏洞或可劫持手机通讯基站安全威胁通告 来

linux系统守护进程详解

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大

windows 系统 鲜为人知的宝藏

window All Users 这里记录的是Window的用户以及这些用户个人设定的开始菜单及桌面等信息.   Command 在这个目录下有着许多的DOS的常用命令,例如debug, format 等.可别小看这些老廉颇呀,在许多关键时刻还得靠他们哟.      Config 用于存放Windows中硬件配制文件.     Cursors 这是存放Windows光标的目录.     Desktop 除了"我的电脑"."我的文档"这几个系统图标外其它由程序和文档建

Win2000常用端口列表

Win2000常用端口列表  20=Ftp Data 21=FTP Open Server 23=Telnet 25=Smtp 31=Master Paradise.80 53=DNS,Bonk (DoS Exploit) 79=Finger 80=Http 110=Pop3 113=Auther Idnet 119=Nntp 121=BO jammerkillah 137=NetBios-NS 138=NetBios-DGN 139=NetBios-SSN 143=IMAP 161=Snmp

Windows2000端口的关闭方法与思路

Win 2000中每一项服务都对应相应的端口,比如众如周知的WWW服务的端口是80,smtp是25,ftp是21,Win 2000安装中默认的都是这些服务开启的.对于个人用户来说确实没有必要,关掉端口也就是关闭无用的服务.一项服务到底有没有用,就要根据自己的需要自己来判断啦. "控制面板"的"管理工具"中的"服务"中来配置. 关闭7.9等等端口:关闭Simple TCP/IP Service,支持以下 TCP/IP 服务:Character Ge

常用端口大全

1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器 2 compressnet Management Utility compressnet 管理实用程序 3 compressnet Compression Process 压缩进程 5 rje Remote Job Entry 远程作业登录 7 echo Echo 回显 9 discard Discard 丢弃 11 systat Active Users 在线用户 13 daytim