Skip to content

Instantly share code, notes, and snippets.

@shiv3
Created December 12, 2016 18:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shiv3/16845b27e49c6833e443a3baaebfa3d4 to your computer and use it in GitHub Desktop.
Save shiv3/16845b27e49c6833e443a3baaebfa3d4 to your computer and use it in GitHub Desktop.
SECCON 2016 crypt 100 Vigenere cipher
import itertools
ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ{}'
def encrypt(key, plaintext):
pairs = zip(plaintext, cycle(key))
result = ''
for pair in pairs:
total = reduce(lambda x, y: ALPHA.index(x) + ALPHA.index(y), pair)
print pairs,ALPHA[total % 28 ]
result += ALPHA[total % 28]
return result.lower()
def decrypt(key, ciphertext):
pairs = zip(ciphertext, itertools.cycle(key))
result = ''
for pair in pairs:
total = reduce(lambda x, y: ALPHA.index(x) - ALPHA.index(y), pair)
result += ALPHA[total % 28]
return result
def show_result(plaintext, key):
encrypted = encrypt(key, plaintext)
decrypted = decrypt(key, encrypted)
print 'Key: %s' % key
print 'Plaintext: %s' % plaintext
print 'Encrytped: %s' % encrypted
print 'Decrytped: %s' % decrypted
import hashlib
import sys
seq = tuple(ALPHA)
comb = list(itertools.permutations(seq,4))
for c in comb:
c1 = ''.join(c)
key = "VIGENERE" + c1
s = decrypt( key ,"LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ")
md5 = hashlib.md5( s ).hexdigest()
print key ,s,md5
if md5 == "f528a6ab914c1ecf856a1d93103948fe" :
print s
sys.exit()
# VIGENER?????VIGENER?????VIGENER?????VIGENER
# LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ
# SECCON{ BCDEDEF KLMNOPQ VWXYYZ}
# VIGENER?????VIGENER?????VIGENER?????VIGENER
# SECCON{A BCDEDEFG KLMNOPQR VWXYYZ}
# VIGENERE????VIGENERE????VIGENERE????VIGENER
# ```
# " | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z { }
# - + - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z { }
# B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z { } A
# C | C D E F G H I J K L M N O P Q R S T U V W X Y Z { } A B
# D | D E F G H I J K L M N O P Q R S T U V W X Y Z { } A B C
# E | E F G H I J K L M N O P Q R S T U V W X Y Z { } A B C D
# F | F G H I J K L M N O P Q R S T U V W X Y Z { } A B C D E
# G | G H I J K L M N O P Q R S T U V W X Y Z { } A B C D E F
# H | H I J K L M N O P Q R S T U V W X Y Z { } A B C D E F G
# I | I J K L M N O P Q R S T U V W X Y Z { } A B C D E F G H
# J | J K L M N O P Q R S T U V W X Y Z { } A B C D E F G H I
# K | K L M N O P Q R S T U V W X Y Z { } A B C D E F G H I J
# L | L M N O P Q R S T U V W X Y Z { } A B C D E F G H I J K
# M | M N O P Q R S T U V W X Y Z { } A B C D E F G H I J K L
# N | N O P Q R S T U V W X Y Z { } A B C D E F G H I J K L M
# O | O P Q R S T U V W X Y Z { } A B C D E F G H I J K L M N
# P | P Q R S T U V W X Y Z { } A B C D E F G H I J K L M N O
# Q | Q R S T U V W X Y Z { } A B C D E F G H I J K L M N O P
# R | R S T U V W X Y Z { } A B C D E F G H I J K L M N O P Q
# S | S T U V W X Y Z { } A B C D E F G H I J K L M N O P Q R
# T | T U V W X Y Z { } A B C D E F G H I J K L M N O P Q R S
# U | U V W X Y Z { } A B C D E F G H I J K L M N O P Q R S T
# V | V W X Y Z { } A B C D E F G H I J K L M N O P Q R S T U
# W | W X Y Z { } A B C D E F G H I J K L M N O P Q R S T U V
# X | X Y Z { } A B C D E F G H I J K L M N O P Q R S T U V W
# Y | Y Z { } A B C D E F G H I J K L M N O P Q R S T U V W X
# Z | Z { } A B C D E F G H I J K L M N O P Q R S T U V W X Y
# { | { } A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
# } | } A B C D E F G H I J K L M N O P Q R S T U V W X Y Z {
# SECCON{?????PGBAZ
# VIGENER?????VIGENER?????VIGENER?????VIGENER
# LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment