當前位置:首頁 » 操作系統 » gjk演算法

gjk演算法

發布時間: 2022-05-14 12:13:48

Ⅰ 請C++高手做一個判斷三角形和矩形是否相交的程序

classVector2D{//2D向量類
public:
doublex,y;
Vector2D(doublex_=0,doubley_=0):x(x_),y(y_){}
};

boolisZero(constVector2D&vec,doubletolerance=0.05)const{
returnstd::abs(vec.x)<tolerance&&std::abs(vec.y)<tolerance;
}

Vector2DtripleProct(constVector2D&v1,constVector2D&v2,constVector2D&v3){//三角乘積
doublep=v1.x*v2.y-v1.y*v2.x;
returnVector2D(-p*v3.y,p*v3.x);
}

doubledot(constVector2D&v1,cosntVector2D&v2){//點乘
returnv1.x*v2.x+v1.y*v2.y;
}

Vector2Dnegate(constVector2D&vec){//向量取反
returnVector2D(-vec.x,-vec.y);
}

Vector2Dsub(constVector2D&v1,constVector2D&v2){//向量相減
returnVector2D(v1.x-v2.x,v1.y-v2.y);
}

Vector2DgetFarthestPoint(constVector2D&dir,constVector2Dpoly[],intlen){//求一個凸多邊形poly在某個方向dir上最遠的一點
Vector2DbestPoint=poly[0];
doublebestProj=dot(bestPoint,dir);
for(inti=1;i<len;++i){
Vector2Dcurr=poly[i];
doubleproj=dot(curr,dir);
if(proj>bestProj){
bestPoint=curr;
bestProj=proj;
}
}
returnbestPoint;
}

Vector2DgetSupportPoint(constVector2D&dir,constVector2Dpoly1[],intlen1,constVector2Dpoly2[],intlen2){//GJK演算法的一部分,求兩個凸多邊形的閔可夫斯基差在某個方向dir上最遠的一點
Vector2Dv1=getFarthestPoint(dir,poly1,len1),
v2=getFarthestPoint(negate(dir),poly2,len2);
returnsub(v1,v2);
}

boolisIntersect(constVector2Dpoly1[],intlen1,constVector2Dpoly2[],intlen2){
Vector2DsimplexA,simplexB,simplexC,dir=Vector2D(-1,-1);

simplexA=getSupportPoint(dir,poly1,len1,poly2,len2);
if(dot(simplexA,dir)<=0){
returnfalse;
}

dir=negate(simplexA);
simplexB=getSupportPoint(dir,poly1,len1,poly2,len2);
if(dot(simplexB,dir)<=0){
returnfalse;
}

Vector2Dab=sub(simplexB,simplexA);
dir=tripleProct(ab,negate(simplexA),ab);

for(inti=25;i--;){//25是最大迭代次數,一般迭代3次以內就能完成
if(isZero(dir)){
returntrue;
}

simplexC=getSupportPoint(dir,poly1,len1,poly2,len2);
if(dot(simplexC,dir)<=0){
returnfalse;
}

Vector2Dba=sub(simplexA,simplexB),
ac=sub(simplexC,simplexA),
bc=sub(simplexC,simplexB),
acPerp=tripleProct(ac,negate(ba),ac),
bcPerp=tripleProct(bc,ba,bc);

if(dot(acPerp,simplexA)>0){
simplexB=simplexC;
dir=negate(acPerp);
}elseif(dot(bcPerp,simplexB)>0){
simplexA=simplexC;
dir=negate(bcPerp);
}else{
returntrue;
}
}

returnfalse;
}


這個是我把自己的代碼里的一段截出來改了下變數名和參數什麼的, 不確定有沒哪裡漏了改的, 如果運行有錯誤可以自己修一下

isIntersect可以判斷任意兩個凸多邊形是否相交, 用的GJK演算法

三角形和矩形存在一個Vector2D數組里, 用isIntersect(poly1, poly1len, poly2, poly2len)就能判斷

改一下getFarthestPoint還能變成任意兩個凸圖形是否相交

Ⅱ 關於結構設計中 荷載組合 是一個什麼意思始終沒有一個很清晰的概念。謝謝

詳見《建築結構荷載規范》GB 50009 - 2012第3章
3 荷載分類和荷載組合
3.1 荷載分類和荷載代表值
3.1.1 建築結構的荷載可分為下列三類:
1 永久荷載,包括結構自重、土壓力、預應力等。
2 可變荷載,包括樓面活荷載、屋面活荷載和積灰荷載、
吊車荷載、風荷載、雪荷載、溫度作用等。
3 偶然荷載,包括爆炸力、撞擊力等。
3. 1. 2 建築結構設計時,應接下列規定對不同荷載採用不同的
代表值:
1 對永久荷載應採用標准值作為代表值;
2 對可變荷載應根據設計要求採用標准值、組合值、頻遇
值或准永久值作為代表值;
3 對偶然荷載應按建築結構使用的特點確定其代表值。
3.1.3 確定可變荷載代表值時應採用50 年設計基準期。
3. 1. 4 荷載的標准值,應按本規范各章的規定採用。
3. 1. 5 承載能力極限狀態設計或正常使用極限狀態按標准組合
設計時,對可變荷載應按規定的荷載組合採用荷載的組合值或標
准值作為其荷載代表值。可變荷載的組合值,應為可變荷載的標
准值乘以荷載組合值系數。
3. 1. 6 正常使用極限狀態按頻遇組合設計時,應採用可變荷載
的頻遇值或准永久值作為其荷載代表值;按准永久組合設計時,
應採用可變荷載的准永久值作為其荷載代表值。可變荷載的頻遇
值,應為可變荷載標准值乘以頻遇值系數。可變荷載准永久值,
應為可變荷載標准值乘以准永久值系數。
3.2 荷載組合
3.2.1 建築結構設計應根據使用過程中在結構上可能同時出現
的荷載,按承載能力極限狀態和正常使用極限狀態分別進行荷載
組合,並應取各自的最不利的組合進行設計。
3.2.2 對於承載能力極限狀態,應按荷載的基本組合或偶然組
合計算荷載組合的效應設計值,並應採用下列設計表達式進行
設計z
YoSd 運Rd (3. 2. 2)
式中:ìí。一一結構重要性系數,應按各有關建築結構設計規范的
規定採用;
Sd 一一荷載組合的效應設計值;
Rd 一一結構構件抗力的設計值,應按各有關建築結構設計
規范的規定確定。
3.2.3 荷載基本組合的效應設計值馬,應從下列荷載組合值中
取用最不利的效應設計值確定:
1 由可變荷載控制的效應設計值,應接下式進行計算:
Sd= ~γGjSGjk +γQjγ'4 S~k + ~ 10; 1~ tþ C;SO;k
(3.2.3-1)
式申:γGj 一一第j 個永久荷載的分項系數,應按本規范第3.2.4
條採用;
h 一一第i 個可變荷載的分項系數,其中γQj 為主導可變
荷載Ql 的分項系數,應按本規范第3.2.4 條
採用;
飛一一第i 個可變荷載考慮設計使用年限的調整系數,
其中飛為主導可變荷載Ql 考慮設計使用年限的
調整系數;
S馬k 一一按第j 個永久荷載標准值GJk 計算的荷載效應值;
Sqk 一一按第i 個可變荷載標准值QIk計算的荷載效應值,
其中S~k為諸可變荷載效應中起控製作用者;
隊一一第i 個可變荷載Qi 的組合值系數;
m 一-參與組合的永久荷載數;
n-一一參與組合的可變荷載數。
2 由永久荷載控制的效應設計值,應接下式進行計算:
Sd=Ehhk+EW吶Sqk (3 山)
注: 1 基本組合中的效應設計值僅適用於荷載與荷載效應為線性的
情況;
2 當對~k 無法明顯判斷時,應輪次以各可變荷載效應作為
向k I 並選取其中最不利的荷載組合的效應設計值。
3.2.4 基本組合的荷載分項系數,應按下列規定採用:
1 永久荷載的分項系數應符合下列規定:
1) 當永久荷載效應對結構不利時,對由可變荷載效應控
制的組合應取1.2 ,對由永久荷載效應控制的組合應
取1. 35;
2) 當永久荷載效應對結構有利時,不應大於1.0。
2 可變荷載的分項系數應符合下列規定:
1) 對標准值大於4kN/曠的工業房屋樓面結構的活荷載,
應取1.3;
2) 其他情況,應取1.4 。
3 對結構的傾覆、滑移或漂浮驗算,荷載的分項系數應滿
足有關的建築結構設計規范的規定。
3.2.5 可變荷載考慮設計使用年限的調整系數幾應按下列規定
採用:
1 樓面和屋面活荷載考慮設計使用年限的調整系數幾應按
表3. 2. 5 採用。表3.2.5 轍面和厘面活荷載考慮設計使用年限的調整系數γL
|結構設計使用年限何I 5 I 50 I 100
孔I o. 9 I 1. 0 I 1. 1
注: 1 當設計使用年限不為表中數值時,調整系數只可按線性內插確定;
2 對於荷載標准值可控制的活荷載,設計使用年限調整系數幾取1. 0 0
2 對雪荷載和風荷載,應取重現期為設計使用年限,按本
規范第E. 3. 3 條的規定確定基本雪壓和基本風壓,或按有關規
范的規定採用。
3.2.6 荷載偶然組合的效應設計值Sd 可按下列規定採用t
1 用於承載能力極限狀態計算的效應設計值,應按下式進
行計算:
Sd = ~ SGjk + SAd + (/J!j SQjk + ~ CÞQ; S Q,k (3.2.6-1)
式中: SAd 一一按偶然荷載標准值Ad 計算的荷載效應值;
CÞf1 一一第1 個可變荷載的頻遇值系數;
弘一一第i 個可變荷載的准永久值系數。
2 用於偶然事件發生後受損結構整體穩固性驗算的效應設
計值,應按下式進行計算:
Sd = ~ SGjk + CÞfj SQjk 十~ CÞQ; S Q,k (3.2. 6-2)
注:組合中的設計值僅適用於荷載與荷載效應為線性的情況。
3.2.7 對於正常使用極限狀態,應根據不同的設計要求,採用
荷載的標准組合、頻遇組合或准永久組合,並應按下列設計表達
式進行設計z
Sd ~ C (3.2. 7)
式中:C一一結構或結構構件達到正常使用要求的規定限值,例
如變形、裂縫、振幅、加速度、應力等的限值,應
按各有關建築結構設計規范的規定採用。
3.2.8 荷載標准組合的效應設計值Sd 應按下式進行計算:Sd = ~ SGjk + SQlk 十三:仇.,5qk (3.2.8)
注:組合中的設計值僅適用於荷載與荷載效應為線性的情況。
3.2.9 荷載頻遇組合的效應設計值Sd 應按下式進行計算z
Sd = ~ S烏k+ 仇l SQl k + 三句句(3.2.9)
注g 組合中的設計值僅適用於荷載與荷載效應為線性的情況。
3.2.10 荷載准永久組合的效應設計值Sd 應按下式進行計算z
Sd=E S馬k 十三Ý''l; Sqk (3.2.10)
注:組合中的設計值僅適用於荷載與荷載效應為線性的情況。

Ⅲ 建築面積計算規則是什麼

房屋建築面積、使用面積等都與購房者息息相關,對於房屋建築面積的概念和計算方式等信息購房者需要有一定的了解。

房屋建築面積

房屋的建築面積系指外圍水平面積及水平投影面積計算,其中包括房屋建築面積、共有建築面積、使用面積等的測算。

建築面積計算規則有以下一般規定

房屋建築計算面積時,需要注意的是:第一是房屋建築面積計算按房屋外牆(柱)勒腳以上各層的外圍水平投影面積,包括陽台、挑廊、地下室、室外樓梯等,且具備有上蓋,結構牢固,層高2.20米(含2.20米,下同)以上的永久性建築;第二、房屋共有建築面積系指各產權人共同佔有或共同使用的建築面積;第三、房屋使用面積系指房屋戶內全部可供使用的空間面積,按房屋的內牆面水平面積計算;第四、房屋層數是指房屋的自然層數,一般按室內地坪±0.00m以上計算;第五、房屋所在層次是指本權屬單元的房屋在該幢樓房中的第幾層。地下層次以負數表示。第六、房屋結構(如牆、柱)佔用的面積,包括地下室所佔用的面積,但不包括天井、牆外陽台、客觀存在外樓梯等佔用的面積。

(以上回答發布於2013-05-27,當前相關購房政策請以實際為准)

更多房產資訊,政策解讀,專家解讀,點擊查看

Ⅳ 二維實序列的快速傅里葉變換(FFT)

在地球物理數據處理中,經常遇到處理二維實數據的情況。例如在地震勘探中,對面波勘探數據作頻散分析解釋時,要將時間-空間域的信息轉換為頻率-波數域頻譜;在重磁異常的濾波或轉換中,要將空間域的異常f(x,y)轉換為波數域F(ω,υ)等。這些分析都需要進行二維的傅里葉變換(FFT)。

根據傅里葉變換的定義,對於連續二維函數f(x,y),其傅里葉變換對為

地球物理數據處理基礎

對於離散的二維序列fjk(j=0,1,…,M-1;k=0,1,…,N-1),其傅里葉變換為

地球物理數據處理基礎

1.二維復序列的FFT演算法

對於M條測線,每條測線N個測點,構成復序列yjk(j=0,1,…,M-1;k=0,1,…,N-1),根據離散傅里葉公式(8-41),其傅里葉變換為

地球物理數據處理基礎

於是,可以分兩步套用一維復FFT完成二維復FFT的計算。

(1)沿測線方向計算

對於j=0,1,…,M-1逐測線套用一維復FFT,執行式(8-43)。定義復數組 則演算法為

1)對於j=0,1,…,M-1,作2)~7);

