Skip to content

Instantly share code, notes, and snippets.

@t0mm4rx
Created June 4, 2019 08:30
Show Gist options
  • Save t0mm4rx/bf5b0950e6223151d39f0c35f5b9146f to your computer and use it in GitHub Desktop.
Save t0mm4rx/bf5b0950e6223151d39f0c35f5b9146f to your computer and use it in GitHub Desktop.
Défi 6 ribt.fr
"""
Petite explication :
je sais que tes messages sont des Lorem ipsum, donc du latin.
Ma stratégie est de me constituer un dictionnaire de mots latins, puis de déchiffrer le texte
avec chacun des mots.
Pour savoir si le texte a correctement été déchiffré, je caclcul un score qui correspond au
nombre de mots qui sont dans mon dictionnaire. Je récupère le texte avec le plus grand score.
Dernière étape, je met les majuscules la ou elles sont dans le texte d'origine.
"""
import requests
import itertools
URL1 = 'https://ribt.fr/defis/6/'
URL2 = 'https://ribt.fr/defis/6/verif.php'
request = requests.get(URL1)
cookie = request.headers['Set-Cookie'].split(';')[0].split("=")[1]
print("Cookie:", cookie)
full_page = request.text
phrase = full_page.split("<p>")[3].split('</p>')[0]
# Le dictionnaire
latin_words = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent pellentesque velit id feugiat ornare. Nunc vel posuere lorem. Donec dictum neque et lacinia commodo. Vestibulum feugiat mollis ornare. Cras aliquam purus nec porttitor lacinia. Pellentesque volutpat sollicitudin nisi. Nullam tempus augue sit amet erat rutrum sodales in et dui. Curabitur quis ex eu est vulputate consectetur ac vitae leo. Donec interdum sed ligula ac posuere. Donec eget purus quis ex fringilla varius a ac nulla. Donec molestie a quam ut vulputate. Sed metus orci, dapibus eget magna nec, malesuada aliquam nisl. Nam leo quam, aliquet sit amet viverra nec, malesuada vel lectus. Ut vitae posuere neque. Maecenas sed rhoncus libero. Maecenas finibus nisi ut euismod bibendum. Donec scelerisque sapien mi, et posuere nunc rutrum at. Maecenas nulla arcu, ultrices in enim a, pulvinar placerat arcu. Vestibulum ex lectus, rutrum sit amet metus a, ultricies gravida nisl. Vivamus nunc nulla, accumsan non felis a, suscipit commodo risus. Phasellus maximus, purus ut volutpat interdum, mauris arcu fringilla magna, sed hendrerit lorem odio in purus. Mauris gravida eget sapien consectetur pretium. Integer scelerisque purus a laoreet sagittis. Praesent at accumsan urna. Nam vitae condimentum ex. Pellentesque sollicitudin mauris est, a pulvinar purus laoreet ut. Proin venenatis sem sed velit accumsan pellentesque. In hac habitasse platea dictumst. Donec faucibus ut enim et vehicula. Donec faucibus quam sed sem tristique feugiat. Sed semper condimentum nibh vel convallis. Nunc pellentesque mi eget leo elementum, sit amet rhoncus nisl accumsan. Maecenas tempor nisi blandit, imperdiet tortor vestibulum, semper est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer feugiat aliquam venenatis. Ut ex lacus, placerat vitae quam congue, tincidunt tincidunt metus. Sed pulvinar felis et odio interdum, non varius lorem efficitur. Nam vehicula euismod interdum. Cras scelerisque diam vitae augue eleifend scelerisque. Ut lacinia lectus ac vulputate accumsan. Nulla facilisi. Vivamus pulvinar leo a est tincidunt sodales. Donec finibus a velit ac auctor. Sed faucibus felis sed lorem fringilla, quis posuere nunc sollicitudin. Nunc pharetra lorem ut elit malesuada pellentesque. Nullam nec ex quis magna tristique tempus. Sed placerat ante feugiat vehicula viverra. Aliquam scelerisque ipsum quis nisl placerat gravida. Aliquam pellentesque dolor nulla, at iaculis nunc vestibulum eget. Mauris id massa tincidunt, faucibus felis ut, sagittis sem. Phasellus tincidunt tincidunt ex, id faucibus ante finibus non. Mauris ut nunc ligula. Vivamus hendrerit, enim ultricies eleifend finibus, leo urna scelerisque leo, at ornare velit odio id ipsum. Cras eu congue dui. Fusce malesuada commodo est eget pretium. Ut nisl erat, ultricies eu diam vitae, condimentum condimentum ipsum. Donec eget pellentesque sem. Mauris vitae feugiat urna. Sed quis aliquet mauris, sit amet laoreet sem. Proin molestie, est sed tristique placerat, mi enim pellentesque purus, non eleifend lectus lectus sit amet velit. Nam pulvinar eros in pellentesque convallis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum sagittis, tellus id efficitur hendrerit, erat lectus rutrum eros, eu venenatis urna nisi id orci. Donec risus erat, suscipit in felis at, maximus maximus odio. Nulla gravida mauris a eros rhoncus, vel rutrum lectus maximus. Nam convallis molestie nibh, non volutpat est placerat a. Donec lacinia eu massa at tincidunt. Cras in arcu quis nisi pulvinar venenatis sed id ligula. Donec pellentesque pulvinar sagittis. Sed sollicitudin est quam, nec molestie lacus egestas luctus. Morbi vestibulum et nisi id faucibus. Integer tincidunt massa consequat dolor malesuada ullamcorper. Etiam accumsan lacinia metus, at tempus nibh mattis sit amet. Morbi gravida, eros dictum laoreet tempor, dolor eros tempor est, sit amet porttitor est justo nec libero. Vestibulum interdum turpis nulla, sed facilisis diam consequat ut. Sed sed sapien cursus, lobortis enim sed, aliquet magna. Maecenas egestas vel urna eu finibus. Curabitur rutrum est quam, id semper libero euismod nec. Maecenas rhoncus, massa sed pharetra ultrices, ipsum augue accumsan nibh, ac ultricies mi sem vel arcu. Sed eget venenatis lectus, vitae dictum est. Nullam sit amet luctus mi. Phasellus in iaculis urna, ut tincidunt eros. Aliquam erat volutpat. Etiam in dui orci. Aliquam nisl risus, tempor non magna ac, euismod malesuada ex. Donec auctor mi ac augue efficitur congue. Morbi cursus arcu ex, ac vehicula sapien pellentesque nec. Nam odio sem, bibendum lobortis scelerisque ac, imperdiet nec sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque enim nibh, semper pretium scelerisque at, iaculis vel lorem. Donec gravida odio vitae sapien fermentum gravida. Curabitur placerat fringilla ante vitae vulputate. Nam pellentesque consequat nisl sed euismod. Proin molestie et nisi sit amet auctor. Cras interdum dolor eget magna laoreet ullamcorper. Aliquam quis ultrices ex. Donec varius, orci eget consequat hendrerit, turpis justo mattis tortor, quis dignissim dui dui et libero. Integer scelerisque ligula in lacinia congue. Nullam ornare tortor id leo aliquam vulputate vel et lorem. Aliquam eleifend lacus sem, sit amet pellentesque sapien dignissim quis. Nulla rutrum commodo eleifend. Vestibulum aliquam porttitor dolor sit amet tristique. Vestibulum vulputate sapien quis tempus sodales. Vestibulum vitae lacus neque. Donec efficitur ornare enim, at viverra mi efficitur eu. In efficitur lectus ac risus gravida varius. Ut quis varius sem. Sed eros risus, viverra eget vehicula ut, sollicitudin aliquam ipsum. Nulla eu dolor cursus, imperdiet nisi nec, pretium lacus. Pellentesque a elit vehicula enim mollis auctor. Curabitur ultrices bibendum metus, et placerat erat elementum id. Curabitur vitae eros volutpat, porttitor mi nec, fermentum ex. Vivamus magna lectus, molestie sit amet ipsum vel, tempor pellentesque eros. Proin a nisl porttitor, aliquam erat eu, sagittis sem. Proin eu erat faucibus, efficitur risus et, tincidunt elit. In aliquet libero non velit dignissim interdum. In posuere in est sit amet facilisis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam egestas vulputate sapien vel maximus. In ac molestie neque, eu aliquam dolor. Mauris odio erat, elementum ac est sed, porta accumsan massa. Nullam dictum tortor ullamcorper tortor porttitor, quis euismod dui rutrum. Nulla eu dolor finibus, sagittis sapien ac, ultrices sem. Mauris eleifend velit eget metus gravida, sit amet ullamcorper ante facilisis. Mauris convallis mollis.".lower().replace('.', '').replace(',', '').split(' ')
latin_words = list(dict.fromkeys(latin_words))
# Les fonctions de chiffrements / déchiffrement
alph = ['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']
def chiffr(a, b):
res = ""
a = a.lower()
b = b.lower()
index = 0
for i in range(len(a)):
if (a[i] in alph):
offset = alph.index(a[i])
letter_i = alph.index(b[index % len(b)])
res += alph[(letter_i - offset) % len(alph)]
index += 1
else:
res += a[i]
return res
def dechiffr(a, b):
res = ""
a = a.lower()
b = b.lower()
index = 0
for i in range(len(a)):
if (a[i] in alph):
offset = alph.index(a[i])
letter_i = alph.index(b[index % len(b)])
res += alph[(letter_i - offset) % len(alph)]
index += 1
else:
res += a[i]
return res
# La fonction qui copte le mot latin dans un texte
def latin_score(text):
a = 0
words = text.lower().replace('.', '').replace(',', '').replace('?', '').replace('!', '').split(' ')
for w in words:
if (len(w) > 0 and w in latin_words):
a += 1
return a
# La fonction qui met des majuscules à partir d'un texte différent mais de même longueur
def capitalize(a, b):
res = ""
for (i, char) in enumerate(a):
if (char.isupper()):
res += b[i].upper()
else:
res += b[i]
return res
# On calcul la réponse
max = 0
text = ''
for word in latin_words:
decode = dechiffr(phrase, word)
score = latin_score(decode)
if (score > max):
max = score
text = decode
text = capitalize(phrase, text)
print("Text:", phrase)
print("Score:", max)
print("Clair:", text)
rep = requests.post(URL2, data = {'reponse':text}, cookies = {'PHPSESSID': cookie} ).text
print(rep)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment