2013/05/27

binwalk 진짜 편한듯 ㅋ

요즘 파일하나에 몇십메가에서 몇백메가짜리들이 많아서

import table이나

strings 기준으로 ref를 타다보면

갑자기 ref가 더이상 없고 끊어지는 경우가 있다 ㅋ

특히 strings로 역추적해가면 ㅋ

그래서 open으로 추적해보니 대부분이 해당 영역을 새로 파일을 만들거나 해당 영역만 읽어서 전송하는 기능이 있었다 ㅋ

진정 안티 디버깅 ㅋㅋㅋㅋ

그래서 files로 1바이트 단위로 다 체크하도록 하려고 했으나 사이즈가 너무 큰 관계로 너무 빡셈 ㅠㅠ

그래서 binwalk로 해봤더니

오우~ 그래도 꽤 신뢰성 높은 데이터를 뽑아주다 보니 ㅋ

binwalk로 리스트업 해서 해당 영역들만 따로 뽑아 놓은다음 7zip으로 전체 풀기 했더니

완전 잘 풀린다 ㅋㅋ

짱짱 맨~ㅋ

아래 코드는 binwalk로 나온 결과대로 파일을 짤라주는 스크립트 ㅋ

#!/usr/bin/python
import os
import sys
import commands

if len(sys.argv)>1:
    if os.path.isfile(sys.argv[1])==True:
        lv_rtn, lv_out = commands.getstatusoutput('binwalk '+sys.argv[1])
        #print len(lv_out.splitlines())
        ix=0
        lv_buf = open(sys.argv[1],'rb').read()
        lv_offset = lv_out.splitlines()
        while ix < len(lv_offset):
            if lv_offset[ix].find('\t')>0:
                lv_divide = lv_offset[ix].split('\t')
                if lv_divide[0].startswith('DECIMAL')==False:
                    #print lv_divide[0]
                    if int(lv_divide[0])>0:
                        open(str(int(lv_divide[0])),'wb').write(lv_buf[int(lv_divide[0]):])
                # end if
            # end if
            ix=ix+1
        # end while
    # end if
# end if


2013/05/22

android wifi infomation path

안드로이드(갤럭시s, skt용) 기준으로

아래의 위치에 wifi정보가 있다는걸 알게 되었다 ㅋ

통신사마다 각 통신사의 wifi에 붙는 정보가 있길래 그걸 보고 싶었는데

여기에 있을줄은 ㅋ
( /data/wifi/bcm_supp.conf )

T wifi zone_secure 정보를 kt 폰에 넣으면 어떻게 되려나?ㅋㅋ



2013/05/14

역시 for문은 함부로 쓰는게 아니군 ㅋ

python에서 for in range()를 자주 쓰는데

가끔 보면 이상하다 싶을 정도로 메모리를 많이 먹는다 ㅋ

이상하다 싶어서 실험을 해보았다 ㅋ

역시나 예상대로 for in range()를 쓰면 미리 돌리는데 필요한 메모리를 할당해놓고 시작하는지

엄청 메모리를 많이 먹는다 ㅎㄸ
(cpu, memory 거의 100프로 먹더니 그냥 killed 당해 버렸다 ㅋ 그것도 커널에 의해서 ㅋ)

역시 while 문을 써야 하는군 ㅋ


아래는 실험에 사용한 코드

root@whoami:~# cat while.py
#!/usr/bin/python
ix=0
while ix<333333333:
    print ix
    ix=ix+1
#end while
root@whoami:~# cat for.py
#!/usr/bin/python

for ix in range(0,333333333):
    print ix
#end for
root@whoami:~#


아래는 실험 결과에 따른 화면



HTTP 나 HTTPS 퍼징할때 써볼려고 만든거 ㅋ


잘 작동 여부는 각자 알아서 테스트를 ㅋ


#!/usr/bin/python
import sys
import socket
import ssl
import datetime
import time

lv_pre_method='GET'
lv_pre_url='/'
lv_pre_ver='HTTP/1.1'
lv_pre_host='Host: 192.168.0.1'
lv_pre_user='User-Agent: '
lv_pre_accept='Accept: '
lv_pre_lang='Accept-Language: '
lv_pre_enc='Accept-Encoding: '
lv_pre_dnt='DNT: '
lv_pre_ref='Referer: '
lv_pre_cookie='Cookie: '
lv_pre_con='Connection: '

lv_full_method='GET'
lv_full_url='/'
lv_full_ver='HTTP/1.1'
lv_full_host='Host: 192.168.0.1'
lv_full_user='User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0'
lv_full_accept='Accept: */*'
lv_full_lang='Accept-Language: en-US,en;q=0.5'
lv_full_enc='Accept-Encoding: gzip, deflate'
lv_full_dnt='DNT: 1'
lv_full_ref='Referer: http://192.168.0.1/'
lv_full_cookie='Cookie: '
lv_full_con='Connection: keep-alive'

lv_msg_send=''
lv_msg_recv=''

lv_send_pre_method = lv_pre_method+'%s '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_url = lv_pre_method+' '+lv_pre_url+'%s '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_ver = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'%s\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_host = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'%s\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_user = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'%s\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_accept = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'%s\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_lang = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'%s\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_enc = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'%s\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_dnt = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'%s\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_ref = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'%s\n'+lv_pre_cookie+'\n'+lv_pre_con+'\n\n'
lv_send_pre_cookie = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'%s\n'+lv_pre_con+'\n\n'
lv_send_pre_con = lv_pre_method+' '+lv_pre_url+' '+lv_pre_ver+'\n'+lv_pre_host+'\n'+lv_pre_user+'\n'+lv_pre_accept+'\n'+lv_pre_lang+'\n'+lv_pre_enc+'\n'+lv_pre_dnt+'\n'+lv_pre_ref+'\n'+lv_pre_cookie+'\n'+lv_pre_con+'%s\n\n'

lv_send_full_method = lv_full_method+'%s '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_url = lv_full_method+' '+lv_full_url+'%s '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_ver = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'%s\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_host = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'%s\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_user = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'%s\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_accept = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'%s\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_lang = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'%s\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_enc = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'%s\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_dnt = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'%s\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_ref = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'%s\n'+lv_full_cookie+'\n'+lv_full_con+'\n\n'
lv_send_full_cookie = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'%s\n'+lv_full_con+'\n\n'
lv_send_full_con = lv_full_method+' '+lv_full_url+' '+lv_full_ver+'\n'+lv_full_host+'\n'+lv_full_user+'\n'+lv_full_accept+'\n'+lv_full_lang+'\n'+lv_full_enc+'\n'+lv_full_dnt+'\n'+lv_full_ref+'\n'+lv_full_cookie+'\n'+lv_full_con+'%s\n\n'

lv_send_array=[lv_send_pre_method, lv_send_pre_url, lv_send_pre_ver, lv_send_pre_host, lv_send_pre_user, lv_send_pre_accept, lv_send_pre_lang, lv_send_pre_enc, lv_send_pre_dnt, lv_send_pre_ref, lv_send_pre_cookie, lv_send_pre_con, lv_send_full_method, lv_send_full_url, lv_send_full_ver, lv_send_full_host, lv_send_full_user, lv_send_full_accept, lv_send_full_lang, lv_send_full_enc, lv_send_full_dnt, lv_send_full_ref, lv_send_full_cookie, lv_send_full_con]

# print lv_msg_recv#len(lv_msg_recv)
jx=0
while jx<len(lv_send_array):
    ix=0
    while ix<100000000:
        try:
            lv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            lv_msg_send = lv_send_array[jx]%('a'*ix)
            lv_sock.connect(('192.168.0.1',443))
            lv_sock_ssl = ssl.wrap_socket(lv_sock)
            lv_sock_ssl.send(lv_msg_send)
            lv_msg_recv = lv_sock_ssl.recv()
            open('log_'+str(jx)+'.txt','a').write('---------- '+str(ix)+'('+str(len(lv_msg_recv))+') : '+str(datetime.datetime.now())+' ----------\n')
            lv_sock_ssl.close()
            lv_sock.close()
        except:
            open('dis_'+str(jx)+'.txt','a').write('---------- '+str(ix)+'('+str(len(lv_msg_recv))+') : '+str(datetime.datetime.now())+' ----------\n')
            os.system('ifconfig eth0 down')
            time.sleep(60)
            os.system('ifconfig eth0 up')
        ix = ix+1
    #end while
    jx = jx+1