2)將yjk輸入A1(k),即A1(k)=yjk(k=0,1,…,N-1);

3)計算Wr,存入W(r),即

4)q=1,2,…,p(p=log2N),若q為偶數執行6),否則執行5);

5)k=0,1,2,…,(2p-q-1)和n=0,1,2,…,(2q-1-1)循環,作

A2(k2q+n)=A1(k2q-1+n)+A1(k2q-1+n+2p-1

A2(k2q+n+2q-1)=[A1(k2q-1+n)-A1(k2q-1+n+2p-1)]·W(k2q-1

至k,n循環結束;

6)k=0,1,2,…,(2p-q-1)和n=0,1,2,…,(2q-1-1)循環,作

A1(k2q+n)=A2(k2q-1+n)+A2(k2q-1+n+2p-1

A1(k2q+n+2q-1)=[A2(k2q-1+n)-A2(k2q-1+n+2p-1)]·W(k2q-1

至k,n循環結束;

7)q循環結束,若p為偶數,將A1(n)輸入到Yjn,否則將A2(n)輸入到Yjn(n=0,1,…,N-1);

8)j循環結束,得到Yjn(j=0,1,…,M-1;n=0,1,…,N-1)。

(2)垂直測線方向計算

對於n=0,1,…,N-1逐一套用一維復FFT,執行式(8-44)。即

1)對於n=0,1,…,N-1,作2)~7);

2)將Yjn輸入A1(j),即A1(j)=Yjn(j=0,1,…,M-1);

3)計算Wr存入W(r),即

4)q=1,2,…,p(p=log2M),若q為偶數執行6),否則執行5);

5)j=0,1,2,…,(2p-q-1)和m=0,1,2,…,(2q-1-1)循環,作

A2(j2q+m)=A1(j2q-1+m)+A1(j2q-1+m+2p-1

A2(j2q+m+2q-1)=[A1(j2q-1+m)-A1(j2q-1+m+2p-1)]·W(j2q-1

至j,m循環結束;

6)j=0,1,2,…,(2p-q-1)和m=0,1,2,…,(2q-1-1)循環,作

A1(j2q+m)=A2(j2q-1+m)+A2(j2q-1+m+2p-1

A1(j2q+m+2q-1)=[A2(j2q-1+m)-A2(j2q-1+m+2p-1)]·W(j2q-1

至j,m循環結束;

7)q循環結束,若p為偶數,將A1(m)輸入到Ymn,否則將A2(m)輸入到Ymn(m=0,1,…,M-1);

8)n循環結束,得到二維復序列的傅氏變換Ymn(m=0,1,…,M-1;n=0,1,…,N-1),

所求得的Ymn是復數值,可以寫為

Ymn=Rmn+iImn (m=0,1,…,M-1;n=0,1,…,N-1)

其中,Rmn,Imn的值也是已知的。

2.二維實序列的FFT演算法

對於二維的實序列,我們把其看作是虛部為零的復序列,套用上述的二維復序列FFT方法來求其頻譜演算法上也是可行的,但勢必會增加大量的無功運算。因此,有必要研究二維實序列FFT的實用演算法,同一維實序列FFT的實現思路一樣,同樣把二維實序列按一定的規律構造成二維復序列,調用二維復序列FFT,然後通過分離和加工得到原實序列的頻譜。

例如采樣區域有2 M條測線,每條測線有N個點,並且M,N都是2的整數冪,需要計算實樣本序列xjk(j=0,1,2,…,2 M-1;k=0,1,2,…,N-1)的傅氏變換:

地球物理數據處理基礎

類似於一維實序列FFT的思想,直接建立下面的二維實序列FFT演算法:

(1)將一個二維實序列按偶、奇線號分為兩個二維子實序列,分別作為實部和虛部組合為一個二維復序列。即令

地球物理數據處理基礎

(2)調用二維復FFT過程,求出yjk的二維傅氏變換Ymn的復數值:

地球物理數據處理基礎

式中:Rmn,Imn是Ymn的實部和虛部。

(3)利用Rmn,Imn換算Xmn的值。

前兩步容易實現,下面分析第(3)步的實現。

記hjk,gjk的傅氏變換為Hmn,Gmn。根據傅里葉變換的定義,我們導出Xmn與Hmn,Gmn的關系式:

地球物理數據處理基礎

式中,Hmn,Gmn為復數,我們用上標r和i表示其實部和虛部,將上式右端實部、虛部分離

地球物理數據處理基礎

其中:

地球物理數據處理基礎

下面的任務是將Hmn,Gmn各分量與通過二維復FFT求出的Rmn,Imn值聯系起來。為此先給出奇、偶分解性質和類似於一維情況的三個二維傅氏變換性質:

(1)奇偶分解性

任何一個正負對稱區間定義的函數,均可唯一地分解為如下偶(even)、奇(odd)函數之和:

地球物理數據處理基礎

(2)周期性

地球物理數據處理基礎

(3)復共軛性

地球物理數據處理基礎

現在我們來建立Rmn,Imn與Hmn,Gmn的關系。對Ymn作奇偶分解:

地球物理數據處理基礎

根據線性性質

地球物理數據處理基礎

對照式(8-54)和式(8-55),得

地球物理數據處理基礎

由於hjk,gjk是實函數,根據復共軛性質,上面兩式對應的奇偶函數相等。即

地球物理數據處理基礎

再由奇偶分解性和周期性,得

地球物理數據處理基礎

將式(8-57)代入式(8-50),得

地球物理數據處理基礎

再利用Hmn,Gmn周期性及復共軛性,可以得到m=M/2+1,…,M-1;n=0,1,…,N-1的傅氏變換,即

地球物理數據處理基礎

將式(8-50)中M,N改為M-m,N-n,並將上式代入,得

地球物理數據處理基礎

由式(8-58)、式(8-59)和式(8-61)即可得到原始序列xjk(j=0,1,…,2M-1;n=0,1,…,N-1)在m=0,1,…,M-1;n=0,1,…,N-1區間的傅氏變換Xmn

具體二維實序列的FFT演算法如下:

(1)令hjk=x2j,k,gjk=x2j+1,k,形成

yjk=hjk+igjk (j=0,1,…,2 M-1;n=0,1,…,N-1)

(2)調用二維復序列FFT過程,即從兩個方向先後調用一維復FFT演算法式(8-43)和式(8-44),求得yjk的二維傅氏變換Ymn的復數值:

Ymn=Rmn+iImn (m=0,1,…,M-1;n=0,1,…,N-1)

(3)用下列公式由Rmn,Imn的值換算Xmn的值:

地球物理數據處理基礎

地球物理數據處理基礎

Ⅳ 吊車鋼梁在設計荷載作用下應按哪個應力階段設計計算

鋼筋混凝土梁使用階段應力計算時,荷載採用短期效用組合值並考慮長期作用影響,詳見《建築結構荷載規范》 GB 50009 - 2012第3章
3.2 荷載組合
3.2.1 建築結構設計應根據使用過程中在結構上可能同時出現
的荷載,按承載能力極限狀態和正常使用極限狀態分別進行荷載
組合,並應取各自的最不利的組合進行設計。
3.2.2 對於承載能力極限狀態,應按荷載的基本組合或偶然組
合計算荷載組合的效應設計值,並應採用下列設計表達式進行
設計z
YoSd 運Rd (3. 2. 2)
式中:ìí。一一結構重要性系數,應按各有關建築結構設計規范的
規定採用;
Sd 一一荷載組合的效應設計值;
Rd 一一結構構件抗力的設計值,應按各有關建築結構設計
規范的規定確定。
3.2.3 荷載基本組合的效應設計值馬,應從下列荷載組合值中
取用最不利的效應設計值確定:
1 由可變荷載控制的效應設計值,應接下式進行計算:
Sd= ~γGjSGjk +γQjγ'4 S~k + ~ 10; 1~ tþ C;SO;k
(3.2.3-1)
式申:γGj 一一第j 個永久荷載的分項系數,應按本規范第3.2.4
條採用;
h 一一第i 個可變荷載的分項系數,其中γQj 為主導可變
荷載Ql 的分項系數,應按本規范第3.2.4 條
採用;
飛一一第i 個可變荷載考慮設計使用年限的調整系數,
其中飛為主導可變荷載Ql 考慮設計使用年限的
調整系數;
S馬k 一一按第j 個永久荷載標准值GJk 計算的荷載效應值;
Sqk 一一按第i 個可變荷載標准值QIk計算的荷載效應值,
其中S~k為諸可變荷載效應中起控製作用者;
隊一一第i 個可變荷載Qi 的組合值系數;
m 一-參與組合的永久荷載數;
n-一一參與組合的可變荷載數。
2 由永久荷載控制的效應設計值,應接下式進行計算:
Sd=Ehhk+EW吶Sqk (3 山)
注: 1 基本組合中的效應設計值僅適用於荷載與荷載效應為線性的
情況;
2 當對~k 無法明顯判斷時,應輪次以各可變荷載效應作為
向k I 並選取其中最不利的荷載組合的效應設計值。
3.2.4 基本組合的荷載分項系數,應按下列規定採用:
1 永久荷載的分項系數應符合下列規定:
1) 當永久荷載效應對結構不利時,對由可變荷載效應控
制的組合應取1.2 ,對由永久荷載效應控制的組合應
取1. 35;
2) 當永久荷載效應對結構有利時,不應大於1.0。
2 可變荷載的分項系數應符合下列規定:
1) 對標准值大於4kN/曠的工業房屋樓面結構的活荷載,
應取1.3;
2) 其他情況,應取1.4 。
3 對結構的傾覆、滑移或漂浮驗算,荷載的分項系數應滿
足有關的建築結構設計規范的規定。

