如何用c语言编写一个求围棋气的程序

如何用c语言编写一个求围棋气的程序,第1张

我写的围棋游戏程序中的数气函数,注解不多.

int CMyView::pointqi(int x, int y, int bow, int e)

{

int i,j,n=1// n is man number of the mass

int qi=0,kong=0 int pivalue,inpivalue

int mass[2][100]

int countqi[19][19]//after be counted as qi,make this point 1.

int realeye=0

for(i=0i<=18i++)

{

for(j=0j<=18j++)

{

countqi[i][j]=0

}

}

eat=0

mass[0][1]=x

mass[1][1]=y

if(bow==10)

{ pivalue=1000inpivalue=1}

else

{ pivalue=1inpivalue=1000}

for(i=1i<=ni++)

{

if(pigroup[mass[0][i]-1][mass[1][i]]==pivalue &&mass[0][i]-1>=0)

{

for(j=1j<=nj++) //confirm that the new man is not belong to mass.

{

if(mass[0][i]-1 != mass[0][j] || mass[1][i] != mass[1][j] )

{

if(j!= n)

continue

else

{

n++

mass[0][n]=mass[0][i]-1

mass[1][n]=mass[1][i]

break

}

}

else

break

}

}

if(pigroup[mass[0][i]+1][mass[1][i]]==pivalue&&mass[0][i]+1<=18)

{

for(j=1j<=nj++) //confirm that the new man is not belong to mass.

{

if(mass[0][i]+1 != mass[0][j] || mass[1][i] != mass[1][j] )

{

if(j!= n)

continue

else

{

n++

mass[0][n]=mass[0][i]+1

mass[1][n]=mass[1][i]

break

}

}

else

break

}

}

if(pigroup[mass[0][i]][mass[1][i]-1]==pivalue&&mass[1][i]-1>=0)

{

for(j=1j<=nj++) //confirm that the new man is not belong to mass.

{

if(mass[0][i] != mass[0][j] || mass[1][i]-1 != mass[1][j] )

{

if(j!= n)

continue

else

{

n++

mass[0][n]=mass[0][i]

mass[1][n]=mass[1][i]-1

break

}

}

else

break

}

}

if(pigroup[mass[0][i]][mass[1][i]+1]==pivalue&&mass[1][i]+1<=18)

{

for(j=1j<=nj++) //confirm that the new man is not belong to mass.

{

if(mass[0][i] != mass[0][j] || mass[1][i]+1 != mass[1][j] )

{

if(j!= n)

continue

else

{

n++

mass[0][n]=mass[0][i]

mass[1][n]=mass[1][i]+1

break

}

}

else

break

}

}

}

for(j=1j<=nj++) //check for all man of this mass whether qi exists.

{

if(pigroup[mass[0][j]-1][mass[1][j]]==0&&mass[0][j]-1>=0&&countqi[mass[0][j]-1][mass[1][j]]==0)

{ qi++

countqi[mass[0][j]-1][mass[1][j]]=1

if(judgerealeye(mass[0][j]-1,mass[1][j],bow)==1)

realeye=realeye+1

}

if(pigroup[mass[0][j]+1][mass[1][j]]==0&&mass[0][j]+1<=18&&countqi[mass[0][j]+1][mass[1][j]]==0)

{ qi++

countqi[mass[0][j]+1][mass[1][j]]=1

if(judgerealeye(mass[0][j]+1,mass[1][j],bow)==1)

realeye=realeye+1

}

if(pigroup[mass[0][j]][mass[1][j]-1]==0 &&mass[1][j]-1>=0&&countqi[mass[0][j]][mass[1][j]-1]==0)

{ qi++

countqi[mass[0][j]][mass[1][j]-1]=1

if(judgerealeye(mass[0][j],mass[1][j]-1,bow)==1)

realeye=realeye+1

}

if(pigroup[mass[0][j]][mass[1][j]+1]==0&&mass[1][j]+1<=18&&countqi[mass[0][j]][mass[1][j]+1]==0)

{ qi++

countqi[mass[0][j]][mass[1][j]+1]=1

if(judgerealeye(mass[0][j],mass[1][j]+1,bow)==1)

realeye=realeye+1

}

}

if(qi!=0)

{

eat=0

if(e==2)

return realeye

else

return qi

} //qi is not 0.

if(qi==0) // if any man is eat, make the value of pigroup[][] 0.

{

eat=1

eaten[k]=1

if(e==1)

{

for(i=1i<=ni++)

{

pigroup[mass[0][i]][mass[1][i]]=0

beeat[mass[0][i]][mass[1][i]]=1

}

}

}

return 0

}

