E D R , A S I H C RSS

Memo

unicode('ฐฐ','utf-8', 'replace').encode('euc-kr')

šฐฆฌ €ํ–‰ 495-156526-02-001 (‚จƒํ˜‘)

http://www.freenetpages.co.uk/hp/alan.gauld/tutintro.htm

http://search.costcentral.com/search?p=Q&srid=S9-3&lbc=costcentral&ts=custom&w=ThinkPad&uid=975848396&method=and&isort=price&srt=150

http://dojeun.egloos.com/315019/

—ฌ„ธฐ †€Ÿฌฐˆž˜!

งˆ€ง‰ ‚ฌ„˜ „‹ค€...?
Upload:ReadMe.txt


/*
Packet Sniffer
12.10.02
Made By KT

RFC 768 User Datagram Protocol
RFC 791 Internet Protocol
RFC 792 Internet Control Message Protocol
RFC 793 Transmission Control Protocol
*/


#define MAX_PACKET_SIZE 65525
#define BIND2IP "165.194.17.76"  //Put you'r IP in her

#include <stdio.h>
#include <winsock2.h>
#include <mstcpip.h>
#include <ws2tcpip.h>

typedef struct iphdr
{
	unsigned char VerIHL; //Version and IP Header Length
	unsigned char Tos;
	unsigned short Total_len;
	unsigned short ID;
	unsigned short Flags_and_Frags; //Flags 3 bits and Fragment offset 13 bits
	unsigned char TTL;
	unsigned char Protocol;
	unsigned short Checksum;
	unsigned long SrcIP;
	unsigned long DstIP;
	//unsigned long Options_and_Padding;
} IpHeader;

typedef struct port
{
	unsigned short SrcPort;
	unsigned short DstPort;
} TcpUdpPort;

void ProcessPacket(char* Buffer, int Size)
{
	IpHeader *iphdr;
	TcpUdpPort *port;
	struct sockaddr_in SockAddr;
	unsigned short iphdrlen;
	char C;

	iphdr = (IpHeader *)Buffer;

	iphdrlen = (iphdr->VerIHL << 4);
	memcpy(&C, &iphdrlen, 1);
	iphdrlen = (C >> 4) * 4; //20


	memset(&SockAddr, 0, sizeof(SockAddr));
	SockAddr.sin_addr.s_addr = iphdr->SrcIP;
	printf("Packet From: %s ", inet_ntoa(SockAddr.sin_addr));
	memset(&SockAddr, 0, sizeof(SockAddr));
	SockAddr.sin_addr.s_addr = iphdr->DstIP;
	printf("To: %s ", inet_ntoa(SockAddr.sin_addr));

	switch (iphdr->Protocol)
	{
	case 1:
		printf("Protocol: ICMP ");
		break;
	case 2:
		printf("Protocol: IGMP ");
		break;
	case 6:
		printf("Protocol: TCP ");
		if (Size > iphdrlen)
		{
			port = (TcpUdpPort *)(Buffer + iphdrlen);
			printf("From Port: %i To Port: %i ", ntohs(port->SrcPort), ntohs(port->DstPort));
		}
		break;
	case 17:
		printf("Protocol: UDP ");
		if (Size > iphdrlen)
		{
			port = (TcpUdpPort *)(Buffer + iphdrlen);
			printf("From Port: %i To Port: %i ", ntohs(port->SrcPort), ntohs(port->DstPort));
		}
		break;
	default:
		printf("Protocol: %i ", iphdr->Protocol); 
	}

	printf("n");
}

void StartSniffing(SOCKET Sock)
{
	char *RecvBuffer = (char *)malloc(MAX_PACKET_SIZE + 1);
	int BytesRecv, FromLen;
	struct sockaddr_in From;

	if (RecvBuffer == NULL)
	{
		printf("malloc() failed.n");
		exit(-1);
	}

	FromLen = sizeof(From);

	do
	{
		memset(RecvBuffer, 0, MAX_PACKET_SIZE + 1);
		memset(&From, 0, sizeof(From));

		BytesRecv = recvfrom(Sock, RecvBuffer, MAX_PACKET_SIZE, 0, (sockaddr *)&From, &FromLen);
		
		if (BytesRecv > 0)
		{
			ProcessPacket(RecvBuffer, BytesRecv);
		}
		else
		{
			printf( "recvfrom() failed.n");
		}

	} while (BytesRecv > 0);


	free(RecvBuffer);
}

