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.0144 sec