这是一个简单的程序,会自动计算提子,但不会数目。其它的运行一次估计就差不多会用了。稍微写了点注释。

#include<stdio.h>

#include<stdlib.h>

char board[21][21]

char move[5][2]={{-1,0},{1,0},{0,-1},{0,1},{0,0}}

void initBoard()//初始化棋盘

void showBoard()//输出棋盘

char set(int x,int y,char color)//下子

void process(int xx,int yy)//计算提子

int main()

{

FILE * fptr=NULL

char pufile[256]={0}

char op

int s

int x,y,r

char color

char win

int cnt

start:

s=8

while(s!=1 &&s!=2)

{

printf("选择模式:\n1---下棋\n2---看棋谱\n0---退出\n")

printf("下棋模式下,下子请输入s x y(x,y为位置),认输输入g,和棋输入h\n选择:")

scanf("%d",&s)

if(s==0) return 0

//Egg1

if(s==10) printf("Programmer: swordlance :)\n")

//Egg1 end

}

getchar()

printf("输入棋谱路径:")

gets(pufile)

if(s==1) fptr=fopen(pufile,"w")

else fptr=fopen(pufile,"r")

if(!fptr)

{

printf("文件无法打开(创建)!\n")

system("PAUSE")

return -1

}

initBoard()

cnt=0

color='B'

while(op!='g')

{

system("CLS")

showBoard()

printf("(第%d手)",++cnt)

if(s==1)

{

printf("%c 方:",color)

scanf("%c",&op)

//printf("[%c]",op)

if(op=='s')

{

scanf("%d %d",&x,&y)

getchar()

if(set(x,y,color)!=0)

{

printf("该处不能落子!\n")

cnt--

system("PAUSE")

}

else

{

process(x,y)

fprintf(fptr,"%d %d\n",x,y)

if(color=='B') color='W'

else color='B'

}

}

else if(op=='g')

{

printf("%c 方认输。\n",color)

if(color=='B') fprintf(fptr,"0 1\n")

else fprintf(fptr,"0 -1\n")

fflush(fptr)

fclose(fptr)

system("PAUSE")

goto start

}

else if(op=='h')

{

printf("和棋。\n")

fprintf(fptr,"0 0\n")

fflush(fptr)

fclose(fptr)

system("PAUSE")

goto start

}

else

{

printf("参数错误,下子请输入s x y(x,y为位置),认输输入 g,和棋输入h")

cnt--

system("PAUSE")

}

}

else

{

fscanf(fptr,"%d %d",&x,&y)

if(x==0)

{

if(y>0) printf("W 方胜!\n")

else if(y<0) printf("B 方胜!\n")

else printf("和棋!\n")

system("PAUSE")

goto start

}

else

{

printf("%c 方落子(%d,%d)\n",color,x,y)

set(x,y,color)

process(x,y)

if(color=='B') color='W'

else color='B'

}

system("PAUSE")

}

}

system("PAUSE")

return 0

}

void initBoard()

{

int i,j

board[0][0]='O'

for(i=1i<=19i++) board[0][i]='-'

board[0][20]='O'

for(i=1i<=19i++)

{

board[i][0]='|'

for(j=1j<=19j++) board[i][j]='+'

board[i][20]='|'

}

board[20][0]='O'

for(i=1i<=19i++) board[20][i]='-'

board[20][20]='O'

board[4][4]=board[4][10]=board[4][16]=

board[10][4]=board[10][10]=board[10][16]=

board[16][4]=board[16][10]=board[16][16]='*'

}

void showBoard()

{

int i,j

for(i=0i<=20i++)

{

for(j=0j<=20j++)

{

printf("%c",board[i][j])

}

printf("\n")

}

}

char set(int x,int y,char color)

{

if(board[x][y]=='W' || board[x][y]=='B') return -1//不能落子

else board[x][y]=color

return 0

}

//计算提子

void process(int xx,int yy)