int main()
{
	WSAData wsaData;
	SOCKET Sock;
	struct sockaddr_in SockAddr;
	DWORD BytesReturned;
	int I = 1;

	try
	{

		if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
		{
			printf("WSAStartup() failed.n");
			exit(-1);
		}

		Sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);

		if (Sock == INVALID_SOCKET)
		{
			printf("socket() failed.n");
			exit(-1);
		}

		memset(&SockAddr, 0, sizeof(SockAddr));
		SockAddr.sin_addr.s_addr = inet_addr(BIND2IP);
		SockAddr.sin_family = AF_INET;
		SockAddr.sin_port = 0;

		if (bind(Sock, (sockaddr *)&SockAddr, sizeof(SockAddr)) == SOCKET_ERROR)
		{
			printf("bind(%s) failed.n", BIND2IP);
			exit(-1);
		}

		if (WSAIoctl(Sock, SIO_RCVALL, &I, sizeof(I), NULL, NULL, &BytesReturned, NULL, NULL) == SOCKET_ERROR)
		{
			printf("WSAIoctl() failed.n");
			exit(-1);
		}

		StartSniffing(Sock);
	}
	catch (...)
	{
		printf("CRASHn");
	}

	closesocket(Sock);
	WSACleanup();

	return 0;
}
----
œ„ํ‚ค˜ ข…ฅ˜ —Š”
...

ด ฐ–—„ —ฌŸฌ€€ –ธ–ดกœ งŒ“  œ„ํ‚ค€ žˆ‹ค. งคํฌกœ ํ•˜‚˜ ถ”€ํ•˜Š” ฐฉฒ•ด ชจ‘ ‹คฅด‹ค. —ฌŸฌ œ„ํ‚ค—  šฉํ•  ˆ˜ žˆŠ” ํ”ŒŸฌทธธ„ งŒ“ค ˆ˜ žˆ„Œ?
----
˜–ดกœ งํ•ด• ํ•˜Š” ํ™˜ฒฝ„  ‘ํ•˜ณ  ‹ต‹ตํ•จ„ Šฉด ˜–ดณต€ ํ•ด•ฒ ‹คŠ” งคšฐ ํฐ ™ธฐ€ ƒธด‹ค.
€ธˆ ‹จ–ดณต€€ ํ•„š”ํ•˜‹ค.
“ฐธฐ ํ›ˆ จ€ NoSmok:˜–ดกœธฐ“ฐธฐ ํ•ด•ํ• Œ? •„ง ž˜ ชจฅดฒ ‹ค.
svn://zeropage.org/home/SVN/leonardong
htpp://zeropage.org/trac/leonardong/
----
„œ„
~cpp
from SocketServer import *
import thread
from threading import *

HOST = ('127.0.0.1', 9999)
ClientList = []
bufsize = 1024

class ConnectManager(Thread):
    def __init__(self, conn):
        Thread.__init__(self)
        self.conn = conn
    def run(self):
        print self.conn.getpeername()
        while True:
            try:
                self.conn.send("I'm the Boss")
                data = self.conn.recv(bufsize)
                print data
            except:
                self.conn.close()
                break

class MyServer(BaseRequestHandler):
    def handle(self):
        conn = self.request
        print conn
        if conn:
            connManager = ConnectManager(self.request)
            connManager.start()
            connManager.run()
            ClientList.append(connManager)

    def finish(self):
        print "finished"
    def setup(self):
        print "setup"     
    
if __name__ == "__main__":
    my_server = ThreadingTCPServer(HOST, MyServer)
    my_server.serve_forever()

ํดด–ธํŠธ
~cpp
//Project -> Setting -> LINK ฉ”‰ด -> Object/library modules: ˜ €„— ws2_32.lib  ถ”€ํ•œ‹ค. 

#include <stdio.h>
#include <winsock2.h>

#define	PORT 9999		 //	„œ„˜ 9999ฒˆ ํฌํŠธ —ฐ‹ค
#define	BACKLOG	5
#define SERVER_IP "127.0.0.1"

void error(char	*buf)
{
	puts(buf), exit(1);
}

main(){
	WSADATA	wsaData;

	SOCKET server_sock;		   // „œ„˜ socket„ ƒ„

	SOCKADDR_IN	server_addr;	// „คํŠธ›Œํฌ˜  •ณด ‹ด„ structure	ƒ„.

	char msg[] = "My name is Na Hwidong,.";
	char question[200];
	int queslen;

	if(	WSAStartup(MAKEWORD(2,2), &wsaData)	== -1 )
		error("WSAStartup Error");


	// socket „ •
	// ํ”„กœทธž˜จธŠ”	ดฒƒ„ ํ†ตํ•ด	„คํŠธ›Œํฌ™€ Œ€ํ™” ํ•œ‹ค.

	server_sock	= socket(AF_INET, SOCK_STREAM, 0);
	if(	server_sock	== -1 )
		error("server socket error");


	// „คํŠธ›  •ณด „ •
	// ดฒƒ€ ํ”„กœทธžจด socket —ฐฒฐํ•   •ณด	‹ดณ žˆ‹ค.

	memset((SOCKADDR_IN	*)&server_addr,	0, sizeof(SOCKADDR_IN));
	// struct sockaddr_in	 ->	   SOCKADDR_IN
	server_addr.sin_family = AF_INET;
	server_addr.sin_addr.s_addr
		= inet_addr(SERVER_IP);	 //	กœปฌ †Œกœ „ •ํ•œ‹ค.
	server_addr.sin_port = htons(PORT);


	// „œ„— —ฐฒฐํ•œ‹ค. ‹œ„‚˜ ํ•ดณดž.
	if(	connect(server_sock,
			(struct sockaddr *)&server_addr,
			 sizeof(struct	sockaddr)) == -1 )
		fprintf(stderr,	"„œ„—	connect	ํ•  ˆ˜ —†Šต‹ˆ‹ค."), exit(1);	

	
	for( int i = 0 ; i < 3 ; i++ ){

		// —ฐฒฐํ•˜ณ  ญ˜ ํ•ด•€ ทธƒฅ žˆ—ˆ„ค..;;
		queslen = recv( server_sock, question, sizeof(question), 0);
		question[queslen] = '';
		printf( "I have to answer the next question. %sn", question);
		if( send(server_sock, msg, sizeof(msg), 0) == -1 )
			fprintf(stderr, "send error"); 
		printf( "I sent an answer. The answer is %srn", msg);
		system("pause");
	}
	WSACleanup();

	exit(0);
	// exitกœ ข…ฃŒ ํ•˜ฉด ชจ“  ํŒŒ	””Šคํฌฆฝํ„ ž™œกœ ‹ซณ  ข…ฃŒํ•œ‹ค.
}

