You are on page 1of 27

1

B mn Mng v Truyn Thng

NHN XT CA GIO VIN HNG DN


. . . . . . . . . . . . . . . . . . . . . . . . . .

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP

MC LC

CHNG I: C S L THUYT.....................................................4
I. Gii thiu TCP/IP...................................................................................4 1. Cc lp trong m hnh TCP/IP............................................................4 2. Cc bc ng gi d liu trong m hnh TCP/IP..............................5 3. Mt s giao thc c bn trong m hnh TCP/IP..................................5 II. Giao thc ICMP..................................................................................11 1. Gii thiu ICMP................................................................................11 2. Cu trc.............................................................................................12 3. Danh sch cc thng ip iu khin ca giao thc ICMP................13

CHNG II: THIT K V XY DNG CHNG TRNH....16


I. Phn tch yu cu.................................................................................16 II. Phn tch cc chc nng....................................................................16 1. Phng thc hot ng ca ng dng:..............................................16 2. Xy dng chc nng:........................................................................16 III. Xy dng cc chc nng...................................................................17

CHNG III: TRIN KHAI V NH GI KT QU.............19


I. Mi trng trin khai...........................................................................19 1. H thng............................................................................................19 2. Phn mm..........................................................................................19 II. Kt qu cc chc nng ca chng trnh:.........................................19 1. Giao din chnh ca chng trnh:....................................................19 2. Chc nng qut a ch ca chng trnh:.........................................20 V Duy Dng Lp 07T4 Nhm 09B

B mn Mng v Truyn Thng Code chng trnh:..................................................................................21 1. Lp ICMP.cs: X l gi tin ICMP....................................................21 2. Lp Kiemtra.cs: Kim tra thng tin tr v ca gi tin ICMP.............22 3. Form1.cs: X l s kin trn Winform..............................................23

DANH MC HNH V

Hnh 1.1. M hnh TCP/IP ...................................................................4 Hnh 1.2. Cc bc ng gi trong m hnh TCP/IP........................5 Hnh 1.3. Cc giao thc khc nhau TCP/IP.......................................6 Hnh 1.4. ARP Header..........................................................................6 Hnh 1.5. IP Header..............................................................................7 Hnh 1.6. V tr ca ICMP message.....................................................8 Hnh 1.7. ICMP Header.......................................................................8 Hnh 1.8. IGMP Header.......................................................................8 Hnh 1.9. UDP Header..........................................................................9 Hnh 1.10. Cch thit lp kt ni giao thc......................................10 Hnh 1.11. Truyn, nhn gi tin trong TCP .....................................11 Hnh 2.1 Cu trc gi tin ICMP.........................................................13 Hnh 3.1 Chng trnh trc khi qut..............................................20 Hnh 3.2 Qut dy a ch m ngi dng nhp vo........................20 Hnh 3.3 Chc nng qut theo lp.....................................................21

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP

CHNG I: C S L THUYT

I.

Gii thiu TCP/IP 1. Cc lp trong m hnh TCP/IP

Hnh 1.1. M hnh TCP/IP

M hnh tham chiu TCP/IP tng t nh kin trc OSI, sau y l mt s tnh cht ca cc lp trong m hnh tham chiu TCP/IP: Lp Application: qun l cc giao thc, nh h tr vic trnh by, m ha v qun l cuc gi. Lp Application cng h tr nhiu ng dng, nh : FTP (File Transfer Protocol), HTTP (Hypertext Transfer Protocol), SMTP (Simple Mail Transfer Protocol), DNS (Domain Name System), TFTP (Trivial File Transfer Protocol) Lp Transport: m nhim vic vn chuyn t ngun n ch. Tng Transport m nhim vic truyn d liu thng qua hai nghi thc: TCP (Transmission Control Protocol) v UDP (User Datagram Protocol)
Lp Internet: m nhim vic la chn ng i tt nht cho cc gi tin. Nghi thc c s dng chnh tng ny l nghi thc IP (Internet Protocol)

Lp Network Interface: c tnh cht tng t nh nh hai lp Data Link v Physical ca kin trc OSI V Duy Dng Lp 07T4 Nhm 09B

B mn Mng v Truyn Thng

2. Cc bc ng gi d liu trong m hnh TCP/IP

Hnh 1.2. Cc bc ng gi trong m hnh TCP/IP

3. Mt s giao thc c bn trong m hnh TCP/IP

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP

Hnh 1.3. Cc giao thc khc nhau TCP/IP

a.

Giao thc ARP (Address Resolution Protocol) v giao thc RARP

(Reverse Address Resolution Protocol) Trn mt mng cc b hai trm ch c th lin lc vi nhau nu chng bit a ch MAC ca nhau. Nh vy vn t ra l phi thc hin nh x gia a ch IP (32 bit) v a ch MAC (48 bit) ca mt trm. Giao thc ARP c xy dng chuyn i t a ch IP sang a ch MAC khi cn thit.Khun dng ca mt gi tin ARP c ch ra trong hnh di y:

Hnh 1.4. ARP Header

V Duy Dng Lp 07T4 Nhm 09B

B mn Mng v Truyn Thng

Ngc li, giao thc RARP c dng chuyn i t a ch MAC sang a ch IP. Khun dng ca mt gi tin RARP tng t nh khun dng ca mt gi tin ARP c ch ra nh trong hnh trn. Ch khc l trng Operation n s c gi tr l 3 cho gi tin RARP request v gi tr l 4 cho gi tin RARP reply. Cc giao thc ARP v RARP khng phi l b phn ca IP m IP s dng n chng khi cn. b. Giao thc IP (Internet Protocol)

Giao thc IP l mt trong nhng giao thc quan trng nht ca b giao thc TCP/IP. Mc ch ca giao thc IP l cung cp kh nng kt ni cc mng con thnh lin mng truyn d liu. IP l giao thc cung cp dch v phn pht datagram theo kiu khng lin kt v khng tin cy ngha l khng cn c giai on thit lp lin kt trc khi truyn d liu, khng m bo rng IP datagram s ti ch v khng duy tr bt k thng tin no v nhng datagram gi i.

Khun dng n v d liu dng trong IP c m t nh sau:

Hnh 1.5. IP Header

c.

Giao thc ICMP (Internet Control Message Protocol)

- ICMP l mt giao thc thng ip, thng c xem nh l mt phn ca lp IP, c dng trao i cc thng tin iu khin dng s liu, thng bo li v cc thng tin trng thi khc ca b giao thc TCP/IP. - Khun dng ca mt thng ip ICMP v mi quan h ca n vi mt IP datagram c minh ha qua hnh di y.

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP

Hnh 1.6. V tr ca ICMP message

C nhiu loi thng ip ICMP, mi thng ip ICMP c mt khun dng ring ca n, mc d vy chng lun bt u vi 3 trng ging nhau:

Hnh 1.7. ICMP Header

Type (8 bit) Code (8 bit) Checksum (16 bit) C 15 gi tr khc nhau cho trng type, nh ngha tng thng ip ICMP c th. Mt vi loi thng ip ICMP s dng thm nhng gi tr khc ca trng code nh ngha cho n. d. Giao thc IGMP (Internet Group Management Protocol)

IGMP l mt giao thc c s dng bi host v router m h tr k thut multicasting. Ging nh ICMP, IGMP thng c xem nh l mt phn ca lp IP. Tuy nhin, IGMP khng ging nh cc giao thc khc, n l mt giao thc thng ip c kch thc c nh v khng c phn d liu Hnh v sau y ch ra khun dng ca mt thng ip IGMP phin bn 2:

Hnh 1.8. IGMP Header

V Duy Dng Lp 07T4 Nhm 09B

B mn Mng v Truyn Thng

ngha cc tham s: Type (8 bit): nh ngha loi thng ip IGMP Respond time (8 bit): gi tr thi gian ti a m mt host phi tr li mt truy vn Checksum (16 bit): kim sot li Group address (32 bit): dng ch nh mt nhm c th hay c thit lp gi tr 0.0.0.0 ch tt c cc nhm e. Giao thc UDP (User Datagram Protocol)

UDP l giao thc khng lin kt, cung cp dch v giao vn khng tin cy, s dng thay th cho TCP trong tng giao vn. Khc vi TCP, UDP khng c chc nng thit lp v gii phng lin kt, khng c c ch bo nhn (ACK), khng sp xp tun t cc n v d liu (datagram) n v c th dn n tnh trng mt hoc trng d liu m khng h c thng bo li cho ngi gi.

Khun dng ca UDP datagram c m t nh sau:

Hnh 1.9. UDP Header

ngha cc tham s: S hiu cng ngun (Source Port - 16 bit): s hiu cng ni gi datagram S hiu cng ch (Destination Port - 16 bit): s hiu cng ni datagram c chuyn ti di UDP (Length - 16 bit): di tng cng k c phn header ca gi UDP datagram UDP Checksum (16 bit): dng kim sot li, nu pht hin li th UDP datagram s b loi b m khng c mt thng bo no tr li cho trm gi V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP

10

UDP c ch gn v qun l cc s hiu cng (port number) nh danh duy nht cho cc ng dng chy trn mt trm ca mng. Do c t chc nng phc tp nn UDP c xu th hot ng nhanh hn so vi TCP. N thng dng cho cc ng dng khng i hi c tin cy cao trong giao vn. f. Giao thc TCP (Transmission Control Protocol)

TCP cung cp kt ni tin cy gia hai my tnh, kt ni c thit lp trc khi d liu bt u truyn. TCP cn gi l nghi thc hng kt ni, vi nghi thc TCP th qu trnh hot ng tri qua ba bc sau: Thit lp kt ni (Connection establishment) Truyn d liu (Data transfer) Kt thc kt ni (Connection termination) TCP phn chia cc thng ip thnh cc segment, sau n rp cc segment ny li ti bn nhn v n c th truyn li nhng gi d liu no b mt. Vi TCP th d liu n ch l ng th t, TCP cung cp Vitual Circuit gia cc ng dng bn gi v bn nhn. Giao thc TCP thit lp mt kt ni bng phng php Bt tay 3 ln (threeway handshake).

Hnh 1.10. Cch thit lp kt ni giao thc

Hnh v di y l mt v d v cch thc truyn, nhn gi tin bng giao thc TCP.

V Duy Dng Lp 07T4 Nhm 09B

11

B mn Mng v Truyn Thng

Hnh 1.11. Truyn, nhn gi tin trong TCP

Giao thc TCP l giao thc c tin cy cao, nh vo phng php truyn gi tin, nh c ch iu khin lung (flow control), cc gi tin ACK,.

II.

Giao thc ICMP

Internet Control Message Protocol (ICMP) l mt trong nhng giao thc ct li ca giao thc Internet Suite . l ch yu c s dng bi cc h iu hnh ca my tnh ni mng gi thng bo li cho thy, v d, mt dch v yu cu khng c hoc c mt my ch hoc router khng th t c. ICMP cng c th c s dng chuyn tip tin nhn truy vn. ICMP khc vi giao thc vn chuyn nh TCP v UDP ch n khng thng c s dng trao i d liu gia cc h thng, cng khng phi l thng xuyn lm vic ca ngi s dng cc ng dng mng li cp (vi ngoi l ca mt s cng c chn on nh ping v traceroute ) . ICMP cho giao thc Internet phin bn 4 (IPv4) cng c gi l ICMPv4. IPv6 c mt giao thc tng t, ICMPv6 . 1. Gii thiu ICMP Internet Control Message Protocol l mt phn ca giao thc Internet Suite c nh ngha trong RFC 792 . thng ip ICMP thng c to ra p ng V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP

12

vi cc li trong IP datagrams (theo quy nh ti RFC 1122 ), hoc cho hay nh tuyn nhm mc ch chn on. ICMP li lun lun c bo co vi ngun a ch IP gc ca gi d liu c ngun gc. Mt v d ICMP thng bo li l cc Thi gian nhn Live vt qu. Tt c cc my (chng hn nh mt trung gian router ) chuyn tip mt gi d liu IP c lng gim trong thi gian sng (TTL) lnh vc ca tiu IP mt. Nu TTL t n 0, mt ICMP Thi gian sng vt qu cnh bo c gi n cc ngun ca gi d liu ny. Mi thng ip ICMP c ng gi trc tip trong mt gi d liu IP duy nht, v do , ging nh UDP , ICMP l khng ng tin cy . Mc d thng ip ICMP c cha trong tiu chun datagrams IP, cc thng ip ICMP thng c x l nh mt trng hp c bit, phn bit vi ch bin IP bnh thng, ch khng phi x l nh l mt giao thc bnh thng ph ca IP. Trong nhiu trng hp, n l cn thit kim tra cc ni dung ca thng ip ICMP v cung cp nhng thng bo li thch hp cho cc ng dng to ra cc gi tin IP ban u, mt trong nhc vic gi thng ip ICMP. Nhiu tin ch mng thng dng da trn thng ip ICMP. Cc lnh traceroute c thc hin bng cch truyn UDP datagrams vi gi tin c t thm thng s IP TTL, v tm kim ICMP c thi gian sng ln hn TTL( trn) v "Destination unreachable" trong qu trnh truyn. Cc tin ch ping c thc hin bng cch s dng ICMP "Echo Request" v "Echo Reply".

2. Cu trc Cc gi tin bt u sau IP header (20 bytes). Tt c cc gi ICMP s c mt header c kch thc 8 byte v phn bin d liu. 4 byte u tin ca header ny s c nht qun. Cc byte u tin dnh cho trng Type. Cc byte th hai l cho trng Code. Cc byte th ba v th t l trng Checksum. Ni dung ca cc byte t byte th 4 ca header s khc nhau da trn trng Type v Code. Thng bo li ca ICMP c cha mt phn d liu bao gm ton b cc IP header cng vi cc byte u tin ca gi tin m to ra cc thng bo li khc nhau. Cc gi d liu ICMP sau c gi gn trong mt gi IP mi.

Type - ICMP Code theo quy nh di y. Code - Kiu loi hnh nht nh. Checksum - kim tra li d liu. Tnh t ICMP header + d liu, vi gi tr 0 cho lnh vc ny. Thut ton l ging nh tng kim tra tiu cho IPv4. Bit 0-7 8-15 16-23 24-31

V Duy Dng Lp 07T4 Nhm 09B

13 0 32 Loi M s

B mn Mng v Truyn Thng Checksum

Message
Hnh 2.1 Cu trc gi tin ICMP

3. Danh sch cc thng ip iu khin ca giao thc ICMP

Type 0 - Echo Reply 1 and 2

Code 0

Description C phn hi li (s dng ping) Dnh ring

0 1 2 3 4 5 3 - Destination Unreachable 6 7 8 9 10 11 12 13 4 - Source Quench 0

im ch ca mng khng th truy cp Host ch khng th truy cp Giao thc ch khng th truy cp Cng ch khng th truy cp Yu cu s phn mnh , v t c DF nh tuyn ngun b li Khng bit mng ich Khng bit my ch Host ngun b c lp Mng hnh chnh b cm Host hnh chnh b cm Mng khng th truy cp cho TOS My khng th truy cp cho TOS Truyn thng b cm Ngun b tt (iu khin tc nghn)

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP 0 5 - Redirect Message 1 2 3 6 7 8 - Echo Request 9 Router Advertisement 10 - Router Solicitation 11 - Time Exceeded 0 0 0 0 1 0 12 - Parameter Problem: Bad IP header 13 - Timestamp 14 - Timestamp Reply 15 - Information Request 16 - Information Reply 17 - Address Mask Request 18 - Address Mask Reply 19 20 ti 29 30 - Traceroute 31 0 1 2 0 0 0 0 0 0 Chuyn Datagram cho mng Chuyn Datagram cho Host Chuyn Datagram cho TOS v mng Chuyn Datagram cho TOS v host Thay th a ch host Dnh ring Lp li yu cu Router qung b Router khm ph/la chn TTL ht trong qu trnh truyn Xc nhn phn mnh ht hn Con tr ch ra li Thiu la chn cn thit Tnh trng chiu di Du thi gian Tr li du thi gian Yu cu thng tin Phn hi thng tin Yu cu a ch mt n Tr li a ch mt n Dnh ring cho bo mt Dnh cho th nghim bn Yu cu thng tin Chuyn i Datagram b li

14

V Duy Dng Lp 07T4 Nhm 09B

15 32 33 34 35 36 37 38 39 40 41 42 ti 255

B mn Mng v Truyn Thng Chuyn host di ng Where-Are-You (ban u cho IPv6) Here-I-Am (ban u cho IPv6) Yu cu s ng k di ng Tr li s ng k di ng Yu cu tn min Tr li tn min Thut ton SKIP Discovery Protocol, Simple Key Qun l giao thc Internet Photuris, bo mt tht bi Cc giao thc ICMP cho th nghim di ng nh Seamoby [RFC4065] Dnh ring

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP

16

CHNG II:

THIT K V XY DNG CHNG TRNH

I.

Phn tch yu cu ng dng phi m bo thc hin c cc yu cu sau: Gi gi tin ICMP n tt c cc my n di a ch trong mng LAN. Bt cc gi tin IP c gi v v tch ra gi tin ICMP t gi tin IP x l. C th qut theo cc lp a ch Private

II.

Phn tch cc chc nng 1. Phng thc hot ng ca ng dng:

ng dng hot ng bng cch s ln lt gi tng gi tin ICMP ti tt c cc my trong mng LAN cn qut. Dy a ch IP gi cc gi tin ICMP s do ngi dng nhp vo hay s chn la vic gi theo lp (lp A, lp B, lp C ..). Trong khi gi gi tin th ng dng s bt gi tin phn hi t mt a ch IP no tin hnh x l. V da vo thng tin phn hi m bit c a ch IP c tn ti trong mng hay khng. gi c gi tin ti tt c cc a chi th ta dng 4 vng lp for lng nhau tng ng vi 4 octet ca a ch IPv4.
for (byte i = ipf1; i <= ipt1; i++) for (byte j = ipf2; j <= ipt2; j++) for (byte t = ipf3; t <= ipt3; t++) for (byte z = ipf4; z <= ipt4; z++)

Sau khi phn tch v xc nh c a ch IP no tn ti trong mng th ta s tin hnh hin th ra cho ngi dng. Thng tin hin th bao gm s th t ca my trong mng, tn my v a ch IP ca my . 2. Xy dng chc nng: T vic phn tch hot ng ca ng dng nh trn ta tin hnh xy dng chc nng cho ng dng. ng dng s bao gm cc chc nng c bn sau: Chc nng gi gi tin ICMP. Chc nng nhn v x l gi tin Chc nng qut a ch IP da trn 2 chc nng c bn trn.

V Duy Dng Lp 07T4 Nhm 09B

17 III. Xy dng cc chc nng a. Xy dng chc nng gi gi tin:

B mn Mng v Truyn Thng

gi mt gi tin trong Visual C# th ta phi s dng mt Raw Socket. Mun to Raw Socket khi to ra Socket ta s dng SocketType.Raw, giao thc ICMP. To Raw Socket nh sau:
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);

Gi gi d liu Raw: ICMP l giao thc khng hng kt ni. S dng phng thc SendTo() ca lp Socket gi. Cng trong giao thc ICMP khng quan trng.
IPEndPoint iep = new(IPEndPoint (IPAddress.Parse (192.168.1.2), 0); sock.SendTo(packet, iep);

b.

Xy dng chc nng nhn gi tin v x l:

nhn gi tin t cc my khc gi v ta dng phng thc ReceiveFrom ca lp Socket. D liu nhn v l mt gi tin IP, v vy ta phi tch ra ly gi tin ICMP. Raw Socket khng t ng nh dng ICMP cho chng ta. Ta nh ngha lp ICMP nh sau:
class ICMP { public public public public public public { } }

byte Type; byte Code; UInt16 Checksum; int Messagesize; byte[] Message = new byte[1024]; ICMP()

Ta to ra mt gi tin ICMP vi Type = 8, Code = 0 tin hnh gi.


ICMP packet = new ICMP(); packet.Type = 0x08; packet.Code = 0x00; packet.Checksum = 0;

ly li gi tin ICMP t gi IP nhn c ta c phng thc:

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP


public ICMP(byte[] data, int size) { Type = data[20]; Code = data[21]; Checksum = BitConverter.ToUInt16(data, 22); Messagesize = size - 24; Buffer.BlockCopy(data, 24, Message, 0, Messagesize); }

18

V gi tin ICMP bt u t byte th 20 trong gi tin IP nn ta s ly d liu bt u t v tr byte th 20. Byte th 20 cha thng tin v Type Byte th 21 cha thng tin v Code Byte th 22 v 23 cha thng tin v Checksum D liu bt u t byte th 24

Sau khi nhn gi tin ta tin hnh phn tch gi tin ICMP theo cc thng ip iu khin: Type Code Indentifier Sequence Ty theo cc thng ip m ta bit c gi tin c c phn hi li hay khng. c. Xy dng chc nng qut a ch IP:

Chc nng qut a ch IP l m rng ca vic gi, nhn v phn tch gi tin nhn c t nhiu my trong mng LAN. y ta s qut mt dy cc a ch IP. thc thin cng vic ny ta tin hnh mt vng lp trn 4 octet ca a ch IP ln lt gi cc gi tin ICMP n tng my v tin hnh phn tch nhn c tng ng ca mi my. Nu c s phn hi ca my no th ta bit my ang tn ti trong mng v hin th cho ngi s dng bit.

V Duy Dng Lp 07T4 Nhm 09B

19

B mn Mng v Truyn Thng

CHNG III:

TRIN KHAI V NH GI KT QU

I.

Mi trng trin khai 1. H thng B x l Intel Pentium III hoc cc b x l mnh hn 128 MB Ram hoc cao hn Mn hnh c phn gii (800 x 600) hoc cao hn Bn phm, chut C kt ni mng (hoc Internet, hoc LAN) 2. Phn mm H iu hnh Windows 2000/XP/7 Visual Studio 2010 (Visual C#)

II.

Kt qu cc chc nng ca chng trnh: 1. Giao din chnh ca chng trnh:

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP


Hnh 3.1 Chng trnh trc khi qut

20

2. Chc nng qut a ch ca chng trnh:

Hnh 3.2 Qut dy a ch m ngi dng nhp vo

V Duy Dng Lp 07T4 Nhm 09B

21

B mn Mng v Truyn Thng


Hnh 3.3 Chc nng qut theo lp

PH LC
Code chng trnh: 1. Lp ICMP.cs: X l gi tin ICMP
using System; using System.Collections.Generic; using System.Text; namespace LTM_Scan_IP { class ICMP { public byte Type; public byte Code; public UInt16 Checksum; public int Messagesize; public byte[] Message = new byte[1024]; public ICMP() { } public ICMP(byte[] data, int size) { Type = data[20]; Code = data[21]; Checksum = BitConverter.ToUInt16(data, 22); Messagesize = size - 24; Buffer.BlockCopy(data, 24, Message, 0, Messagesize); } public byte[] getByte() { byte[] data = new byte[Messagesize + 9]; Buffer.BlockCopy(BitConverter.GetBytes(Type), 0, data, 0, 1); Buffer.BlockCopy(BitConverter.GetBytes(Code), 0, data, 1, 1); Buffer.BlockCopy(BitConverter.GetBytes(Checksum), 0, data, 2, 2); Buffer.BlockCopy(Message, 0, data, 4, Messagesize); return data; } public UInt16 getChecksum() { UInt32 chcksm = 0; byte[] data = getByte(); int packetsize = Messagesize + 8; int index = 0;

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP


while (index < packetsize) { chcksm += Convert.ToUInt32(BitConverter.ToUInt16(data, index)); index += 2; } chcksm = (chcksm >> 16) + (chcksm & 0xffff); chcksm += (chcksm >> 16); return (UInt16)(~chcksm); } } }

22

2. Lp Kiemtra.cs: Kim tra thng tin tr v ca gi tin ICMP.


using using using using System; System.Net; System.Net.Sockets; System.Text;

namespace LTM_Scan_IP { class Kiemtra { public static bool Check(string st) { byte[] data = new byte[1024]; int recv; Socket host = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); IPEndPoint iep = new IPEndPoint(IPAddress.Parse(st), 0); EndPoint ep = (EndPoint)iep; ICMP packet = new ICMP(); packet.Type = 0x08; packet.Code = 0x00; packet.Checksum = 0; Buffer.BlockCopy(BitConverter.GetBytes((short)1), 0, packet.Message, 0, 2); Buffer.BlockCopy(BitConverter.GetBytes((short)1), 0, packet.Message, 2, 2); data = Encoding.ASCII.GetBytes("test packet"); Buffer.BlockCopy(data, 0, packet.Message, 4, data.Length); packet.Messagesize = data.Length + 4; int packetsize = packet.Messagesize + 4; UInt16 chcksum = packet.getChecksum(); packet.Checksum = chcksum; host.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);

V Duy Dng Lp 07T4 Nhm 09B

23

B mn Mng v Truyn Thng


host.SendTo(packet.getByte(), packetsize, SocketFlags.None,

iep); try { data = new byte[1024]; recv = host.ReceiveFrom(data, ref ep); ICMP response = new ICMP(data, recv); int Indentifier = BitConverter.ToInt16(response.Message, 0); int Sequence = BitConverter.ToUInt16(response.Message, 2); System.Console.WriteLine("response from: {0}", ep.ToString()); System.Console.WriteLine("Type {0}", response.Type); System.Console.WriteLine("Code: {0}", response.Code); System.Console.WriteLine("Indentifier: {0}", Indentifier); System.Console.WriteLine("Sequence: {0}", Sequence); string stringData = Encoding.ASCII.GetString(response.Message, 4, response.Messagesize 4); System.Console.WriteLine("data: {0}", stringData); host.Close(); if (response.Type == 0 && response.Code == 0 && Indentifier == 1 && Sequence == 1) return true; else return false; } catch (SocketException) { System.Console.WriteLine("No response from remote host"); host.Close(); return false; } } } }