{

char his[21][21]={0}//记录算过的棋子以节约效率

char Q[400][2]={0}//某一片棋

int e//Q的长度。

char mcolor//这片棋的颜色

char ecolor//另一种颜色

int QI=0//气数

int i,j,k,l,m

int x,y

for(m=0m<5m++)

{

i=xx+move[m][0]//为了能够完成打劫,先算别人再算自己

j=yy+move[m][1]

if(his[i][j]==0 &&(board[i][j]=='W' || board[i][j]=='B')) //该位置有子开始算气

{

QI=0

his[i][j]=1

mcolor=board[i][j]

ecolor=(board[i][j]=='W'?'B':'W')

//printf("m=%c e=%c\n",mcolor,ecolor)

Q[0][0]=i

Q[0][1]=j

e=1

for(k=0k<ek++)

{

for(l=0l<4l++)

{

x=Q[k][0]+move[l][0]

y=Q[k][1]+move[l][1]

//printf("x=%d y=%d\n",x,y)

//system("PAUSE")

if(x>0 &&y>0 &&x<20 &&y<20 &&his[x][y]==0)

{

if(board[x][y]==mcolor)//己方,长气

{

Q[e][0]=x

Q[e][1]=y

e++

his[x][y]=1

}

else

{

if(board[x][y]=='+') QI++//空地,加气,忽略重复计算

}

}

}

}

//printf("QI=%d\n",QI)

//system("PAUSE")

if(!QI)//死棋,提子

{

for(k=0k<ek++)

{

board[Q[k][0]][Q[k][1]]='+'

his[Q[k][0]][Q[k][1]]=0

}

}

}

}

}

0 通常用于分析 *** 作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。

1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,缺省情况下tcpmux在这种系统中被打开。Iris机器在发布时含有几个缺省的无密码的帐户,如lp, guest, uucp, nuucp, demos, tutor, diag, EZsetup, OutOfBox, 和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜索tcpmux并利用这些帐户。

7 Echo 你能看到许多人们搜索Fraggle放大器时,发送到x.x.x.0和x.x.x.255的信息。常见的一种DoS攻击是echo循环(echo-loop),攻击者伪造从一个机器发送到另一个机器的UDP数据包,而两个机器分别以它们最快的方式回应这些数据包。另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做“Resonate Global Dispatch”,它与DNS的这一端口连接以确定最近的路由。Harvest/squid cache将从3130端口发送UDP echo:“如果将cache的source_ping on选项打开,它将对原始主机的UDP echo端口回应一个HIT reply。”这将会产生许多这类数据包。

11 sysstat 这是一种UNIX服务,它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入侵者提供了许多信息而威胁机器的安全,如暴露已知某些弱点或帐户的程序。这与UNIX系统中“ps”命令的结果相似。再说一遍:ICMP没有端口,ICMP port 11通常是ICMP type=11。

19 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时,会发送含有垃圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。

21 ftp 最常见的攻击者用于寻找打开“anonymous”的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers 利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的节点。

22 ssh PcAnywhere 建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式,许多使用RSAREF库的版本有不少漏洞。(建议在其它端口运行ssh)。还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程序的人无意中扫描到。UDP(而不是TCP)与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632(十六进制的0x1600)位交换后是0x0016(使进制的22)。

23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的 *** 作系统。此外使用其它技术,入侵者会找到密码。

25 smtp 攻击者(spammer)寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭,他们需要拨号连接到高带宽的e-mail服务器上,将简单的信息传递到不同的地址。SMTP服务器(尤其是sendmail)是进入系统的最常用方法之一,因为它们必须完整的暴露于Internet且邮件的路由是复杂的(暴露+复杂=弱点)。

53 DNS Hacker或crackers可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其它通讯。因此防火墙常常过滤或记录53端口。需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询的回复。Hacker常使用这种方法穿透防火墙。

67&68 Bootp和DHCP UDP上的Bootp/DHCP:通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大量的“中间人”(man-in-middle)攻击。客户端向68端口(bootps)广播请求配置,服务器向67端口(bootpc)广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。

69 TFTP(UDP) 许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常错误配置而从系统提供任何文件,如密码文件。它们也可用于向系统写入文件。

79 finger Hacker用于获得用户信息,查询 *** 作系统,探测已知的缓冲区溢出错误,回应从自己机器到其它机器finger扫描。

80 web站点默认80为服务端口,采用tcp或udp协议。

98 linuxconf 这个程序提供linux boxen的简单管理。通过整合的HTTP服务器在98端口提供基于Web界面的服务。它已发现有许多安全问题。一些版本setuid root,信任局域网,在/tmp下建立Internet可访问的文件,LANG环境变量有缓冲区溢出。此外因为它包含整合的服务器,许多典型的HTTP漏洞可能存在(缓冲区溢出,历遍目录等)