ObserverPattern —ฐŠต
‹ ฌธ„ „œ กœ “คฉด —ญํ• ด ‘ ฐœกœ ‚˜‰œ‹ค. ํ•œชฝ€ ‹ ฌธ‚ดšฉ„ ›ํ•˜Š” Œ€กœ ํŽธง‘ํ•˜Š” ‹ ฌธ‚ฌ, ํ•œชฝ€ ‹ ฌธ ‚ดšฉ„  œณดํ•˜Š” ทจžฌ ธฐžด‹ค.
šฐฆฌ˜ ทจžฌ ธฐžŠ” „ˆฌด‚˜ †Œช…˜‹ด ฐ•ํ•˜ธฐ •Œฌธ— ž‹ ด ƒˆกœ •ŒฒŒ œ  •ณด ฆ‰ฐ ‹ ฌธ‚ฌ— •Œฆฐ‹ค. ˜ํ•œ –ด–ค ‹ ฌธ‚ฌ ชฝ—„œ ธฐž—ฒŒ  •ณด€ ํ‹€ ธ‹คณ  •Œ คฉด, ธฐžŠ” ‹คฅธ ‹ ฌธ‚ฌ—ฒŒ„ ชจ‘ ƒˆกœšด  •ณด •Œ ค€‹ค.
~cpp
import unittest

class Reporter:
    def __init__(self):
        self.companies = []
        
    def collectNews(self, aNews):
        self.news = aNews
        
    def addCompany(self, anObserverCompany):
        self.companies.append( anObserverCompany )
        
    def notify(self):
        for each in self.companies:
            each.update()
            
class NewsCompany:
    def __init__(self, reporter):
        self.reporter = reporter
        reporter.addCompany(self)
        self.news = ""
        
    def update(self):
        self.news = self.reporter.news

class SportNewsCompany(NewsCompany):
    def __init__(self, reporter):
        NewsCompany.__init__(self,reporter)

class EconomyNewsCompany(NewsCompany):
    def __init__(self, reporter):
        NewsCompany.__init__(self,reporter)

class HanguryeNewsCompany(NewsCompany):
    def __init__(self, reporter):
        NewsCompany.__init__(self,reporter)

    def correctNews(self, aNews):
        self.reporter.collectNews(aNews)
        self.reporter.notify()

       
class TestObserverPattern(unittest.TestCase):
    def testUpdate(self):
        reporter = Reporter()
        company = NewsCompany(reporter=reporter)
        news="He is dead."
        reporter.collectNews(news)
        company.update()
        self.assertEquals( news, company.news )
        
    def testNotify(self):
        reporter = Reporter()
        companies = [SportNewsCompany( reporter ),
                     EconomyNewsCompany( reporter )]
        news="He is dead."
        reporter.collectNews(news)
        reporter.notify()
        for company in companies:
            self.assertEquals( company.news, reporter.news )

class TestCompany(unittest.TestCase):
    def testCorrectNews(self):
        reporter = Reporter()
        companies = [SportNewsCompany( reporter ),
                     EconomyNewsCompany( reporter )]
        theCompany = HanguryeNewsCompany(reporter)
        theCompany.correctNews("He is still alive")
        self.assertEquals( reporter.news, theCompany.news )
        for company in companies:
            self.assertEquals( company.news, reporter.news )

    def xtestTwoRepoter(self):
        reporter = Reporter()
        company = BigNewsCompany(reporter)
        anotherReporter = Reporter()
        anotherReporter.collectNews( "She.." )
        company.hire( anotherReporter )
        anotherReporter.notify()
        self.assertEquals( "She..", company.news )
        reporter.collectNews( "I'm different." )
        reporter.notify()
        self.assertEquals( "I'm different", company.news )
if __name__ == "__main__":
    unittest.main(argv=('','-v'))
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:46
Processing time 0.0160 sec