#end while

한번에 HTTP Request 를 할일이 있을때 것두 많이 ㅋ

한번에 세션을 무진장 많이 만들어 볼일이 있었는데 ㅋ

쓰레드로 한번 짜봤음 ㅋ

저기서 close 안하고 recv도 계속 대기 타게 만들면 dos 툴이 되려나?ㅋㅋㅋ



#!/usr/bin/python
#ref : http://bloodguy.tistory.com/365
import thread
import time
import socket
import ssl
import sys
import os

v_lock = thread.allocate_lock()
v_max_thread = 1111

def F_TCP_SEND(lv_addr, lv_port, lv_msg_send):
    lv_msg_recv=''
    try:
        lv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        lv_sock.connect((lv_addr,lv_port))
        lv_sock.send(lv_msg_send)
        lv_msg_recv = lv_sock.recv(0)
        lv_sock.close()
    except:
        print '\n[F_TCP_SEND]'+str(sys.exc_info())
    return lv_msg_recv
#def

def F_TCP_SSL_SEND(lv_addr, lv_port, lv_msg_send):
    lv_msg_recv=''
    try:
        lv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        lv_sock.connect((lv_addr,lv_port))
        lv_sock_ssl = ssl.wrap_socket(lv_sock)
        lv_sock_ssl.send(lv_msg_send)
        lv_msg_recv = lv_sock_ssl.recv()
        lv_sock_ssl.close()
        lv_sock.close()
    except:
        print '\n[F_TCP_SSL_SEND]'+str(sys.exc_info())
    return lv_msg_recv
#def

def F_THREAD_FLAG():
    v_lock.acquire()
    global v_max_thread
    v_max_thread=v_max_thread-1
    v_lock.release()
#def

def F_TCP_ONLY(lv_idx):
    lv_msg_send=('a'*1400)
    F_TCP_SEND('192.168.0.1',80, lv_msg_send)
    F_THREAD_FLAG()
#def

def F_TCP_HTTP(lv_idx):
    lv_msg_send = 'GET / HTTP/1.1\nHost: 192.168.0.1\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0\nAccept: */*\nAccept-Language: en-US,en;q=0.5\nAccept-Encoding: gzip, deflate\nDNT: 1\nReferer: http://192.168.0.1/\nCookie: %s\nConnection: keep-alive\n\n'%('a'*1134)
    F_TCP_SEND('192.168.0.1',80, lv_msg_send)
    F_THREAD_FLAG()
#def

def F_TCP_SSL(lv_idx):
    lv_msg_send=('a'*700)
    F_TCP_SSL_SEND('192.168.0.1',443, lv_msg_send)
    F_THREAD_FLAG()
#def

def F_TCP_HTTPS(lv_idx):
    lv_msg_send = 'GET / HTTP/1.1\nHost: 192.168.0.1\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0\nAccept: */*\nAccept-Language: en-US,en;q=0.5\nAccept-Encoding: gzip, deflate\nDNT: 1\nReferer: http://192.168.0.1/\nCookie: %s\nConnection: keep-alive\n\n'%('a'*500)
    F_TCP_SSL_SEND('192.168.0.1',443, lv_msg_send)
    F_THREAD_FLAG()
#def
# os.system('ulimit -n 102400')
print 'start making thread'
ix=0
try:
    for ix in range(v_max_thread):
        #thread.start_new_thread(F_TCP_ONLY,(ix,))
        #thread.start_new_thread(F_TCP_HTTP,(ix,))
        #thread.start_new_thread(F_TCP_SSL_SEND,(ix,))
        thread.start_new_thread(F_TCP_HTTPS,(ix,))
        #if ix%10000==0:
            #time.sleep(1)
        #print ix
    #for