109 POP2 并不象POP3那样有名,但许多服务器同时提供两种服务(向后兼容)。在同一个服务器上POP3的漏洞在POP2中同样存在。

110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个(这意味着Hacker可以在真正登陆前进入系统)。成功登陆后还有其它缓冲区溢出错误。

111 sunrpc portmap rpcbind Sun RPC PortMapper/RPCBIND。访问portmapper是扫描系统查看允许哪些RPC服务的最早的一步。常见RPC服务有:rpc.mountd, NFS, rpc.statd, rpc.csmd, rpc.ttybd, amd等。入侵者发现了允许的RPC服务将转向提供服务的特定端口测试漏洞。记住一定要记录线路中的daemon, IDS, 或sniffer,你可以发现入侵者正使用什么程序访问以便发现到底发生了什么。

113 Ident auth 这是一个许多机器上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多机器的信息(会被Hacker利用)。但是它可作为许多服务的记录器,尤其是FTP, POP, IMAP, SMTP和IRC等服务。通常如果有许多客户通过防火墙访问这些服务,你将会看到许多这个端口的连接请求。记住,如果你阻断这个端口客户端会感觉到在防火墙另一边与e-mail服务器的缓慢连接。许多防火墙支持在TCP连接的阻断过程中发回RST,着将回停止这一缓慢的连接。

119 NNTP news 新闻组传输协议,承载USENET通讯。当你链接到诸如:news://comp.security.firewalls/. 的地址时通常使用这个端口。这个端口的连接企图通常是人们在寻找USENET服务器。多数ISP限制只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送spam。

135 oc-serv MS RPC end-point mapper Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和/或RPC的服务利用机器上的end-point mapper注册它们的位置。远端客户连接到机器时,它们查询end-point mapper找到服务的位置。同样Hacker扫描机器的这个端口是为了找到诸如:这个机器上运行Exchange Server吗?是什么版本?这个端口除了被用来查询服务(如使用epdump)还可以被用于直接攻击。有一些DoS攻击直接针对这个端口。

137 NetBIOS name service nbtstat (UDP) 这是防火墙管理员最常见的信息。

139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows“文件和打印机共享”和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。大量针对这一端口始于1999,后来逐渐变少。2000年又有回升。一些VBS(IE5 VisualBasic Scripting)开始将它们自己拷贝到这个端口,试图在这个端口繁殖。

