Skip to content

Commit 09a305e

Browse files
committed
Shorten encoded code.
1 parent a39bb60 commit 09a305e

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

phpfuck.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,16 @@
77
class PHPFuck():
88
def __init__(self):
99
# simple constant
10-
arr_str = "([].[])" # "ArrayArray"
10+
arr_str = "[].[]" # "ArrayArray"
1111
zero = "([]^[])"
1212
one = "([]^[[]])"
1313

1414
# generate digits
1515
nums = [zero, one]
1616
for i in range(2, 10):
17-
if i % 2 == 0:
18-
nums.append(f"{nums[i//2]}+{nums[i//2]}")
19-
else:
20-
nums.append(f"{nums[i//2]}+{nums[i//2+1]}")
17+
nums.append('+'.join([nums[1]]*i))
2118

22-
# using "Array0123456789" & xor to generate printable ascii char
19+
# using `Aray0123456789` & xor to generate printable ascii char
2320
self.char_mapping = {
2421
'\t': f'({nums[0]}.[])[{nums[0]}]^({nums[9]}.[])[{nums[0]}]',
2522
'\n': f'({nums[2]}.[])[{nums[0]}]^({nums[8]}.[])[{nums[0]}]',
@@ -185,8 +182,11 @@ def basic_encode(code):
185182

186183
if args.plain:
187184
encoded = phpfuck.encode(code)
185+
assert(set(encoded) <= set('([+.^])'))
188186
else:
189-
encoded = "<?php " + phpfuck.encode(code, args.eval) + " ?>\n"
187+
encoded = phpfuck.encode(code, args.eval)
188+
assert(set(encoded[:-1]) <= set('([+.^])'))
189+
encoded = "<?php " + encoded + " ?>\n"
190190

191191
if args.file:
192192
open(args.file, 'w').write(encoded)

0 commit comments

Comments
 (0)