except:
    v_max_thread = ix
v_max_thread = ix
print 'All done, making thread(%d)'%v_max_thread
while v_max_thread:
    time.sleep(0.1)
#while
print 'All done, process exit'

우분투에서 jnlp 파일 실행하기

가끔가다가 jnlp 파일을 실행할 경우가 생긴다

windows에서는 javaw였나?  그걸로 실행하면 되었던걸로 기억을 하는데

우분투에서는 javaw가 없다 ㅠㅠ

sudo apt-get install openjdk-jdk7 이었던가? 머시깽이로 설치했는데도 없다.. ㅠㅠ

그래서

sudo apt-cache search javaw 로 검색했더니

icedtea-netx 이게 나온다 ㅋㅋㅋ

설명을 보니 jnlp 실행을 위한 패키지다 ㅋ

나이스 ㅋㅋㅋ

sudo apt-get install icedtea-netx

로 설치하고

sudo javaws ./<파일명>.jnlp

으로 실행하면 끝~ㅋ

우분투에서 serial(com interface) 연결하기

sudo apt-get install minicom

을 통하여 serial 연결을 위한 패키지 설치

dmesg | grep tty

를 실행하면 연결된 터미널 리스트가 나오는데

일반적으로 최근 많이 사용하는 usb to serial의 경우 ttyUSB 로 잡힘

아래와 같이 쉘로 만들어서 사용하면 됨
(물론 그냥 minicom을 실행해서 설정하여도 됨)

#!/bin/sh
sudo minicom -b 9600 -D /dev/ttyUSB0

-b는 전송율이고
-D는 장치 경로를 지정함

우분투에서 TFTP 서버 활용하기

sudo apt-get install tftp-hpa
sudo apt-get install tftpd-hpa

tftp 데몬 및 클라이언트 설치

그냥 tftpd 도 있지만 위의 패키지가 xinet 의존성을 찾지 않는게 더 깔끔함

설치 후 rc.local에 아래의 한줄 넣어주면 끝

/usr/sbin/in.tftpd -l -c -s /tftpboot/

/tftpboot/는 없을 경우 만들어 주면 됨 tftp가 root 폴더로 볼 경로임

-l 은 listen 이라고 하고
-c는 클라이언트가 없는 파일 생성할수 있게 create 옵션을 주는것이라고 함
-s 는 서버의 루트 폴더를 지정하는 옵션이라고 함.

2013/05/13

우분투에서 아이패드용으로 동영상 인코딩 하는 방법

 아이패드에 동영상을 넣고 싶은데 그걸 메인 PC인 우분투에서 인코딩하려니

어떻게 해야 할지 몰라서 찾다 보니 딱 좋은 방법을 찾았다 ㅋ

콘솔로 가능해서 스크립트 돌려 놓고 퇴근하면 된다 ㅋ

sudo apt-get install libavcodec-extra-53 libav-tools

로 필요한것들 설치하고

avconv -i <pathofvideo>.mkv -vcodec libx264 -acodec libvo_aacenc -r 30000/1001 <outputfilename>.mp4

위와 같이 구동하면 된다 ㅋㅋㅋ




참조
http://mysimplewayoftech.blogspot.kr/2012/06/codecs.html

2013/05/09

Python에서 HTTPS 사용하기(SSL 통신 쪽에 모두 사용 가능할듯)

아래와 같이 사용하여 ssl 접근이 가능하며 python 코드로 퍼징하는거 만들때도 유용함


lv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
lv_sock.connect(('192.168.248.133',443))
lv_sock_ssl = ssl.wrap_socket(lv_sock)
lv_sock_ssl.send(lv_msg_send)
lv_msg_recv = lv_sock_ssl.recv()
lv_sock_ssl.close()
lv_sock.close()