2009년 12월 26일 토요일

카페 자동방문 프로그램

솔직히 말해서 처음엔 내가 운영하는 채팅사이트에 사람들이 모이게 할려고
자동으로 카페를 방문하는 프로그램을 만들어 보았었다...

그러나....
처음엔 내 사이트를 광고하고픈 마음에서 만들었는데 가만 생각해보니 괜한 뻘짓인 거 같다...

그래서 TEST용도로만 한 두번 해보고 지금은 전~~~~~혀~ 사용하고 있진 않고 있따... ^0^
어차피 효과도 없을 것이고 오히려 반발심을 살 수 있기 때문이란 생각이다...
차라리 제대루된 서비스를 제공하고 좋은 기능과 재미난 기능들을 선보이는 것에 노력을 들이는 것이 낫다는 판단이다! ^0^
정당하게 승부하는 것이 당연히 가치 있고 보람있으니까!!!


구현방법은 그닥 어렵진 않다...

parcer를 만들어서 해당 html을 읽고 이를 변조해서 내가 원하고자 하는 일을 수행하도록 하면 되는데
page를 요구하는 요구자 컴퓨터의 접근 domain명이 달라지면 당연 blocking을 당한다...
때문에 약간의 머리를 써야하는데...  헤더정보를 바꾼다거나.. 기타 방법등이 있다...

일단 실행하면 다음과 같이 작동한다....
상단에는 해당 블로그의 url이 표시되고..
그 아래에는 해당사이트가 나온다...
글구 정해져 있는 시간동안 기다렸다가 다음 랜덤 페이지를 찾아서 가게 된다...




 악용될 거 같아 소스는 공개하지 않는다....

이미지를 클릭하시면 원본크기로 보실수 있습니다.






http://www.dude.co.kr






P 이경철님의 파란블로그에서 발행된 글입니다.

신뢰할 수 있는 사이트로 등록하기!!!

채팅사이트 조이팅스토리을 운영하는 철이랍니당...

실컷 사이트 잘 만들어 놓고... 신뢰할 수 없는 사이트가 되면 안되지비... ㅋㅋ

물론 우선 인증서가 필요하긴한데... 신뢰할 수 있는 사이트로 등록하므로써 얻게 되는 혜택은....

굳이 언급할 필요도 없을듯...  그렇게 좋아??? ㅋㅋ

 

악성코드가 사용자 PC(피해자)에 한번 실행되기만 하면 할 수 있는 악성행위들이 참 많지요.
그중에 하나는 피해자의 Internet Explorer의 "신뢰할 수 있는 사이트"에
공격자가 이미 구축해놓은 웹사이트를 등록하는 것입니다.

그렇게 되면 제2, 제3의 악성코드들을 공격자의 웹사이트를 통해 다운로드받아서
실행할 수도 있구요.

신뢰할 수 있는 사이트에 한번 등록되면 윈도우 비스타에서조차 보호모드(Protected Mode)가
동작하지 않습니다. XP는 말할 것도 없구요.

윈도우 비스타의 "보호모드"가 실행되면 UAC, MIC, UIPI 기능이 동작합니다.
UAC, MIC, UIIPI가 무엇이냐면 아래 자료를 참고하세요.

--------< 국가사이버안전센터 "ActiveX Control 개발 가이드라인" p22 >---------------

윈도우 비스타에서는 인터넷 익스플로러와 ActiveX Control의 자원접근 권한을 제한하
기 위해서 사용자계정컨트롤(UAC : User Access Control), MIC(Mandatory Integrity
Control) 그리고 UIPI(User Interface Privilege Isolation) 메커니즘을 추가하였다. UAC에
서는 사용자의 권한이 관리자라 하더라도 평소에는 제한된 관리자 권한으로 작업을 수행
하고 사용자가 개별적으로 허락하는 경우에만 관리자 권한으로 응용프로그램들을 실행
한다. MIC는 낮은 Integrity3) 프로세스가 상위 Integrity 오브젝트에 대한 쓰기 권한을 제한
하며, UIPI는 낮은 Integrity 프로세스가 상위 Integrity 프로세스에게 윈도우 메시지를 전
송하거나 후킹하는 행위를 제한한다.

----------------------------------------------------------------------------------

신뢰할 수 있는 사이트 추가하는 방법은 ActiveX를 이용하는 방법과
레지스트리 파일을 이용하는 방법이 있습니다.

이번에는 레지스트리 파일을 이용하는 방법을 설명하겠습니다.

결론부터 말하면 특정 레지스트리 키에 도메인이름을 등록하는 것입니다. 간단하죠.
ActiveX를 이용하는 방법도 마찬가지 원리입니다.

아래 키를 보시죠.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\test.co.kr\www

www.test.co.kr 도메인을 Internet Explorer의 신뢰할 수 있는 사이트에 추가된 것을

아래와 같이 레지스트리 편집기에서 확인할 수 있습니다.

이미지를 클릭하시면 원본크기로 보실수 있습니다.



 


다음은 레지스트리 파일입니다.

trusted_zone_doo.reg

클릭하고 확인 버튼 누르면 아래와 같이 www.test.co.kr 을 신뢰할 수 있는 사이트에 자동으로 추가해줍니다.

이미지를 클릭하시면 원본크기로 보실수 있습니다.



참고: 국가사이버안전센터,국가보안기술연구소 "ActiveX Control 개발 가이드라인(2008.11)"

==========================================================================================================
 
 
일단... 메모장 열고...
욜케 넣고....
 
 
---> 아래 여기서부터
 
'###################################################################
신뢰할 수 있는 사이트로 등록!!!
'###################################################################
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\test.co.kr\www]
"http"=dword:00000002
 
<---- 여기까지...
 
 
저장할 땐!!! .reg로 확장자를 바꾸어 저장!
나머진 알아서...
 
물론 자바에서 직접 레지스트리를 건드리도록 만드는 것이 더 좋을듯...   하핫~
 
 
 
 
 


P 이경철님의 파란블로그에서 발행된 글입니다.

화상채팅용 자바(Java) JMF를 이용한 USB Cam을 이...

채팅사이트 조이팅스토리을 운영하는 철이랍니당...

웹에서 셀카를 찍는다고나 할까? ㅋㅋ

동적인 화상채팅도 잼있다지만...

사람들이 옛것을 찾고 거기에 애착을 느끼기도 하듯...

꼭 최신의 최신만이 능사는 아니다란 생각이다...

이 기능을 잘 이용해서 잼나게 무언가 서비스를 제공하면 끝짱이지...ㅋㅋ

 

쪽지를 보낼 수도 있겠고...

사진등록도 쉽게 할 수 있을 테고...

물론 이미 있는 기능만 언급한 거고....

좀 더 잼있는 기능을 제공해야 경쟁력이 있겠지? ㅋㅋ

 

자바(Java) JMF를 이용한 USB Cam을 이용한 JPEG 캡쳐

--------------------------------------------------------------------------------------------------
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;

import javax.media.*;
import javax.media.format.*;
import javax.media.util.*;
import javax.media.control.*;
import javax.media.protocol.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;

import com.sun.image.codec.jpeg.*;

public class JPEGCapture {

 public static Player player = null;
 public CaptureDeviceInfo di = null;
 public MediaLocator ml = null;

 public Buffer buf = null;
 public Image img = null;
 public VideoFormat vf = null;
 public BufferToImage btoi = null;

 public JPEGCapture() {
  this.initDevice();
 }