Ⅵ 構造平面三角形類,並使該類具有判斷,任意兩三角形是否相交,相離包含的

<pre t="code" l="cpp">class Vector2D { //2D向量類
public:
double x, y;
Vector2D(double x_ = 0, double y_ = 0): x(x_), y(y_) {}
};

bool isZero(const Vector2D vec, double tolerance = 0.05) const {
return std::abs(vec.x) < tolerance std::abs(vec.y) < tolerance;
}

Vector2D tripleProct(const Vector2D v1, const Vector2D v2, const Vector2D v3) { //三角乘積
double p = v1.x * v2.y - v1.y * v2.x;
return Vector2D(-p * v3.y, p * v3.x);
}

double dot(const Vector2D v1, cosnt Vector2D v2) { //點乘
return v1.x * v2.x + v1.y * v2.y;
}

Vector2D negate(const Vector2D vec) { //向量取反
return Vector2D(-vec.x, -vec.y);
}

Vector2D sub(const Vector2D v1, const Vector2D v2) { //向量相減
return Vector2D(v1.x - v2.x, v1.y - v2.y);
}

Vector2D getFarthestPoint(const Vector2D dir, const Vector2D poly[], int len) { //求一個凸多邊形poly在某個方向dir上最遠的一點
Vector2D bestPoint = poly[0];
double bestProj = dot(bestPoint, dir);
for (int i = 1; i < len; ++i) {
Vector2D curr = poly[i];
double proj = dot(curr, dir);
if (proj > bestProj) {
bestPoint = curr;
bestProj = proj;
}
}
return bestPoint;
}

Vector2D getSupportPoint(const Vector2D dir, const Vector2D poly1[], int len1, const Vector2D poly2[], int len2) { //GJK演算法的一部分, 求兩個凸多邊形的閔可夫斯基差在某個方向dir上最遠的一點
Vector2D v1 = getFarthestPoint(dir, poly1, len1),
v2 = getFarthestPoint(negate(dir), poly2, len2);
return sub(v1, v2);
}