143 IMAP 和上面POP3的安全问题一样,许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住:一种Linux蠕虫(admw0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已被感染的用户。当RadHat在他们的Linux发布版本中默认允许IMAP后,这些漏洞变得流行起来。Morris蠕虫以后这还是第一次广泛传播的蠕虫。这一端口还被用于IMAP2,但并不流行。已有一些报道发现有些0到143端口的攻击源于脚本。

161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中,通过SNMP客获得这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码“public”“private”访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management软件使用SNMP。HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名,你会看见这种包在子网内广播(cable modem, DSL)查询sysName和其它信息。

162 SNMP trap 可能是由于错误配置

177 xdmcp 许多Hacker通过它访问X-Windows控制台, 它同时需要打开6000端口。

513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他们的系统提供了很有趣的信息。

553 CORBA IIOP (UDP) 如果你使用cable modem或DSL VLAN,你将会看到这个端口的广播。CORBA是一种面向对象的RPC(remote procedure call)系统。Hacker会利用这些信息进入系统。

600 Pcserver backdoor 请查看1524端口。

一些玩script的孩子认为他们通过修改ingreslock和pcserver文件已经完全攻破了系统-- Alan J. Rosenthal.

635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的,但基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住,mountd可运行于任何端口(到底在哪个端口,需要在端口111做portmap查询),只是Linux默认为635端口,就象NFS通常运行于2049端口。

1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络,它们请求 *** 作系统为它们分配“下一个闲置端口”。基于这一点分配从端口1024开始。这意味着第一个向系统请求分配动态端口的程序将被分配端口1024。为了验证这一点,你可以重启机器,打开Telnet,再打开一个窗口运行“natstat -a”,你将会看到Telnet被分配1024端口。请求的程序越多,动态端口也越多。 *** 作系统分配的端口将逐渐变大。再来一遍,当你浏览Web页时用“netstat”查看,每个Web页需要一个新端口。

1025,1026 参见1024

1080 SOCKS 这一协议以管道方式穿过防火墙,允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该只允许内部的通信向外达到Internet。但是由于错误的配置,它会允许Hacker/Cracker的位于防火墙外部的攻击穿过防火墙。或者简单地回应位于Internet上的计算机,从而掩饰他们对你的直接攻击。WinGate是一种常见的Windows个人防火墙,常会发生上述的错误配置。在加入IRC聊天室时常会看到这种情况。

1114 SQL 系统本身很少扫描这个端口,但常常是sscan脚本的一部分。

1243 Sub-7木马(TCP)

1524 ingreslock 后门许多攻击脚本将安装一个后门Shell于这个端口(尤其是那些针对Sun系统中sendmail和RPC服务漏洞的脚本,如statd, ttdbserver和cmsd)。如果你刚刚安装了你的防火墙就看到在这个端口上的连接企图,很可能是上述原因。你可以试试Telnet到你的机器上的这个端口,看看它是否会给你一个Shell。连接到600/pcserver也存在这个问题。

2049 NFS NFS程序常运行于这个端口。通常需要访问portmapper查询这个服务运行于哪个端口,但是大部分情况是安装后NFS运行于这个端口,Hacker/Cracker因而可以闭开portmapper直接测试这个端口。

3128 squid 这是Squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。你也会看到搜索其它代理服务器的端口:8000/8001/8080/8888。扫描这一端口的另一原因是:用户正在进入聊天室。其它用户(或服务器本身)也会检验这个端口以确定用户的机器是否支持代理。

5632 pcAnywere 你会看到很多这个端口的扫描,这依赖于你所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C类网以寻找可能得代理(译者:指agent而不是proxy)。Hacker/cracker也会寻找开放这种服务的机器,所以应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描常包含端口22的UDP数据包。

6776 Sub-7 artifact 这个端口是从Sub-7主端口分离出来的用于传送数据的端口。例如当控制者通过电话线控制另一台机器,而被控机器挂断时你将会看到这种情况。因此当另一人以此IP拨入时,他们将会看到持续的,在这个端口的连接企图。(译者:即看到防火墙报告这一端口的连接企图时,并不表示你已被Sub-7控制。)

6970 RealAudio RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置的。

13223 PowWow PowWow 是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有“进攻性”。它会“驻扎”在这一TCP端口等待回应。这造成类似心跳间隔的连接企图。如果你是一个拨号用户,从另一个聊天者手中“继承”了IP地址这种情况就会发生:好象很多不同的人在测试这一端口。这一协议使用“OPNG”作为其连接企图的前四个字节。

17027 Conducent 这是一个外向连接。这是由于公司内部有人安装了带有Conducent "adbot" 的共享软件。Conducent "adbot"是为共享软件显示广告服务的。使用这种服务的一种流行的软件是Pkware。有人试验:阻断这一外向连接不会有任何问题,但是封掉IP地址本身将会导致adbots持续在每秒内试图连接多次而导致连接过载:

机器会不断试图解析DNS名—ads.conducent.com,即IP地址216.33.210.40 ;216.33.199.77 ;216.33.199.80 ;216.33.199.81;216.33.210.41。(译者:不知NetAnts使用的Radiate是否也有这种现象)

27374 Sub-7木马(TCP)

30100 NetSphere木马(TCP) 通常这一端口的扫描是为了寻找中了NetSphere木马。

31337 Back Orifice “elite” Hacker中31337读做“elite”/ei’li:t/(译者:法语,译为中坚力量,精华。即3=E, 1=L, 7=T)。因此许多后门程序运行于这一端口。其中最有名的是Back Orifice。曾经一段时间内这是Internet上最常见的扫描。现在它的流行越来越少,其它的木马程序越来越流行。

31789 Hack-a-tack 这一端口的UDP通讯通常是由于"Hack-a-tack"远程访问木马(RAT, Remote Access Trojan)。这种木马包含内置的31790端口扫描器,因此任何31789端口到317890端口的连接意味着已经有这种入侵。(31789端口是控制连接,317890端口是文件传输连接)

32770~32900 RPC服务 Sun Solaris的RPC服务在这一范围内。详细的说:早期版本的Solaris(2.5.1之前)将portmapper置于这一范围内,即使低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了寻找portmapper,就是为了寻找可被攻击的已知的RPC服务。

33434~33600 traceroute 如果你看到这一端口范围内的UDP数据包(且只在此范围之内)则可能是由于traceroute。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11441985.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存