Recent Posts
Recent Comments
Link
11-26 00:26
동글동글 라이프
Perl로 짠 IRC Bot 본문
예전 악성코드 분석을 한창 할 때 IRC 봇을 보고 난 뒤...
POE-Component-IRC-5.88 (3 Reviews) - 28 Aug 2008 - Chris Williams
3편까지만 정독을 해도 IRC_BOT을 만들 수 있고
관심있으신 분은 Perl Bot 만들기 프로젝트 홍보...!! <-- 나도 일단 멤버라능...
언젠가 한번 만들어 봐야지... 생각했던 때가 있었다.
전에 C언어로 구현하려다 귀찮아서 손 놓고 있다가
Perl을 시작하자 말자 IRC BOT을 다루는 JEEN님을 만나 내공 습득!
즐겁게 Bot을 만들며 Perl공부를 했었다.
irc.freenode.org 의 #Perl-kr 방에는 여러 봇들이 각각의 몫을 하고 있으며,
대표적인 것으로 hanirc.org 의 #perl 방과 연결을 시켜 주는 것과
코드패드 생성, 영어사전 , IRC 로그를 확인하는 명령들이 있다.
cpan에 IRC 모듈을 검색해 보면 대부분 POE::Component::IRC 모듈만 나온다.
POE::Component::IRC
a fully event-driven IRC client module.POE-Component-IRC-5.88 (3 Reviews) - 28 Aug 2008 - Chris Williams
2008년 8월 28일까지 꾸준히 업데이트가 되었으며 다양한 플러그인 기능들이 있어
많은 사람들에게 사랑받는 모듈이다.
예전에 블로그로 뒤지다가 로우소켓프로그래밍으로 IRC봇을 짠 것을 봤는데...
그 코드가 C로 짠것만 못하다는 느낌이 들었다.
요즘들어 프로그래밍 언어란 그 언어의 특색에 맞게 코드를 짜야 하며
특히 Perl은 아주아주 Perl스럽게 코드를 짜야한다는 생각이 든다. ( saillinux 님께 세뇌를 받았...)
이 모듈을 정리한 블로그가 있으니 바로 여기!!
JEEN님의 IRC BOT 만들기
[ Perl ] IRC BOT을 만들어봅시다 :-) #1 [ Perl ] IRC BOT을 만들어봅시다 :-) #2 [ Perl ] IRC BOT을 만들어봅시다 :-) #3 [ Perl ] IRC BOT을 만들어봅시다 :-) #4 [ Perl ] IRC BOT을 만들어봅시다 :-) #5 [ Perl ] IRC BOT을 만들어봅시다 :-) #6 |
3편까지만 정독을 해도 IRC_BOT을 만들 수 있고
조금만 응용을 시키면 FTP서버에서 프로그램을 다운받아서
실행까지 시켜주는 프로그램을 만들 수 있다. (이 부분이 악성코드 실행과 거의 동일...)
생각없이 적었는데 만들어 보고 싶어져서... 한번.. 샤샤샥...
Net::FTP 모듈을 사용하여 코드 작성.
if ($what =~ /^!([a-z]+)\s?(.*?)?$/ ){
my ($command,$option) = ($1,$2);
if ($command eq 'ftp'){
my ($IP,$file) = split /\s+/, $option;
$irc->yield( privmsg => $channel => "IP :".$IP. " 파일명 : ".$file );
my $ftp = Net::FTP->new($IP); #객체생성
$ftp->login("anonymous",""); #id와 비밀번호 설정
$ftp->cwd("/"); #FTP 서버의 경로 설정
$irc->yield( privmsg => $channel => $nick . " 접속성공! " );
$ftp->get($file); #파일 다운로드
$ftp->quit; #종료
#다운받은 파일 출력
if($file=~ m!.+\.txt!) {#다운받은 파일이 .txt 파일일때 출력
open my $fh ,'<',$file or die "Can not download file : $! ";
while(<FH>){
next if($_ eq "\n");
$irc->yield( privmsg => $channel => $_);
}
}else{
$irc->yield( privmsg => $channel => cwd().$file." 에 파일이 저장되었습니다");
}
}
}
|
코드에 주석을 달아놨으니 간략히 설명하자면,
다운받은 파일이 텍스트 파일일때는 해당 파일을 출력해주고
아닐 경우에는 실행을 시켜준다. (실행하는 소스는 일부로 뺐다.)
간단히 테스트.
honey-bot은 직접 작성한 IRC 봇이고
명령을 내리면 ftp서버에 접속하여 파일을 다운받는다.
honey-bot은 직접 작성한 IRC 봇이고
명령을 내리면 ftp서버에 접속하여 파일을 다운받는다.
이제.. 이것을 exe파일로 만들어서... 유포를... ㅡ_ㅡ;;
관심있으신 분은 Perl Bot 만들기 프로젝트 홍보...!! <-- 나도 일단 멤버라능...
- PR
※ 현재 POE::Component::IRC를 사용한 Perl Bot 만들기 프로젝트가 진행중입니다.
- http://code.google.com/p/perl-irc-bot
참여를 원하시면 댓글을 달아주시거나, email: aiatejin@gmail.com
혹은 IRC(irc.hanirc.org, #perl)에서 JEEN에게 연락하시면 됩니다.
※ 현재 POE::Component::IRC를 사용한 Perl Bot 만들기 프로젝트가 진행중입니다.
- http://code.google.com/p/perl-irc-bot
참여를 원하시면 댓글을 달아주시거나, email: aiatejin@gmail.com
혹은 IRC(irc.hanirc.org, #perl)에서 JEEN에게 연락하시면 됩니다.
예전에 작성했던 글을 테스트하다가 갱신해 버렸네 -_-;;
'개발자 이야기 > Perl' 카테고리의 다른 글
perl을 사용한 자신의 IP 주소 얻기 (7) | 2009.02.08 |
---|---|
Morse (모스 부호) (9) | 2009.01.29 |
역 해시 (Reverse Hash) (4) | 2009.01.11 |
irc 로그 분석 (0) | 2009.01.08 |
정규 표현식에 대하여... (6) | 2008.12.29 |
Comments