반응형

1. 문자열 내 한 문자씩 대문자로 변환

1
2
for i in range(0,len(string)):
    print(string[0:i]+string[i:i+1].upper()+string[i+1:len(string)])
cs



2. 해당 문자열로 가능한 모든 대소문자 배열 생성

1
2
3
for i in range(0,len(string)):
    for j in range(i,len(string)):
        print(string[0:i].upper()+string[i:j]+string[j:j+1].upper()+string[j+1:len(string)])
cs



반응형
블로그 이미지

rootable

,
반응형
아래는 8자리 숫자형 리스트 파일를 생성하는 파이썬 코드이다.

길이가 길어지던지, 문자열이 포함된 리스트를 생성할 때도 코드를 조금만 변형하면 생성할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
length=8
character="0123456789"
 
temp_list = [0 for x in range(0,length)]
crack_list=[]
 
text = open('list.txt','w')
 
for i in range(0,pow(10,8)):
    stringGen="".join([character[x] for x in temp_list])
    text.write(stringGen+"\n")
 
    temp_list[-1]+=1
 
    for x in range(length-1,0,-1):
        if temp_list[x] == len(character):
            temp_list[x-1]+=1
            temp_list[x]=0
 
 
text.close()
cs



반응형
블로그 이미지

rootable

,
반응형

※ Frida 설치

 pip install frida


※ 버전 지정하여 Frida 설치

 pip install frida==12.2.27



※ 설치 시 에러 해결

 1) Could not find prebuilt Frida extension 에러 발생

 - frida의 버전이 높아 설치하는 OS의 비트에 해당하는 prebuilt frida extension이 없을 가능성이 크다.

 - 따라서 상단의 버전을 지정하여 frida를 설치하는 것을 이용하여 낮은 버전의 frida를 설치하면 해결 가능


2) pip로는 설치가 되었다하는데 실행이 되지 않을 때

 - 라이브러리 형식으로는 frida가 깔려있어 pip는 frida가 설치되었다고 출력하지만 cmd에서 실행이 되지 않는다.

 - 이는 Scripts 폴더 내에 frida.exe가 존재하지 않아서 인데 이는 frida-tools를 설치해주면 해결된다.

 pip install frida-tools


3) Failed to spawn: unable to launch iOS app: The operation couldn’t be completed.

 - 이는 아마 -f 옵션을 사용했을 때 발생했을 것이다. 정확한 정보는 아니지만 armv7 device에서는 앱을 spawning 할 수 없다고 한다. 따라서 최신의 Iphone이 필요할 것으로 보인다. 

 참고) https://github.com/frida/frida/issues/724


4) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 32: ordinal not in range(128)

 - 이는 해결방안이 여러가지 있겠지만 간단하게 해결할 수 있는 방법은 3.x 버전의 Python을 이용하는 것이다.

반응형
블로그 이미지

rootable

,
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# -*- coding: cp949 -*-
import optparse
from socket import *
from threading import *
 
screenLock = Semaphore(value=1)
 
def connScan(tgtHost, tgtPort):
    try:
        connSkt = socket(AF_INET, SOCK_STREAM)
        connSkt.connect(tgtHost, tgtPort)
        connSkt.send('ViolentPython\r\n')
        results = connSkt.recv(100)
        screenLock.acquire()        # 출력하기 전에 세마포어 습득
        print '[+]%d/tcp open'% tgtPort
        print '[+] ' +str(results)
    except:
        screenLock.acquire()        # 출력하기 전에 세마포어 습득
        print '[-]%d/tcp closed'% tgtPort
    finally:
        screenLock.release()        # 쓰레드가 끝날 때 놓아줌
        connSkt.close()
        
def portScan(tgtHost, tgtPorts):
    try:
        tgtIP = gethostbyname(tgtHost)
    except:
        print "[-] Cannot resolve '%s': Unknown host" %tgtHost
        return
    try:
        tgtName = gethostbyaddr(tgtIP)
        print '\n[+] Scan Results for: ' + tgtName[0]
    except:
        print '\n[+] Scan Results for: ' + tgtIP
    setdefaulttimeout(1)
    for tgtPort in tgtPorts:
        t = Thread(target=connScan, args=(tgtHost, int(tgtPort)))
        t.start()
        
def main():
    parser = optparse.OptionParser('usage %prog -H <target host> -p <target port>')
    parser.add_option('-H', dest='tgtHost', type='string', help='specify target host')
    parser.add_option('-p', dest='tgtPort', type='int', help='specify target port[s] separated by comma')
    (options, args) = parser.parse_args()
    tgtHost = options.tgtHost
    tgtPort = str(options.tgtPort).split(', ')
    if (tgtHost == None) | (tgtPort == None):
        print '[-] You must specify a target host and port[s].'
        exit(0)
    portScan(tgtHost, tgtPorts)
 
if __name__ == '__main__':
    main()
 
cs

출처 : Violent Python ( 해커의 언어, 치명적 파이썬)

반응형
블로그 이미지

rootable

,
반응형

해결한 결과 Python 2.x 버전과 Python 3.x 버전을 둘다 설치했던 적이 있어서 꼬인 것이였다.


해결방법은 레지스트리에서 설정을 바꿔주면 된다.


1. regedit을 실행시킨다.

 - 시작 > 실행 > regedit > 확인



2. [Ctrl + F] 를 눌러 찾기에서 pythonw 를 찾아 원하는 버전으로 모두 되어있는지 확인한다.

 - 만약 Python 2.x 버전을 사용할 것인데 3.x 버전으로 설정되어 있다면 2.x 버전의 폴더로 설정해준다.

 - (기본값)을 더블클릭해주면 아래와 같이 편집창이 뜬다. 형광으로 칠한 부분을 변경시켜주면 된다. (3.x 버전이라면 아래 부분을 3.x 버전의 설치폴더로)




반응형

'Develope > Python' 카테고리의 다른 글

Python code to create Numeric list  (0) 2019.12.26
[Python] frida 설치 및 에러 해결  (0) 2019.01.03
[Python] Port Scanner  (0) 2017.01.22
[Python] 간단한 파이썬 취약점 스캐닝 스크립트  (0) 2016.10.29
[Python] 내장함수  (0) 2014.10.28
블로그 이미지

rootable

,
반응형


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import socket
import os
import sys
 
 
def retBanner(ip, port):
    try:
        socket.setdefaulttimeout(2)
        s = socket.socket()
        s.connect((ip, port))
        banner = s.recv(1024)
        return banner
    except:
        return
 
 
def checkVulns(banner, filename): 
    f = open(filename, 'r')
    for line in f.readlines():
        if line.strip('\n'in banner:
            print '[+] Server is vulnerable: ' +\
                banner.strip('\n')
 
 
def main():
    if len(sys.argv) == 2:
        filename = sys.argv[1]
        if not os.path.isfile(filename):
            print '[-] ' + filename +\
                ' does not exist.'
            exit(0)
 
        if not os.access(filename, os.R_OK):
            print '[-] ' + filename +\
                ' access denied.'
            exit(0)
    else:   
        print '[-] Usage: ' + str(sys.argv[0]) +\
            ' <vuln filename>'
        exit(0)
 
    portList = [21,22,25,80,110,443]
    for x in range(147150):
        ip = '192.168.95.' + str(x)
        for port in portList:
            banner = retBanner(ip, port)
            if banner:
                print '[+] ' + ip + ' : ' + banner
                checkVulns(banner, filename)
 
 
if __name__ == '__main__':
    main()
cs


출처 - 해커의 언어, 치명적 파이썬

반응형

'Develope > Python' 카테고리의 다른 글

Python code to create Numeric list  (0) 2019.12.26
[Python] frida 설치 및 에러 해결  (0) 2019.01.03
[Python] Port Scanner  (0) 2017.01.22
[Python] Edit with IDLE가 안될 때  (2) 2017.01.21
[Python] 내장함수  (0) 2014.10.28
블로그 이미지

rootable

,
반응형

** 시퀀스 자료형 = 문자열, 리스트., 터플


abs(x)         = 절대값을 돌려주는 함수

apply(function, (args))         = 함수이름과 인수를 받아 간접적으로 함수 실행

chr(i)                 = 아스키코드 값을 입력받아 해당 문자 출력

cmp(x,y)         = x와 y 비교 (x>y이면 1 / x==y이면 0 / x<y이면 -1)

dir(객체)         = 객체가 가지고 있는 함수들(메소드)를 보여줌

divmod(a,b)         = a/b와 a%b를 터플의 형태로 리턴

enumerate(s)         = 시퀀스자료형을 입력받아 순서값(인덱스)과 실제값을 반환

eval(expression)         = 실행가능한 문자열을 입력받아 실행한 결과값을 반환

execfile(file)         = 파일 이름을 입력받아 파일을 실행시키는 명령

filter(function, list)         = 리스트의 값이 하나씩 함수에 인수로 전달되어 참을 반환하는 값만 모아 리스트의 형태로 리턴

hex(x)         = 정수값을 입력받아 hex값으로 반환

id(object)         = 객체의 고유값(reference)를 반환

input([prompt])         = 사용자의 입력을 받는 함수 (입력 인수로 문자열을 주면 그 문자열은 프롬프트가 된다)

int(x)                 = 스트링 형태의 숫자나 소숫점 숫자 등을 정수의 형태로 반환

int(x, radix)                 = x라는 문자열을 radix(진수)형태로 계산한 값을 리턴

isinstance(object,class) = 인스턴스가 입력받은 클래스의 인스턴스인지 판단하여 참이면 True, 거짓이면 False 반환

lambda         = 함수를 생성할 때 사용되는 예약어로 def와 동일하나 간결하게 혹은 def를 쓸 수 없는 곳에서 사용

len(s)                 = 인수로 시퀀스 자료형을 입력받아 요소의 개수를 리턴

list(s)                 = 인수로 시퀀스 자료형을 입력받아 그 요소를 같은 순서의 리스트로 만들어 리턴

long(x)         = 숫자형태의 문자열이나 숫자를 인수로 받아 큰 정수형으로 리턴

map                 = 함수와 시퀀스 자료형을 입력 받아 시퀀스 자료형의 각 요소들을 함수의 입력으로 하여 나온 출력값을 리스트 형태로 리턴

max(s)         = 입력받은 시퀀스 자료형 중 최댓값을 돌려주는 함수

min(s)         = 입력받은 시퀀스 자료형 중 최솟값을 돌려주는 함수

oct(x)         = 정수 형태의 숫자를 8진수 문자열로 리턴

open(filename, [mode]) = 파일이름과 읽기 방법을 입력받아 파일 객체를 리턴 / mode 생략시 읽기 전용 모드로 만듦

ord(c)         = 문자의 아스키 값 리턴 ( <-> chr(i) )

pow(x,y)         = x의 y 제곱한 결과값을 리턴


반응형
블로그 이미지

rootable

,