Skip to content
Snippets Groups Projects
Unverified Commit 065e2c84 authored by frederic.arroyo's avatar frederic.arroyo
Browse files

chore: initial commit

parents
No related branches found
No related tags found
No related merge requests found
# Labo 4
## Exercise 3
Les fichiers finaux pour l'exercise 3 se situent dans `out/ex3-a.py` et `out/ex3-b.py`.
Vous pouvez utiliser le script `ex3.sh` pour regénérer ces fichiers.
## Exercise 4
Les fichiers finaux pour l'exercise 3 se situent dans `out/ex4-good.py` et `out/ex4-evil.py`.
Vous pouvez utiliser le script `ex4.sh` pour regénérer ces fichiers.
\ No newline at end of file
File added
ex3.sh 0 → 100755
#!/usr/bin/env bash
set -euo pipefail
FASTCOLL=./bin/md5_fastcoll
OUTDIR=./out
TEMPLATEDIR=./templates
mkdir -p $OUTDIR
head -n 4 $TEMPLATEDIR/ex3.py > $OUTDIR/.ex3.prefix.bin
$FASTCOLL -p $OUTDIR/.ex3.prefix.bin -o $OUTDIR/.ex3.data1.bin $OUTDIR/.ex3.data2.bin
python3 ./replace.py "{BIN}" $TEMPLATEDIR/ex3.py $OUTDIR/.ex3.data1.bin $OUTDIR/ex3-a.py 0
python3 ./replace.py "{BIN}" $TEMPLATEDIR/ex3.py $OUTDIR/.ex3.data2.bin $OUTDIR/ex3-b.py 0
chmod +x $OUTDIR/ex3-a.py
chmod +x $OUTDIR/ex3-b.py
md5sum $OUTDIR/ex3-a.py $OUTDIR/ex3-b.py
echo "$OUTDIR/ex3-a.py"
$OUTDIR/ex3-a.py
echo "$OUTDIR/ex3-b.py"
$OUTDIR/ex3-b.py
ex4.sh 0 → 100755
#!/usr/bin/env bash
set -euo pipefail
FASTCOLL=./bin/md5_fastcoll
OUTDIR=./out
TEMPLATEDIR=./templates
mkdir -p $OUTDIR
head -n 4 $TEMPLATEDIR/ex4.py > $OUTDIR/.ex4.prefix.bin
$FASTCOLL -p $OUTDIR/.ex4.prefix.bin -o $OUTDIR/.ex4.data1.bin $OUTDIR/.ex4.data2.bin
python3 ./replace.py "{GOOD_BIN}" $TEMPLATEDIR/ex4.py $OUTDIR/.ex4.data1.bin $OUTDIR/.ex4-base.py 128
python3 ./replace.py "{BIN}" $OUTDIR/.ex4-base.py $OUTDIR/.ex4.data1.bin $OUTDIR/ex4-good.py 0
python3 ./replace.py "{BIN}" $OUTDIR/.ex4-base.py $OUTDIR/.ex4.data2.bin $OUTDIR/ex4-evil.py 0
chmod +x $OUTDIR/ex4-good.py
chmod +x $OUTDIR/ex4-evil.py
md5sum $OUTDIR/ex4-good.py $OUTDIR/ex4-evil.py
echo "$OUTDIR/ex4-good.py"
$OUTDIR/ex4-good.py
echo "$OUTDIR/ex4-evil.py"
$OUTDIR/ex4-evil.py
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
Ii/FҐxLUlǥ9::Z) :K7lDBVgpZDq67wR#Q]YSP'&ZF'TOZ.V|ϫ#
\ No newline at end of file
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
Ii/FҐxLUΖlǥ9::Z) :K7mDBVgpZD67wR#Q]YSP'&ZF'TO0Z.V|ϫ#
\ No newline at end of file
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
{BIN}
""", "iso-8859-1")
good_blob = bytes(r"""
\fR9e<")I`<o#:^RǁK;kT<6ʀt9q؁m_MbD7OrunmUIDͽڠ(L+ͬϬ~ rƆ%ErATR)<Rd
""", "iso-8859-1")
if blob == good_blob:
print("Bonjour")
else:
print("You've been hacked\n" * 100)
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
\fR9e<")I`<o#:^RǁK;kT<6ʀt9q؁m_MbD7OrunmUIDͽڠ(L+ͬϬ~ rƆ%ErATR)<Rd
\ No newline at end of file
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
\fR9e<")I`<!o#:^RǁK;kT<6Jt9q؁m_Mb&D7OrunmUIDͽڠL+ͬϬ~ rƆ%Er ATR)w<Rd
\ No newline at end of file
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
Ii/FҐxLUlǥ9::Z) :K7lDBVgpZDq67wR#Q]YSP'&ZF'TOZ.V|ϫ#
""", "iso-8859-1")
print(blob)
\ No newline at end of file
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
Ii/FҐxLUΖlǥ9::Z) :K7mDBVgpZD67wR#Q]YSP'&ZF'TO0Z.V|ϫ#
""", "iso-8859-1")
print(blob)
\ No newline at end of file
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
}>-|%ߒ{wWgAUC
CF cGWn_SR Q3$ff <S(>vOMmAl'D&Іφ?s%
""", "iso-8859-1")
good_blob = bytes(r"""
}>-|%ߒ{wWgAUC
CF cGWn_SR Q3$ff <S(>vOMmAl'D&Іφ?s%
""", "iso-8859-1")
if blob == good_blob:
print("Bonjour")
else:
print("You've been hacked\n" * 100)
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
}>-|%ߒ{WgAUC
CF cGn_S Q3$ff <S>vOMmAl'Df&Іφ?s%
""", "iso-8859-1")
good_blob = bytes(r"""
}>-|%ߒ{wWgAUC
CF cGWn_SR Q3$ff <S(>vOMmAl'D&Іφ?s%
""", "iso-8859-1")
if blob == good_blob:
print("Bonjour")
else:
print("You've been hacked\n" * 100)
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
\fR9e<")I`<!o#:^RǁK;kT<6Jt9q؁m_Mb&D7OrunmUIDͽڠL+ͬϬ~ rƆ%Er ATR)w<Rd
""", "iso-8859-1")
good_blob = bytes(r"""
\fR9e<")I`<o#:^RǁK;kT<6ʀt9q؁m_MbD7OrunmUIDͽڠ(L+ͬϬ~ rƆ%ErATR)<Rd
""", "iso-8859-1")
if blob == good_blob:
print("Bonjour")
else:
print("You've been hacked\n" * 100)
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
\fR9e<")I`<o#:^RǁK;kT<6ʀt9q؁m_MbD7OrunmUIDͽڠ(L+ͬϬ~ rƆ%ErATR)<Rd
""", "iso-8859-1")
good_blob = bytes(r"""
\fR9e<")I`<o#:^RǁK;kT<6ʀt9q؁m_MbD7OrunmUIDͽڠ(L+ͬϬ~ rƆ%ErATR)<Rd
""", "iso-8859-1")
if blob == good_blob:
print("Bonjour")
else:
print("You've been hacked\n" * 100)
#!/usr/bin/env python3
#Search the pattern given in the first argument
#in the file given in the second argument and replace it with the binary content of the file given in the third argument
#and save the output in the file given in the fourth argument
import re
import sys
def replace_bin(pattern: str, source_file: str, binary_file: str, output_file: str, prefix_size: int):
# Read the source file
with open(source_file, 'rb') as file:
source = file.read()
# Read the binary file
with open(binary_file, 'rb') as file:
data = file.read()
source = source.split(pattern.encode(), 1)
with open(output_file, 'wb') as file:
if prefix_size != 0:
file.write(source[0])
data = data[prefix_size:]
file.write(data)
file.write(source[1])
if __name__ == "__main__":
pattern = sys.argv[1]
source_file = sys.argv[2]
binary_file = sys.argv[3]
output_file = sys.argv[4]
prefix_size = sys.argv[5]
replace_bin(pattern, source_file, binary_file, output_file, int(prefix_size))
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
{BIN}
""", "iso-8859-1")
print(blob)
\ No newline at end of file
#!/usr/bin/env python3
# coding: iso-8859-1
#0123456789001234567890012345678900123456789001234567890012345678
blob = bytes(r"""
{BIN}
""", "iso-8859-1")
good_blob = bytes(r"""
{GOOD_BIN}
""", "iso-8859-1")
if blob == good_blob:
print("Bonjour")
else:
print("You've been hacked\n" * 100)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment