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