3. Form1.cs: X l s kin trn Winform.


using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; System.Net;

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP


using System.Threading; namespace LTM_Scan_IP { public partial class frMain : Form { int stt; byte ipf1, ipf2, ipf3, ipf4, ipt1, ipt2, ipt3, ipt4; public frMain() { InitializeComponent(); stt = 1; }

24

delegate void DlgThreadCode(); public void ThreadCode() { if (this.prgressBar.InvokeRequired) { this.Invoke(new DlgThreadCode(ThreadCode)); } else { for (byte i = ipf1; i <= ipt1; i++) for (byte j = ipf2; j <= ipt2; j++) for (byte t = ipf3; t <= ipt3; t++) for (byte z = ipf4; z <= ipt4; z++) { int max = ((ipt1 - ipf1) + (ipt2 - ipf2) + (ipt3 - ipf3) + (ipt4 - ipf4)); prgressBar.Minimum = 0; prgressBar.Maximum = max; prgressBar.Step = 1; prgressBar.PerformStep(); string strip = i.ToString() + "." + j.ToString() + "." + t.ToString() + "." + z.ToString(); if (Kiemtra.Check(strip)) { IPHostEntry ipHost = Dns.Resolve(strip); string hostName = ipHost.HostName; Add(stt.ToString().Trim(), hostName, strip); lvKetQua.Refresh(); stt++; } } prgressBar.Value = 0; lbStatus.Text = " QUT XONG"; }

V Duy Dng Lp 07T4 Nhm 09B

25
}

B mn Mng v Truyn Thng

private void btScan_Click(object sender, EventArgs e) { for (int i = 0; i < lvKetQua.Items.Count; i++) { lvKetQua.Items[i].Remove(); i--; } lbStatus.Text = "ANG QUT ..."; lbStatus.Refresh(); stt = 1; if (rdbAll.Checked == true) { ipf1 = Convert.ToByte(tbF1.Text.Trim()); ipf2 = Convert.ToByte(tbF2.Text.Trim()); ipf3 = Convert.ToByte(tbF3.Text.Trim()); ipf4 = Convert.ToByte(tbF4.Text.Trim()); ipt1 = Convert.ToByte(tbT1.Text.Trim()); ipt2 = Convert.ToByte(tbT2.Text.Trim()); ipt3 = Convert.ToByte(tbT3.Text.Trim()); ipt4 = Convert.ToByte(tbT4.Text.Trim()); } if (rdbLop.Checked == true) { if (cbbLop.SelectedIndex == 0) { ipf1 = 10; ipf2 = 0; ipf3 = 0; ipf4 = 0; ipt1 = 10; ipt2 = 255; ipt3 = 255; ipt4 = 255; } else if (cbbLop.SelectedIndex == 1) { ipf1 = 172; ipf2 = 16; ipf3 = 0; ipf4 = 0; ipt1 = 172; ipt2 = 31; ipt3 = 255; ipt4 = 255; } else

V Duy Dng Lp 07T4 Nhm 09B

ng dng giao thc ICMP xy dng chng trnh Scan IP


{ ipf1 = 192; ipf2 = 168; ipf3 = 0; ipf4 = 0; ipt1 = 192; ipt2 = 168; ipt3 = 255; ipt4 = 255; } } Thread thread = new Thread(new ThreadStart(ThreadCode)); thread.Start(); }

26

private void rdbAll_CheckedChanged(object sender, EventArgs e) { if (rdbAll.Checked == true) { cbbLop.Enabled = false; tbF1.Enabled = true; tbF2.Enabled = true; tbF3.Enabled = true; tbF4.Enabled = true; tbT1.Enabled = true; tbT2.Enabled = true; tbT3.Enabled = true; tbT4.Enabled = true; } } private void rdbLop_CheckedChanged(object sender, EventArgs e) { if (rdbLop.Checked == true) { tbF1.Enabled = false; tbF2.Enabled = false; tbF3.Enabled = false; tbF4.Enabled = false; tbT1.Enabled = false; tbT2.Enabled = false; tbT3.Enabled = false; tbT4.Enabled = false; cbbLop.Enabled = true; } } private void frMain_Load(object sender, EventArgs e) {

V Duy Dng Lp 07T4 Nhm 09B

27

B mn Mng v Truyn Thng


string strhostname = Dns.GetHostName(); IPHostEntry iphost = Dns.Resolve(strhostname); lbDiachi.Text = iphost.AddressList[0].ToString(); lbHostName.Text = strhostname; tbF1.Enabled = false; tbF2.Enabled = false; tbF3.Enabled = false; tbF4.Enabled = false; tbT1.Enabled = false; tbT2.Enabled = false; tbT3.Enabled = false; tbT4.Enabled = false; cbbLop.Enabled = false; } private void Add(String st1, String st2, String st3) { ListViewItem item = new ListViewItem(st1); item.SubItems.Add(st2); item.SubItems.Add(st3); lvKetQua.Items.Add(item); } private void btExit_Click(object sender, EventArgs e) { Close(); Dispose(); } }

TI LIU THAM KHO

[1]

Nguyn Phng Lan Hong c Hi, Java n bn sinh vin, Nh xut bn gio dc, 2001. Internet Control Message Protocol (http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol)

[2] Ebook Bi ging Lp trnh mng vi C# (pdf).


[3]

V Duy Dng Lp 07T4 Nhm 09B

You might also like