bool isIntersect(const Vector2D poly1[], int len1, const Vector2D poly2[], int len2) {
Vector2D simplexA, simplexB, simplexC, dir = Vector2D(-1, -1);

simplexA = getSupportPoint(dir, poly1, len1, poly2, len2);
if (dot(simplexA, dir) <= 0) {
return false;
}

dir = negate(simplexA);
simplexB = getSupportPoint(dir, poly1, len1, poly2, len2);
if (dot(simplexB, dir) <= 0) {
return false;
}

Vector2D ab = sub(simplexB, simplexA);
dir = tripleProct(ab, negate(simplexA), ab);

for (int i = 25; i--;) { //25是最大迭代次數, 一般迭代3次以內就能完成
if (isZero(dir)) {
return true;
}

simplexC = getSupportPoint(dir, poly1, len1, poly2, len2);
if (dot(simplexC, dir) <= 0) {
return false;
}

Vector2D ba = sub(simplexA, simplexB),
ac = sub(simplexC, simplexA),
bc = sub(simplexC, simplexB),
acPerp = tripleProct(ac, negate(ba), ac),
bcPerp = tripleProct(bc, ba, bc);

if (dot(acPerp, simplexA) > 0) {
simplexB = simplexC;
dir = negate(acPerp);
} else if (dot(bcPerp, simplexB) > 0) {
simplexA = simplexC;
dir = negate(bcPerp);
} else {
return true;
}
}

return false;
}
這個是我把自己的代碼里的一段截出來改了下變數名和參數什麼的, 不確定有沒哪裡漏了改的, 如果運行有錯誤可以自己修一下
isIntersect可以判斷任意兩個凸多邊形是否相交, 用的GJK演算法三角形和矩形存在一個Vector2D數組里, 用isIntersect(poly1, poly1len, poly2, poly2len)就能判斷
改一下getFarthestPoint還能變成任意兩個凸圖形是否相交

Ⅶ 如何辦理小額貸款