 public void initDevice() {
  String str1 = "vfw:Logitech USB Video Camera:0";
  String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
  di = CaptureDeviceManager.getDevice(str2);
  ml = di.getLocator();
  try
  {
   player = Manager.createRealizedPlayer(ml);
      player.start();
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }

 public static void playerClose() {
  player.close();
  player.deallocate();
 }

 public void Capture(String absPath) {
  FrameGrabbingControl fgc = (FrameGrabbingControl) player
    .getControl("javax.media.control.FrameGrabbingControl");
  buf = fgc.grabFrame();

  // Convert it to an image
  btoi = new BufferToImage((VideoFormat) buf.getFormat());
  img = btoi.createImage(buf);

  // save image
  saveJPG(img, absPath);
 }

 public static void saveJPG(Image img, String s) {
  BufferedImage bi = new BufferedImage(img.getWidth(null), img
    .getHeight(null), BufferedImage.TYPE_INT_RGB);
  Graphics2D g2 = bi.createGraphics();
  g2.drawImage(img, null, null);

  FileOutputStream out = null;
  try {
   out = new FileOutputStream(s);
  } catch (java.io.FileNotFoundException io) {
   System.out.println("File Not Found");
  }

  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
  param.setQuality(0.5f, false);
  encoder.setJPEGEncodeParam(param);

  try {
   encoder.encode(bi);
   out.close();
  } catch (java.io.IOException io) {
   System.out.println("IOException");
  }
 }
}
---------------------------------------------------------------------------------------------------

JPEGCapture cap = new JPEGCapture();
cap.Capture("C:\\test.jpg");

위와같이 Capture(String) 메소드를 이용하여 캡쳐파일 생성..

 

 

출처: [JMF] JPEG Capture by USB Cam

 



P 이경철님의 파란블로그에서 발행된 글입니다.

자바로 바탕화면 캡쳐하기(Capturing window scre...

채팅사이트 조이팅스토리을 운영하는 철이랍니당...

요즘.. 사이트를 어케하면 upgrade할까 고민고민중이랍니다...

솔직히 제가 직접 관리할 수 있는 사이트라면 이래도저래도 해보겠는데

이거 원... 절차도 절차고... 실망이 좀 크다...

뭐 대단한거라고... 걍.. 제가 관리하면 더 잘 하겠구만... 에혀~

솔직히 스팸메일이나 바이럴기법 광고... 이런거 필요가 없는데 말이쥐...

 

정말 잼있는 기능을 넣어서 순수하게 경쟁하고픈 마음인데 참~ 안도와주네...ㅠ.ㅜ

여튼 지금 생각하는 거 중에 하나가 화상채팅, 문자채팅, 메신저, 쪽지 기능등을

기존과는 색다르게 표현해 볼까 고민중인데, 특히 둘이서 각각의 로컬 컴퓨터에서

무언가 잼나는 게임을 할 수 있도록 구상중이다.. 아이디어가 번쩍!!! ㅋㅋㅋ

 

일단 이런거 저런 준비해야할 몇몇가지가 있어서 오늘 웹서핑하며 하나하나 자료를 모으는 중이다..

일단 캡쳐기능도 필요하고...

화상채팅기능도 필요하고......

원격제어도 필요하고................

 

껌이지 뭐~ ㅋㅋ

 

 

 

 

소스코드(Source Code)
------------------------------------------------------------------------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;

public class Main extends JPanel implements Runnable, ActionListener{
 
 JButton btn_capture;
 Image img = null;
 
 public Main()
 {
  this.btn_capture = new JButton("영상캡쳐");
  this.btn_capture.addActionListener(this);
  this.setLayout(new BorderLayout());
  this.add(this.btn_capture, BorderLayout.SOUTH);
 }
 
 public void actionPerformed(ActionEvent e)
 {
  String cmd = e.getActionCommand();
  if(cmd.equals("영상캡쳐"))
  {
   System.out.println("영상을 캡쳐합니다..");
   this.capture();
  }
 }
 
 private void drawImage(Image img, int x, int y)
 {
  Graphics g = this.getGraphics();
  g.drawImage(img,0,0,x,y,this);
  this.paint(g);
  this.repaint();
 }
 
 public void paint(Graphics g)
 {
  if(this.img != null)
   g.drawImage(this.img, 0, 0, this.img.getWidth(this), this.img.getHeight(this), this);
 }
 
 public void capture()
 {
  Robot robot;
  BufferedImage bufImage = null;
  try
  {
   robot = new Robot();
   Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
   
   bufImage = robot.createScreenCapture(area);
   
   //Graphics2D g2d = bufImage.createGraphics();
   int w = this.getWidth();
   int h = this.getHeight();
   
   this.img = bufImage.getScaledInstance(w, h-20, Image.SCALE_DEFAULT);
   //this.repaint();
   this.drawImage(img, w, h);
   //saveJPEGfile("c:\\cap.jpg", bufImage);
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }
 
 public static boolean saveJPEGfile(String filename, BufferedImage bi)
 {
  FileOutputStream out = null;
  try
    {
     out = new FileOutputStream ( filename );
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder ( out );
     JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam ( bi );
     param.setQuality ( 1.0f, false );
     encoder.setJPEGEncodeParam ( param );
 
     encoder.encode ( bi );
     out.close();
    }
    catch ( Exception ex )
    {
     System.out.println ("Error saving JPEG : " + ex.getMessage() );
     return false;
    }
  return true;
 }
 
 
 public void run()
 {
  while(true)
  {
   this.setBackground(Color.RED);
   try
   {
    Thread.sleep(1000);
   }catch(Exception e){}
   this.setBackground(Color.GREEN);
   
   try
   {
    Thread.sleep(1000);
   }catch(Exception e){}
  }
 
 }
 
 public static void createFrame()
 {
  JFrame frame = new JFrame("Jv");
  JFrame.setDefaultLookAndFeelDecorated(true);
  Container cont = frame.getContentPane();
  cont.setLayout(new BorderLayout());
  Main mm = new Main();
  //new Thread(mm).start();
  cont.add(mm, BorderLayout.CENTER);
 
  frame.setSize(400, 400);
  frame.setVisible(true);
 }
 
 public static void main(String...v)
 {
  //new Main();
  JFrame.setDefaultLookAndFeelDecorated(true);
  createFrame();
 }
}

 

춮처: 자바로 바탕화면 캡쳐하기(Capturing window screen by Java program)

 



P 이경철님의 파란블로그에서 발행된 글입니다.