當..天下,無前.*.期,魏*xin: tcvipa
--------
網路安全從其本質上來講就是網路上的信息安全。從廣義來說,凡是涉及到網路上信息的保密性、完整性、可用性、真實性和可控性的相關技術和理論都是網路安全的研究領域。確保網路系統的信息安全是網路安全的目標,信息安全包括兩個方面:信息的存儲安全和信息的傳輸安全。信息的存儲安全是指信息在靜態存放狀態下的安全,如是否會被非授權調用等。信息的傳輸安全是指信息在動態傳輸過程中安全。為了確保網路信息的傳輸安全,有以下幾個問題:
(1)對網路上信息的監聽;
(2)對用戶身份的仿冒;
(3)對網路上信息的篡改;
(4)對發出的信息予以否認;
(5)對信息進行重發。
折疊對於一般的常用入侵方法主要有
1.口令入侵
所謂口令入侵,就是指用一些軟體解開已經得到但被人加密的口令文檔,不過許多黑客已大量採用一種可以繞開或屏蔽口令保護的程序來完成這項工作。對於那些可以解開或屏蔽口令保護的程序通常被稱為「Crack」。由於這些軟體的廣為流傳,使得入侵電腦網路系統有時變得相當簡單,一般不需要很深入了解系統的內部結構,是初學者的好方法。
2.特洛伊木馬術
說到特洛伊木馬,只要知道這個故事的人就不難理解,它最典型的做法可能就是把一個能幫助黑客完成某一特定動作的程序依附在某一合法用戶的正常程序中,這時合法用戶的程序代碼已被該變。一旦用戶觸發該程序,那麼依附在內的黑客指令代碼同時被激活,這些代碼往往能完成黑客指定的任務。由於這種入侵法需要黑客有很好的編程經驗,且要更改代碼、要一定的許可權,所以較難掌握。但正因為它的復雜性,一般的系統管理員很難發現。
3.監聽法
這是一個很實用但風險也很大的黑客入侵方法,但還是有很多入侵系統的黑客採用此類方法,正所謂藝高人膽大。
網路節點或工作站之間的交流是通過信息流的轉送得以實現,而當在一個沒有集線器的網路中,數據的傳輸並沒有指明特定的方向,這時每一個網路節點或工作站都是一個介面。這就好比某一節點說:「嗨!你們中有誰是我要發信息的工作站。」
此時,所有的系統介面都收到了這個信息,一旦某個工作站說:「嗨!那是我,請把數據傳過來。」聯接就馬上完成。
目前有網路上流傳著很多嗅探軟體,利用這些軟體就可以很簡單的監聽到數據,甚至就包含口令文件,有的服務在傳輸文件中直接使用明文傳輸,這也是非常危險的。
4.E-mail技術
使用email加木馬程序這是黑客經常使用的一種手段,而且非常奏效,一般的用戶,甚至是網管,對網路安全的意識太過於淡薄,這就給很多黑客以可乘之機。
5.病毒技術
作為一個黑客,如此使用應該是一件可恥的事情,不過大家可以學習,畢竟也是一種攻擊的辦法,特殊時間,特殊地點完全可以使用。
6.隱藏技術
折疊攻擊的准備階段
首先需要說明的是,入侵者的來源有兩種,一種是內部人員利用自己的工作機會和許可權來獲取不應該獲取的許可權而進行的攻擊。另一種是外部人員入侵,包括遠程入侵、網路節點接入入侵等。本節主要討論遠程攻擊。
進行網路攻擊是一件系統性很強的工作,其主要工作流程是:收集情報,遠程攻擊,遠程登錄,取得普通用戶的許可權,取得超級用戶的許可權,留下後門,清除日誌。主要內容包括目標分析,文檔獲取,破解密碼,日誌清除等技術,下面分別介紹。
1.確定攻擊的目的
攻擊者在進行一次完整的攻擊之前首先要確定攻擊要達到什麼樣的目的,即給對方造成什麼樣的後果。常見的攻擊目的有破壞型和入侵型兩種。破壞型攻擊指的只是破壞攻擊目標,使其不能正常工作,而不能隨意控制目標的系統的運行。要達到破壞型攻擊的目的,主要的手段是拒絕服務攻擊(Denial Of Service)。另一類常見的攻擊目的是入侵攻擊目標,這種攻擊是要獲得一定的許可權來達到控制攻擊目標的目的。應該說這種攻擊比破壞型攻擊更為普遍,威脅性也更大。因為黑客一旦獲取攻擊目標的管理員許可權就可以對此伺服器做任意動作,包括破壞性的攻擊。此類攻擊一般也是利用伺服器操作系統、應用軟體或者網路協議存在的漏洞進行的。當然還有另一種造成此種攻擊的原因就是密碼泄露,攻擊者靠猜測或者窮舉法來得到伺服器用戶的密碼,然後就可以用和真正的管理員一樣對伺服器進行訪問
2.信息收集
除了確定攻擊目的之外,攻擊前的最主要工作就是收集盡量多的關於攻擊目標的信息。這些信息主要包括目標的操作系統類型及版本,目標提供哪些服務,各伺服器程序的類型與版本以及相關的社會信息。
要攻擊一台機器,首先要確定它上面正在運行的操作系統是什麼,因為對於不同類型的操作系統,其上的系統漏洞有很大區別,所以攻擊的方法也完全不同,甚至同一種操作系統的不同版本的系統漏洞也是不一樣的。要確定一台伺服器的操作系統一般是靠經驗,有些伺服器的某些服務顯示信息會泄露其操作系統。例如當我們通過TELNET連上一台機器時,如果顯示
Unix(r)System V Release 4.0
login:
那麼根據經驗就可以確定這個機器上運行的操作系統為SUN OS 5.5或5.5.l。但這樣確定操作系統類型是不準確的,因為有些網站管理員為了迷惑攻擊者會故意更改顯示信息,造成假象。
還有一種不是很有效的方法,諸如查詢DNS的主機信息(不是很可靠)來看登記域名時的申請機器類型和操作系統類型,或者使用社會工程學的方法來獲得,以及利用某些主機開放的SNMP的公共組來查詢。
另外一種相對比較准確的方法是利用網路操作系統里的TCP/IP堆棧作為特殊的「指紋」來確定系統的真正身份。因為不同的操作系統在網路底層協議的各種實現細節上略有不同。可以通過遠程向目標發送特殊的包,然後通過返回的包來確定操作系統類型。例如通過向目標機發送一個FIN的包(或者是任何沒有ACK或SYN標記的包)到目標主機的一個開放的埠然後等待回應。許多系統如windows、 BSDI、CISCO、 HP/UX和IRIX會返回一個RESET。通過發送一個SYN包,它含有沒有定義的TCP標記的TCP頭。那麼在Linux系統的回應包就會包含這個沒有定義的標記,而在一些別的系統則會在收到SYN+BOGU包之後關閉連接。或是利用尋找初始化序列長度模板與特定的操作系統相匹配的方法。利用它可以對許多系統分類,如較早的Unix系統是64K長度,一些新的Unix系統的長度則是隨機增長。還有就是檢查返回包里包含的窗口長度,這項技術根據各個操作系統的不同的初始化窗口大小來唯一確定它們。利用這種技術實現的工具很多,比較著名的有NMAP、CHECKOS、QUESO等。
獲知目標提供哪些服務及各服務daemon的類型、版本同樣非常重要,因為已知的漏洞一般都是對某一服務的。這里說的提供服務就是指通常我們提到的喘口,例如一般TELNET在23埠,ftp在對21埠,WWW在80埠或8080埠,這只是一般情況,網站管理完全可以按自己的意願修改服務所監聽的埠號。在不同伺服器上提供同一種服務的軟體也可以是不同,我們管這種軟體叫做daemon,例如同樣是提供FTP服務,可以使用wuftp、proftp,ncftp等許多不同種類的daemon。確定daemon的類型版本也有助於黑客利用系統漏洞攻破網站。
另外需要獲得的關於系統的信息就是一些與計算機本身沒有關系的社會信息,例如網站所屬公司的名稱、規模,網路管理員的生活習慣、電話號碼等。這些信息看起來與攻擊一個網站沒有關系,實際上很多黑客都是利用了這類信息攻破網站的。例如有些網站管理員用自己的電話號碼做系統密碼,如果掌握了該電話號碼,就等於掌握了管理員許可權進行信息收集可以用手工進行,也可以利用工具來完成,完成信息收集的工具叫做掃描器。用掃描器收集信息的優點是速度快,可以一次對多個目標進行掃描。
折疊攻擊的實施階段
1.獲得許可權
當收集到足夠的信息之後,攻擊者就要開始實施攻擊行動了。作為破壞性攻擊,只需利用工具發動攻擊即可。而作為入侵性攻擊,往往要利用收集到的信息,找到其系統漏洞,然後利用該漏洞獲取一定的許可權。有時獲得了一般用戶的許可權就足以達到修改主頁等目的了,但作為一次完整的攻擊是要獲得系統最高許可權的,這不僅是為了達到一定的目的,更重要的是證明攻擊者的能力,這也符合黑客的追求。
能夠被攻擊者所利用的漏洞不僅包括系統軟體設計上的安全漏洞,也包括由於管理配置不當而造成的漏洞。前不久,網際網路上應用最普及的著名www伺服器提供商Apache的主頁被黑客攻破,其主頁面上的Powered by Apache圖樣(羽毛狀的圖畫)被改成了Powered byMicrosoft Backoffice的圖樣,那個攻擊者就是利用了管理員對Webserver用資料庫的一些不當配置而成功取得最高許可權的。
當然大多數攻擊成功的範例還是利用了系統軟體本身的漏洞。造成軟體漏洞的主要原因在於編制該軟體的程序員缺乏安全意識。當攻擊者對軟體進行非正常的調用請求時造成緩沖區溢出或者對文件的非法訪問。其中利用緩沖區溢出進行的攻擊最為普遍,據統計80%以上成功的攻擊都是利用了緩沖區溢出漏洞來獲得非法許可權的。關於緩沖區溢出在後面用專門章節來作詳細解釋。
無論作為一個黑客還是一個網路管理員,都需要掌握盡量多的系統漏洞。黑客需要用它來完成攻擊,而管理員需要根據不同的漏洞來進行不同的防禦措施。了解最新最多的漏洞信息,可以到諸如Rootshell、Packetstorm、Securityfocus等網站去查找。
2.許可權的擴大
系統漏洞分為遠程漏洞和本地漏洞兩種,遠程漏洞是指黑客可以在別的機器上直接利用該漏洞進行攻擊並獲取一定的許可權。這種漏洞的威脅性相當大,黑客的攻擊一般都是從遠程漏洞開始的。但是利用遠程漏洞獲取的不一定是最高許可權,而往往只是一個普通用戶的許可權,這樣常常沒有辦法做黑客們想要做的事。這時就需要配合本地漏洞來把獲得的許可權進行擴大,常常是擴大至系統的管理員許可權。
只有獲得了最高的管理員許可權之後,才可以做諸如網路監聽、打掃痕跡之類的事情。要完成許可權的擴大,不但可以利用已獲得的許可權在系統上執行利用本地漏洞的程序,還可以放一些木馬之類的欺騙程序來套取管理員密碼,這種木馬是放在本地套取最高許可權用的,而不能進行遠程式控制制。例如一個黑客已經在一台機器上獲得了一個普通用戶的賬號和登錄許可權,那麼他就可以在這台機器上放置一個假的su程序。一旦黑客放置了假su程序,當真正的合法用戶登錄時,運行了su,並輸入了密碼,這時root密碼就會被記錄下來,下次黑客再登錄時就可以使用su變成root了。
攻擊的善後工作
1.日誌系統簡介
如果攻擊者完成攻擊後就立刻離開系統而不做任何善後工作,那麼他的行蹤將很快被系統管理員發現,因為所有的網路操作系統一般都提供日誌記錄功能,會把系統上發生的動作記錄下來。所以,為了自身的隱蔽性,黑客一般都會抹掉自己在日誌中留下的痕跡。想要了解黑客抹掉痕跡的方法,首先要了解常見的操作系統的日誌結構以及工作方式。Unix的日誌文件通常放在下面這幾個位置,根據操作系統的不同略有變化
/usr/adm——早期版本的Unix。
/Var/adm新一點的版本使用這個位置。
/Varflort一些版本的Solaris、 Linux BSD、Free BSD使用這個位置。
/etc,大多數Unix版本把Utmp放在此處,一些Unix版本也把Wtmp放在這里,這也是Syslog.conf的位置。
下面的文件可能會根據你所在的目錄不同而不同:
acct或pacct-一記錄每個用戶使用的命令記錄。
accesslog主要用來伺服器運行了NCSA HTTP伺服器,這個記錄文件會記錄有什麼站點連接過你的伺服器。
aculo保存撥出去的Modems記錄。
lastlog記錄了最近的Login記錄和每個用戶的最初目的地,有時是最後不成功Login的記錄。
loginlog一記錄一些不正常的L0gin記錄。
messages——記錄輸出到系統控制台的記錄,另外的信息由Syslog來生成
ecurity記錄一些使用 UUCP系統企圖進入限制范圍的事例。
ulog記錄使用su命令的記錄。
utmp記錄當前登錄到系統中的所有用戶,這個文件伴隨著用戶進入和離開系統而不斷變化。
Utmpx,utmp的擴展。
wtmp記錄用戶登錄和退出事件。
Syslog最重要的日誌文件,使用syslogd守護程序來獲得。
2.隱藏蹤跡
攻擊者在獲得系統最高管理員許可權之後就可以隨意修改系統上的文件了(只對常規 Unix系統而言),包括日誌文件,所以一般黑客想要隱藏自己的蹤跡的話,就會對日誌進行修改。最簡單的方法當然就是刪除日誌文件了,但這樣做雖然避免了系統管理員根據IP追蹤到自己,但也明確無誤地告訴了管理員,系統己經被人侵了。所以最常用的辦法是只對日誌文件中有關自己的那一部分做修改。關於修改方法的具體細節根據不同的操作系統有所區別,網路上有許多此類功能的程序,例如 zap、 wipe等,其主要做法就是清除 utmp、wtmp、Lastlog和Pacct等日誌文件中某一用戶的信息,使得當使用w、who、last等命令查看日誌文件時,隱藏掉此用戶的信息。
管理員想要避免日誌系統被黑客修改,應該採取一定的措施,例如用列印機實時記錄網路日誌信息。但這樣做也有弊端,黑客一旦了解到你的做法就會不停地向日誌里寫入無用的信息,使得列印機不停地列印日誌,直到所有的紙用光為止。所以比較好的避免日誌被修改的辦法是把所有日誌文件發送到一台比較安全的主機上,即使用loghost。即使是這樣也不能完全避免日誌被修改的可能性,因為黑客既然能攻入這台主機,也很可能攻入loghost。
只修改日誌是不夠的,因為百密必有一漏,即使自認為修改了所有的日誌,仍然會留下一些蛛絲馬跡的。例如安裝了某些後門程序,運行後也可能被管理員發現。所以,黑客高手可以通過替換一些系統程序的方法來進一步隱藏蹤跡。這種用來替換正常系統程序的黑客程序叫做rootkit,這類程序在一些黑客網站可以找到,比較常見的有LinuxRootKit,現在已經發展到了5.0版本了。它可以替換系統的ls、ps、netstat、inetd等等一系列重要的系統程序,當替換了ls後,就可以隱藏指定的文件,使得管理員在使用ls命令時無法看到這些文件,從而達到隱藏自己的目的。
3.後門
一般黑客都會在攻入系統後不只一次地進入該系統。為了下次再進入系統時方便一點,黑客會留下一個後門,特洛伊木馬就是後門的最好範例。Unix中留後門的方法有很多種,下面介紹幾種常見的後門,供網路管理員參考防範。
折疊密碼破解後門
這是入侵者使用的最早也是最老的方法,它不僅可以獲得對Unix機器的訪問,而且可 以通過破解密碼製造後門。這就是破解口令薄弱的帳號。以後即使管理員封了入侵者的當前帳號,這些新的帳號仍然可能是重新侵入的後門。多數情況下,入侵者尋找口令薄弱的未使用帳號,然後將口令改的難些。當管理員尋找口令薄弱的帳號是,也不會發現這些密碼已修改的帳號。因而管理員很難確定查封哪個帳號。
Rhosts + + 後門
在連網的Unix機器中,象Rsh和Rlogin這樣的服務是基於rhosts文件里的主機名使用簡 單的認證方法。用戶可以輕易的改變設置而不需口令就能進入。入侵者只要向可以訪問的某用戶的rhosts文件中輸入"+ +",就可以允許任何人從任何地方無須口令便能進入這個帳號。特別當home目錄通過NFS向外共享時,入侵者更熱中於此。這些帳號也成 了入侵者再次侵入的後門。許多人更喜歡使用Rsh,因為它通常缺少日誌能力。許多管理員經常檢查 "+ +",所以入侵者實際上多設置來自網上的另一個帳號的主機名和用戶名,從而不易被發現。
折疊校驗和及時間戳後門
早期,許多入侵者用自己的trojan程序替代二進制文件。系統管理員便依靠時間戳和系 統校驗和的程序辨別一個二進制文件是否已被改變,如Unix里的sum程序。入侵者又發展了使trojan文件和原文件時間戳同步的新技術。它是這樣實現的: 先將系統時鍾撥回到原文件時間,然後調整trojan文件的時間為系統時間。一旦二進制trojan文件與 原來的精確同步,就可以把系統時間設回當前時間。Sum程序是基於CRC校驗,很容易騙過。入侵者設計出了可以將trojan的校驗和調整到原文件的校驗和的程序。MD5是被 大多數人推薦的,MD5使用的演算法目前還沒人能騙過。
折疊Login後門
在Unix里,login程序通常用來對telnet來的用戶進行口令驗證。 入侵者獲取login.c的原代碼並修改,使它在比較輸入口令與存儲口令時先檢查後門口令。如果用戶敲入後門 口令,它將忽視管理員設置的口令讓你長驅直入。這將允許入侵者進入任何帳號,甚至是root。由於後門口令是在用戶真實登錄並被日誌記錄到utmp和wtmp前產生一個訪問 的,所以入侵者可以登錄獲取shell卻不會暴露該帳號。管理員注意到這種後門後,便用"strings"命令搜索login程序以尋找文本信息。 許多情況下後門口令會原形畢露。入侵者就開始加密或者更好的隱藏口令,使strings命令失效。 所以更多的管理員是用MD5校驗和檢測這種後門的。
折疊Telnetd後門
當用戶telnet到系統,監聽埠的inetd服務接受連接隨後遞給in.telnetd,由它運行 login.一些入侵者知道管理員會檢查login是否被修改,就著手修改in.telnetd. 在in.telnetd內部有一些對用戶信息的檢驗,比如用戶使用了何種終端。典型的終端 設置是Xterm或者VT100.入侵者可以做這樣的後門,當終端設置為"letmein"時產生一個不要任何驗證的shell. 入侵者已對某些服務作了後門,對來自特定源埠的連接產生一個shell。
折疊服務後門
幾乎所有網路服務曾被入侵者作過後門。 Finger,rsh,rexec,rlogin,ftp,甚至 inetd等等的作了的版本隨處多是。有的只是連接到某個TCP埠的shell,通過後門口令就能獲取訪問。這些程序有時用刺媧□?Ucp這樣不用的服務,或者被加入inetd.conf 作為一個新的服務,管理員應該非常注意那些服務正在運行,並用MD5對原服務程序做校驗。
Cronjob後門
Unix上的Cronjob可以按時間表調度特定程序的運行。入侵者可以加入後門shell程序使它在1AM到2AM之間運行,那麼每晚有一個小時可以獲得訪問。也可以查看cronjob中 經常運行的合法程序,同時置入後門。
庫後門
幾乎所有的UNIX系統使用共享庫,共享庫用於相同函數的重用而減少代碼長度。一些入侵者在象crypt.c和_crypt.c這些函數里作了後門;象login.c這樣的程序調用了 crypt()。當使用後門口令時產生一個shell。因此,即使管理員用MD5檢查login程序,仍然能產生一個後門函數,而且許多管理員並不會檢查庫是否被做了後門。對於許多入侵者來說有一個問題: 一些管理員對所有東西多作了MD5校驗,有一種辦法是入侵者對open()和文件訪問函數做後門。後門函數讀原文件但執行trojan後門程序。所以當MD5讀這些文件時,校驗和一切正常,但當系統運行時將執行trojan版本的,即使trojan庫本身也可躲過MD5校驗,對於管理員來說有一種方法可以找到後門,就是靜態編連MD5校驗程序然後運行,靜態連接程序不會使用trojan共享庫。
內核後門
內核是Unix工作的核心,用於庫躲過MD5校驗的方法同樣適用於內核級別,甚至連靜態 連接多不能識別。一個後門作的很好的內核是最難被管理員查找的,所幸的是內核的 後門程序還不是隨手可得,每人知道它事實上傳播有多廣。
文件系統後門
入侵者需要在伺服器上存儲他們的掠奪品或數據,並不能被管理員發現,入侵者的文章常是包括exploit腳本工具,後門集,sniffer日誌,email的備分,原代碼,等等!有時為了防止管理員發現這么大的文件,入侵者需要修補"ls","","fsck"以隱匿特定的目錄和文件,在很低的級別,入侵者做這樣的漏洞: 以專有的格式在硬碟上割出一部分,且表示為壞的扇區。因此入侵者只能用特別的工具訪問這些隱藏的文件,對於普通的管理員來說,很難發現這些"壞扇區"里的文件系統,而它又確實存在。
Boot塊後門
在PC世界裡,許多病毒藏匿與根區,而殺病毒軟體就是檢查根區是否被改變。Unix下,多數管理員沒有檢查根區的軟體,所以一些入侵者將一些後門留在根區。
隱匿進程後門
入侵者通常想隱匿他們運行的程序,這樣的程序一般是口令破解程序和監聽程序(sniffer),有許多辦法可以實現,這里是較通用的: 編寫程序時修改自己的argv[] 使它看起來象其他進程名。可以將sniffer程序改名類似in.syslog再執行,因此當管理員用"ps"檢查運行進程時,出現 的是標准服務名。可以修改庫函數致使"ps"不能顯示所有進程,可以將一個後門或程序嵌入中斷驅動程序使它不會在進程表顯現。使用這個技術的一個後門例子是
amod.tar.gz :
網路通行。這些網路通行後 門有時允許入侵者通過防火牆進行訪問。有許多網路後門程序允許入侵者建立某個埠號並不用通過普通服務就能實現訪問。 因為這是通過非標准網路埠的通行,管理員可能忽視入侵者的足跡。 這種後門通常使用TCP,UDP和ICMP,但也可能是其他類型報文。
TCP Shell 後門
入侵者可能在防火牆沒有阻塞的高位TCP埠建立這些TCP Shell後門. 許多情況下,他們用口令進行保護以免管理員連接上後立即看到是shell訪問。 管理員可以用netstat 命令查看當前的連接狀態,那些埠在偵聽,目前連接的來龍去脈。 通常這些後門可以讓入侵者躲過TCP Wrapper技術。這些後門可以放在SMTP埠,許多防火牆允許 e-mail通行的.
UDP Shell 後門
管理員經常注意TCP連接並觀察其怪異情況,而UDP Shell後門沒有這樣的連接,所以 netstat不能顯示入侵者的訪問痕跡,許多防火牆設置成允許類似DNS的UDP報文的通行,通常入侵者將UDP Shell放置在這個埠,允許穿越防火牆。
ICMP Shell 後門
Ping是通過發送和接受ICMP包檢測機器活動狀態的通用辦法之一。許多防火牆允許外界ping它內部的機器,入侵者可以放數據入Ping的ICMP包,在ping的機器間形成一個shell通道,管理員也許會注意到Ping包暴風,但除了他查看包內數據,否者入侵者不會暴露。
加密連接
管理員可能建立一個sniffer試圖某個訪問的數據,但當入侵者給網路通行後門加密 後,就不可能被判定兩台機器間的傳輸內容了。

熱點內容
linux的alarm 發布:2024-04-19 14:26:22 瀏覽:332
松江麻將源碼 發布:2024-04-19 14:06:06 瀏覽:957
明日之後怎麼實名認證安卓 發布:2024-04-19 13:35:55 瀏覽:936
數據加密解密演算法 發布:2024-04-19 13:25:52 瀏覽:945
安卓平板存儲空間不知道用在哪裡 發布:2024-04-19 12:58:57 瀏覽:765
出售lol腳本防封判幾年 發布:2024-04-19 12:45:14 瀏覽:188
安卓電視會員和平板哪個好 發布:2024-04-19 12:42:48 瀏覽:835
雲伺服器2m寬是多少 發布:2024-04-19 11:56:36 瀏覽:728
android層布局 發布:2024-04-19 11:52:13 瀏覽:771
1500元組裝伺服器電腦 發布:2024-04-19 11:47:25 瀏覽:469