# UTCTF 2025 [FORENSICS] ![image](https://hackmd.io/_uploads/S1VgnxN3yg.png) --- ## 1. Streamified ![image](https://hackmd.io/_uploads/BJyzhxVn1l.png) Bài cho: > 1111111000011110101111111100000100110101100100000110111010110110111010111011011101010101001101011101101110101001010010101110110000010100101111010000011111111010101010101111111000000001011110100000000010111110001110110011111000111010101100000010100000100011110111100101110111100000100001010100010000011000001000000001011011111100010001010111011100011010100010101001111100110111011100001001100110000011100001100110101011111111100000000110000001000110101111111001111001101010011100000101101001010001000010111010111100011111111011011101011001110011010011101110101010011110010010110000010011011001011100011111111010101010000010111 Tuy nhiên thì không phải là binary decode thông thường, mình bảo AI nó gen code qr thì được: ```python= import numpy as np import matplotlib.pyplot as plt # Binary string binary_str = "1111111000011110101111111100000100110101100100000110111010110110111010111011011101010101001101011101101110101001010010101110110000010100101111010000011111111010101010101111111000000001011110100000000010111110001110110011111000111010101100000010100000100011110111100101110111100000100001010100010000011000001000000001011011111100010001010111011100011010100010101001111100110111011100001001100110000011100001100110101011111111100000000110000001000110101111111001111001101010011100000101101001010001000010111010111100011111111011011101011001110011010011101110101010011110010010110000010011011001011100011111111010101010000010111" # Function to reshape and visualize def reshape_and_visualize(binary_str, width, height): if width * height > len(binary_str): # Pad with zeros binary_str = binary_str.ljust(width * height, '0') elif width * height < len(binary_str): # Truncate binary_str = binary_str[:width * height] # Reshape matrix = np.zeros((height, width), dtype=int) for i in range(height): for j in range(width): index = i * width + j if index < len(binary_str): matrix[i, j] = int(binary_str[index]) # Visualize plt.figure(figsize=(8, 8)) plt.imshow(matrix, cmap='binary') plt.title(f'Binary data as {width}x{height} grid') plt.axis('off') plt.tight_layout() plt.show() return matrix # Try different dimensions print("Trying different dimensions for visualization") dimensions = [(20, 31), (31, 20), (24, 26), (26, 24), (25, 25), (20, 31)] for width, height in dimensions: print(f"Creating {width}x{height} visualization") reshape_and_visualize(binary_str, width, height) ``` ![Figure_1](https://hackmd.io/_uploads/BkDK3lNhJl.png) > Flag: utflag{b!t_by_b!t} --- ## 2. Forgotten Footprints ![image](https://hackmd.io/_uploads/SJFp2xEnyl.png) Bài cho mình file img, tuy nhiên thì strings grep là ra flag: ```bash= 7574666c61677b64336c337433645f6275375f6e30745f67306e335f34657665727d35ca565d03455294d2c26a3a7aec32ce04b3c9f515519d6c8a6f4ecb306680296b3c7bd67562d88d5aa8996e9c119a6b022a4e11b15f14d7c5ffd7fb3ae46a9dbe0b85eced831c992cb2ceda4e05d92e11777104d96c0d50693db03a0aa3841553dcf2b7f5298f0e376546ca78e4d88c2c6402b7dbbcbb7bb8950e425092d3954684bdf38c7969103b39e2272067e57f5f2372e5799418f4d330433ca02ca566581f288ced8bc1a25df3d7d5d14b845adc9ff40fd249f5c7c74ee640568299874df4f82e0503dfc702d0ffe3a89ddb80880fb054cb34c7f974f338e7735bba3febc55cdbe4bb93aac71076d7e32964c644293bd381ce45ad7002d0f3f17e5c1c77b37fbf9767d76101c6db24635ec0efa890ebb997f111d6bcc751ffaced1ef0140ef2c7847ac2bd8e13f10f6fe9e44b24fb40bcc2cd210e48204ed875490bf6d4b66ae48be19a33d3895d157df2c2c77ce2d76f85c17f26a19cb9e2d467ec686e2b67fda6b7bc435c52c40f954c65d813ac259e0ee0a2e057d93d04eeb44b25b0b153043a22ed1eeaa8f63f0919a7d72b98c68b3816bd3553c387471a850070094d4e3319a9e2afffe437e310c0c26514eb6b20ef8551cd318642f72225fa60c3a3220544798b191ce07f303da973bd0d05c8a68c8a2b43b7fb241135f900e5c86f0fba01ee4750b9107b22c11deff1046e6fa90008706a5fa82f57d35aca2b10934120e2a5982587504800c39ec62463f60195f178fb9df7578c630be846f7bff460a77a90da25c4ce632285fc9550eaeb2d06de4c8375f88d1a51e3f6bd2cb287c75a66a8adffa732e63250fd0db5d1205aa3f2825ee09ff63bbb2395a9d506f7e52bbc21d3803aed6675fc1902774952a73d19347208496d4976aa7b9d426995e6ca97b19022a11f5a53f91712f9422dbac51fdd6588176902047a9ec0c3f7ef4568daf248e72536fe8eaada4a21983dfa096e26c4bbee4725cc38b1f096935d3e024802eb1d8e024bcb31e60d27c873424cffc1c083b8b442778285ebb171e58ac397fe0e3c3ed8cbf41b19e6cb9e13e18ef1f5801a94db48b9c342c5d33b378b4902b1c6840034cec60bcaa0f49395dff18d91009658bdc56f70ecefea6f674e5179268d1efb03634adcdb70aeed3fc0146f638d75d7cc74d78af62d0e28db63581873d10eddee545f9355f6115cbe766afdf10f0a5b52acbb119ffdab1fef940caf2b1de4dabb628651c074112598cd9a4213479687767ef04c01986cb709ced8423f625ad21be672551cdcc89ce72a1cd88d522e6f301d1601fd185542ed658c4f5334602a4ecc4f7a2c0aa67ad786a1532881c0438223d96cec46f0af355418b3cde59bf754afb59e5e5715beeb2bef83e9e70d963206f303f6ad34c5d0a5bd28b03170c983a15a68a812e9418b46a9e920af6228fd9ad73a95197f06d430e9fcde10d2f11c52be2714ae615852efe216c3a82a4e0f8baa3d5ebb2e50477195d29086c8f5b75d690fd7d422a2d4a03427fb18c147ecc75ca5517621789ef79c10a95803cd3c55f4b810bf879e3853b1860a68fc73184c4759a36a1ac6ee1a913a374f40aba1cb998a5b2390c430b3c7508c4382bf7e64ffa8def33ae7c770f9960f6fb0c480a9b8a9038b6bf520a1ea76f7299b6f989a674befd1610de5480c866b1d33b145b4da0ae709236ee56162a2b57b2b8585e06a49942dfa8a37d3864600637cd8700abc6d3d21a6775e9c86d5d119346dbea10832cced15ca58011c65f537ea1e30ea48c14e6b8abe5539060d6e9da766ea982fe40410fc53283db7603f6b31b341c72ce9c48030252ec2025e54f89065fe20108e5b23b6d61c6997fd591b61801cc82452b4c2ff1600d49e03a1dbd71e4d7b7112cd6877d5f036d1cede05455a0af055e64f9af0deaa95bfe7dfbb6b7ba2eac4990ac03b3561dcc93d88c5d4cca3422fbc55a651a85cfdfeb315a5661dba79a9196edd598d8a097f4c75118efe9b9ea8fc0ea76e65e6118a77b62fcc2e873e51950cfdd9caf7971b2e369b2c28b7ef55de6b46f89e3150368883f9611b796a8a16a814705edf044ab99f27e2863225c9af10370dd8864e3b3b162084f43e90845cebba95af2240551e3d7594fecfba92fbc334d3e06fbe43b2f2e69b9a9ffd66b327b01b8d2a6aecb6a3acaeca918985b1df5af841054094fd92e94f4128a4ee34b7e3491df402ca9760d467e727ca5fb5e5dcfdd0f3d10dff7126a9b314e03032a1e841ee8fece586b29cea92ea7f9f559b2a4ea18ace3d4402a2975e495c58bb0d9b4a41c8829fe74c7d0fddc2cbc310a2c2509576efaa33ed7d3dcfc24f7c9e095bf14ca16f07999536757cf1cc9249e21cdae3bc67eceda5fb8499abdb1f4129d8d4876f28734df026767914b582d968235c1d87352484310b6f79531660fefb56744a66a6a3139b46e6b5af52063f99f2319e561fedd021d26efa38f2021760a97ff4a044a7f9fd0a7e7408f99000e3e61702fc84b480a5856009cb5ac551c8fd43b0bb0eb4af4962af15de646bf6a45f19b39048696a058cf45dcfcf541de7e2877a9ab02f02b674a34b49ffd31d3727bb78b9f64efe613ecbe824123c2e8d6bc1c50c2380b975bc45478c79d66e3e56193f19000d7b3a4bf9226b8bd7f251cc9a4aabd5346284e7b9e665a8bb9adbde15b55f8ec363d1eb4d3d9494b947c09197045bf9261335dee4cd00ba25990175d251ac02681a56d974f94981ab2a91ec4375019f565cf8878a64e546d663fe3633f4e23d6d31c14891bb9a072eae469d245ec8242ffe79215979d85dcf10acc4245e117df20bf0478583d57139ba2287426717cfc6903cd6f7d63f97577c8c411a22ec6464c6a0131b2c421237522d0f44f6e029ddbf8a1a985bbbcbc9defa85e4c2189206e6e2baca3feb77a8eb7394cef4e2999b4a1321e00f580840188b6924af2e51ca0d6088b6961fcb824f064c5baccb1ddf0730f45815dad510ae40a9be7e24ab64231b9781a42c6078cfe987c1d9dbdfdb3aa2e43126df7adbc8bcf37e80b84d1984e3ea339022c7b0946854e6ceed776fbed12bb292c729e62bbacc063a91727a13fb018b177a67985c2462349472f56540bb202f9985ebdd7f6f484060823b061107cfcc2a2d62bf08e77b96e95428ad5e8aab67bc2393e6ad6ef18d6b48e9fd5622cbb42e9ea128e4151f13c2acce7c27a7f4601a18668efa5c77edda41fc0a2b0ff2a9c3f90f34baafb5bdbdadae443b6f0e1fe0d39b24a648143eaf37bb4ebda98fedafa116875c8ea40746a86a935919dcccdaa3ebd20c48651c56ae57a31e69007b1d2e76ca3758db44e5e09de344d9e13e3b1018b479c09947235a9c3682c09fa88337917aaf115181ae6fc245bc4a976337c9a886e5d98b2c7fc0b78e7a7993301bb288e5aa1ffca1cb7f03a7eb89551b0df1596f17be6b135f7a2837c67e2c2a5432a12e1c0ab96291529f8568f89d2916bfc32a6272c08a723a4a7dddc26faec3dd4205a79088a01af81ebff71d3f354d68e340799d793f8d737b1a913662316b73307c176a256357d62d313c64dfa84af6218c342d1d84c78d7df9755d6dc24e4cc04ea824e6b3e7b2658d72c92cd212dd116ef4c0dea2eaf8dc3ade95d4d256a2bcbd428f58a544a1aa5e78195ca60a8f5649afcc0da53c896b504f6d0a68dd9c32df22811dee5109dcff95f2... ``` ![image](https://hackmd.io/_uploads/rJabTeNnJe.png) > Flag: utflag{d3l3t3d_bu7_n0t_g0n3_4ever} --- ## 3. Finally, an un-strings-able problem ![image](https://hackmd.io/_uploads/ByODaxV2Jx.png) Vẫn tiếp tục là 1 file img chứa thư mục lost+found, tuy nhiên mình làm đủ mọi cách thế nhưng vẫn không decode được nội dung như các loại mã hóa base64..., sau khi đổi hướng thì mình để ý đến phần phân quyền của file: ![Screenshot 2024-11-05 131920](https://hackmd.io/_uploads/H1fApx43kx.png) ```bash= ──(kali㉿kali)-[~/Downloads] └─$ file disk.img disk.img: Linux rev 1.0 ext4 filesystem data, UUID=981eb2d5-0400-4c7d-986e-e9c3860666d3 (extents) (64bit) (large files) (huge files) ┌──(kali㉿kali)-[~/Downloads] └─$ mkdir mount_point sudo mount -o loop disk.img mount_point [sudo] password for kali: ┌──(kali㉿kali)-[~/Downloads] └─$ ls -lah mount_point total 152K drwxr-xr-x 3 root root 4.0K Mar 12 09:08 . drwxr-xr-x 16 kali kali 4.0K Mar 15 15:40 .. --wx---rw- 1 root root 1.1K Mar 12 08:26 1Pe4S76zWpxA8mgI.txt -rwxr--rwx 1 root root 1.1K Mar 12 08:51 3zkhN7A0Vqe0HgNC.txt -rw---x-wx 1 root root 1.1K Mar 12 08:49 5UhgLeVLJWuEnc4W.txt -rw---xr-- 1 root root 1.1K Mar 12 08:36 6ReSGoJsRnFqhg7r.txt -r--rw-r-x 1 root root 1.1K Mar 12 08:50 B7HIyq5CKwGavwaW.txt ---xr-xr-- 1 root root 1.1K Mar 12 08:46 bG0d9OBnfwVP2NS8.txt --wxr----- 1 root root 1.1K Mar 12 08:31 cDnYAOBE4mvBnh0C.txt -rw--wx--x 1 root root 1.1K Mar 12 08:29 eiUFiXPDk6oee8sL.txt -rwxr-xr-- 1 root root 1.1K Mar 12 08:35 fGMkb1gANtjLb5Qz.txt -rwx--xr-- 1 root root 1.1K Mar 12 08:48 GeDYq3hoIx7oijhO.txt -rwx--xr-- 1 root root 1.1K Mar 12 08:40 GP4decBqHC6UL66s.txt -rw-rw---x 1 root root 1.1K Mar 12 08:53 HN5vsOJkU4004pEl.txt -r-x---r-x 1 root root 1.1K Mar 12 08:34 HsxVbSgKw3d7tvFi.txt ----rw-r-x 1 root root 1.1K Mar 12 08:42 kcVtPjZM85b4B3V6.txt --w---xr-- 1 root root 1.1K Mar 12 08:52 KEY19YZmg8L92D1H.txt -r-xrwx--- 1 root root 1.1K Mar 12 08:30 kY4FOlfPt3qGR17K.txt drwx------ 2 root root 16K Mar 12 09:08 lost+found --wx-wxr-- 1 root root 1.1K Mar 12 08:39 LuVzAMVXkpJYAxRM.txt ----rw--wx 1 root root 1.1K Mar 12 08:38 lysJisb6wMlPG9WX.txt -rw--w--wx 1 root root 1.1K Mar 12 08:33 OOVH70vCevC3FSZq.txt --wxr-x-w- 1 root root 1.1K Mar 12 08:23 PtRcxoHyWhhS6z9q.txt -r---wx-wx 1 root root 1.1K Mar 12 08:44 pU2aTHrPpCjthwwi.txt -r--rw--wx 1 root root 1.1K Mar 12 08:25 R6qgmnljCORHERFH.txt -rw---x-wx 1 root root 1.1K Mar 12 08:41 S5dyoQrp6a8grHOD.txt -rwxr--rw- 1 root root 1.1K Mar 12 08:43 t7WeFKhvlS3e1Yet.txt ----r-xr-- 1 root root 1.1K Mar 12 08:27 u70m5b8l2T3vnZHZ.txt ----rwx--x 1 root root 1.1K Mar 12 08:37 uAkL5PqfK2I7K4PE.txt --wx--xr-x 1 root root 1.1K Mar 12 08:32 Uljik5BaQPOeMjfc.txt --wxrw--w- 1 root root 1.1K Mar 12 08:47 Vp7XQiTt4ad9IDfB.txt -r-xrwxr-x 1 root root 1.1K Mar 12 08:54 W5xw54rLYvyj7qRM.txt -rwx-wxrw- 1 root root 1.1K Mar 12 08:28 x9f1QlloTkYd5sfU.txt -rwx-w---x 1 root root 1.1K Mar 12 08:24 y7Dsjz7CmkvpTA1H.txt -r---wx-w- 1 root root 1.1K Mar 12 08:45 Z0VC73hFMVt2AcO9.txt ``` > Quyền file trong Linux/Unix: > > Mỗi file có 9 bit phân quyền: 3 bit cho owner (rwx), 3 bit cho group (rwx), và 3 bit cho others (rwx) > Ví dụ: -rwxr-x-w- nghĩa là: > > Bit đầu tiên - chỉ loại file (thông thường) > 3 bit tiếp theo rwx là quyền của owner (read, write, execute) > 3 bit tiếp theo r-x là quyền của group (read, no write, execute) > 3 bit cuối -w- là quyền của others (no read, write, no execute) > > > > > Chuyển đổi quyền thành nhị phân: > > Mỗi ký tự được chuyển đổi: - thành 0, và r, w, hoặc x thành 1 > Ví dụ: -rwxr-x-w- => 111101010 (bỏ ký tự đầu tiên) > > > Sắp xếp file theo thời gian: > > Files được sắp xếp theo timestamp (08:23 đến 08:54) > Điều này giúp đọc bit theo đúng thứ tự mà người ra đề đã thiết kế > > > Chuyển đổi nhị phân thành ASCII: > > Mỗi 8 bit được chuyển thành một ký tự ASCII > Ví dụ: 01110101 => 117 trong hệ thập phân => ký tự u trong ASCII Để AI gen Script là ra: ```python= file_listing = """ --wx---rw- 1 root root 1.1K Mar 12 08:26 1Pe4S76zWpxA8mgI.txt -rwxr--rwx 1 root root 1.1K Mar 12 08:51 3zkhN7A0Vqe0HgNC.txt -rw---x-wx 1 root root 1.1K Mar 12 08:49 5UhgLeVLJWuEnc4W.txt -rw---xr-- 1 root root 1.1K Mar 12 08:36 6ReSGoJsRnFqhg7r.txt -r--rw-r-x 1 root root 1.1K Mar 12 08:50 B7HIyq5CKwGavwaW.txt ---xr-xr-- 1 root root 1.1K Mar 12 08:46 bG0d9OBnfwVP2NS8.txt --wxr----- 1 root root 1.1K Mar 12 08:31 cDnYAOBE4mvBnh0C.txt -rw--wx--x 1 root root 1.1K Mar 12 08:29 eiUFiXPDk6oee8sL.txt -rwxr-xr-- 1 root root 1.1K Mar 12 08:35 fGMkb1gANtjLb5Qz.txt -rwx--xr-- 1 root root 1.1K Mar 12 08:48 GeDYq3hoIx7oijhO.txt -rwx--xr-- 1 root root 1.1K Mar 12 08:40 GP4decBqHC6UL66s.txt -rw-rw---x 1 root root 1.1K Mar 12 08:53 HN5vsOJkU4004pEl.txt -r-x---r-x 1 root root 1.1K Mar 12 08:34 HsxVbSgKw3d7tvFi.txt ----rw-r-x 1 root root 1.1K Mar 12 08:42 kcVtPjZM85b4B3V6.txt --w---xr-- 1 root root 1.1K Mar 12 08:52 KEY19YZmg8L92D1H.txt -r-xrwx--- 1 root root 1.1K Mar 12 08:30 kY4FOlfPt3qGR17K.txt --wx-wxr-- 1 root root 1.1K Mar 12 08:39 LuVzAMVXkpJYAxRM.txt ----rw--wx 1 root root 1.1K Mar 12 08:38 lysJisb6wMlPG9WX.txt -rw--w--wx 1 root root 1.1K Mar 12 08:33 OOVH70vCevC3FSZq.txt --wxr-x-w- 1 root root 1.1K Mar 12 08:23 PtRcxoHyWhhS6z9q.txt -r---wx-wx 1 root root 1.1K Mar 12 08:44 pU2aTHrPpCjthwwi.txt -r--rw--wx 1 root root 1.1K Mar 12 08:25 R6qgmnljCORHERFH.txt -rw---x-wx 1 root root 1.1K Mar 12 08:41 S5dyoQrp6a8grHOD.txt -rwxr--rw- 1 root root 1.1K Mar 12 08:43 t7WeFKhvlS3e1Yet.txt ----r-xr-- 1 root root 1.1K Mar 12 08:27 u70m5b8l2T3vnZHZ.txt ----rwx--x 1 root root 1.1K Mar 12 08:37 uAkL5PqfK2I7K4PE.txt --wx--xr-x 1 root root 1.1K Mar 12 08:32 Uljik5BaQPOeMjfc.txt --wxrw--w- 1 root root 1.1K Mar 12 08:47 Vp7XQiTt4ad9IDfB.txt -r-xrwxr-x 1 root root 1.1K Mar 12 08:54 W5xw54rLYvyj7qRM.txt -rwx-wxrw- 1 root root 1.1K Mar 12 08:28 x9f1QlloTkYd5sfU.txt -rwx-w---x 1 root root 1.1K Mar 12 08:24 y7Dsjz7CmkvpTA1H.txt -r---wx-w- 1 root root 1.1K Mar 12 08:45 Z0VC73hFMVt2AcO9.txt """ # Function to convert permission string to binary def perm_to_binary(perm_str): binary = "" # Skip the first character (file type) for c in perm_str[1:]: if c == "-": binary += "0" else: # r, w, or x binary += "1" return binary # Parse the file listing to get file permissions and timestamps files = [] for line in file_listing.strip().split("\n"): if not line.strip(): continue parts = line.split() if len(parts) >= 9: permissions = parts[0] # Parse time time_str = parts[7] # Time is at index 7 # Extract file name filename = parts[8] files.append((permissions, time_str, filename)) # Sort files by their creation time files.sort(key=lambda x: x[1]) print("Files sorted by time:") for perm, time, filename in files: print(f"{time} - {perm} - {filename}") # Extract binary from permissions binary_message = "" for perm, time, filename in files: binary = perm_to_binary(perm) binary_message += binary print(f"{filename}: {perm} -> {binary}") print("\nBinary message:") print(binary_message) # Convert binary to ASCII (assuming 8 bits per character) flag = "" for i in range(0, len(binary_message), 8): if i + 8 <= len(binary_message): byte = binary_message[i:i+8] char = chr(int(byte, 2)) flag += char print(f"{byte} -> {char}") print("\nDecoded flag:") print(flag) ``` Kết quả: ```bash= Files sorted by time: 08:23 - --wxr-x-w- - PtRcxoHyWhhS6z9q.txt 08:24 - -rwx-w---x - y7Dsjz7CmkvpTA1H.txt 08:25 - -r--rw--wx - R6qgmnljCORHERFH.txt 08:26 - --wx---rw- - 1Pe4S76zWpxA8mgI.txt 08:27 - ----r-xr-- - u70m5b8l2T3vnZHZ.txt 08:28 - -rwx-wxrw- - x9f1QlloTkYd5sfU.txt 08:29 - -rw--wx--x - eiUFiXPDk6oee8sL.txt 08:30 - -r-xrwx--- - kY4FOlfPt3qGR17K.txt 08:31 - --wxr----- - cDnYAOBE4mvBnh0C.txt 08:32 - --wx--xr-x - Uljik5BaQPOeMjfc.txt 08:33 - -rw--w--wx - OOVH70vCevC3FSZq.txt 08:34 - -r-x---r-x - HsxVbSgKw3d7tvFi.txt 08:35 - -rwxr-xr-- - fGMkb1gANtjLb5Qz.txt 08:36 - -rw---xr-- - 6ReSGoJsRnFqhg7r.txt 08:37 - ----rwx--x - uAkL5PqfK2I7K4PE.txt 08:38 - ----rw--wx - lysJisb6wMlPG9WX.txt 08:39 - --wx-wxr-- - LuVzAMVXkpJYAxRM.txt 08:40 - -rwx--xr-- - GP4decBqHC6UL66s.txt 08:41 - -rw---x-wx - S5dyoQrp6a8grHOD.txt 08:42 - ----rw-r-x - kcVtPjZM85b4B3V6.txt 08:43 - -rwxr--rw- - t7WeFKhvlS3e1Yet.txt 08:44 - -r---wx-wx - pU2aTHrPpCjthwwi.txt 08:45 - -r---wx-w- - Z0VC73hFMVt2AcO9.txt 08:46 - ---xr-xr-- - bG0d9OBnfwVP2NS8.txt 08:47 - --wxrw--w- - Vp7XQiTt4ad9IDfB.txt 08:48 - -rwx--xr-- - GeDYq3hoIx7oijhO.txt 08:49 - -rw---x-wx - 5UhgLeVLJWuEnc4W.txt 08:50 - -r--rw-r-x - B7HIyq5CKwGavwaW.txt 08:51 - -rwxr--rwx - 3zkhN7A0Vqe0HgNC.txt 08:52 - --w---xr-- - KEY19YZmg8L92D1H.txt 08:53 - -rw-rw---x - HN5vsOJkU4004pEl.txt 08:54 - -r-xrwxr-x - W5xw54rLYvyj7qRM.txt PtRcxoHyWhhS6z9q.txt: --wxr-x-w- -> 011101010 y7Dsjz7CmkvpTA1H.txt: -rwx-w---x -> 111010001 R6qgmnljCORHERFH.txt: -r--rw--wx -> 100110011 1Pe4S76zWpxA8mgI.txt: --wx---rw- -> 011000110 u70m5b8l2T3vnZHZ.txt: ----r-xr-- -> 000101100 x9f1QlloTkYd5sfU.txt: -rwx-wxrw- -> 111011110 eiUFiXPDk6oee8sL.txt: -rw--wx--x -> 110011001 kY4FOlfPt3qGR17K.txt: -r-xrwx--- -> 101111000 cDnYAOBE4mvBnh0C.txt: --wxr----- -> 011100000 Uljik5BaQPOeMjfc.txt: --wx--xr-x -> 011001101 OOVH70vCevC3FSZq.txt: -rw--w--wx -> 110010011 HsxVbSgKw3d7tvFi.txt: -r-x---r-x -> 101000101 fGMkb1gANtjLb5Qz.txt: -rwxr-xr-- -> 111101100 6ReSGoJsRnFqhg7r.txt: -rw---xr-- -> 110001100 uAkL5PqfK2I7K4PE.txt: ----rwx--x -> 000111001 lysJisb6wMlPG9WX.txt: ----rw--wx -> 000110011 LuVzAMVXkpJYAxRM.txt: --wx-wxr-- -> 011011100 GP4decBqHC6UL66s.txt: -rwx--xr-- -> 111001100 S5dyoQrp6a8grHOD.txt: -rw---x-wx -> 110001011 kcVtPjZM85b4B3V6.txt: ----rw-r-x -> 000110101 t7WeFKhvlS3e1Yet.txt: -rwxr--rw- -> 111100110 pU2aTHrPpCjthwwi.txt: -r---wx-wx -> 100011011 Z0VC73hFMVt2AcO9.txt: -r---wx-w- -> 100011010 bG0d9OBnfwVP2NS8.txt: ---xr-xr-- -> 001101100 Vp7XQiTt4ad9IDfB.txt: --wxrw--w- -> 011110010 GeDYq3hoIx7oijhO.txt: -rwx--xr-- -> 111001100 5UhgLeVLJWuEnc4W.txt: -rw---x-wx -> 110001011 B7HIyq5CKwGavwaW.txt: -r--rw-r-x -> 100110101 3zkhN7A0Vqe0HgNC.txt: -rwxr--rwx -> 111100111 KEY19YZmg8L92D1H.txt: --w---xr-- -> 010001100 HN5vsOJkU4004pEl.txt: -rw-rw---x -> 110110001 W5xw54rLYvyj7qRM.txt: -r-xrwxr-x -> 101111101 Binary message: 011101010111010001100110011011000110000101100111011110110011001101111000011100000011001101110010011101000101111101100110001100000111001000110011011011100111001100110001011000110101111100110100011011100011010001101100011110010111001100110001011100110101111100111010001100110110001101111101 01110101 -> u 01110100 -> t 01100110 -> f 01101100 -> l 01100001 -> a 01100111 -> g 01111011 -> { 00110011 -> 3 01111000 -> x 01110000 -> p 00110011 -> 3 01110010 -> r 01110100 -> t 01011111 -> _ 01100110 -> f 00110000 -> 0 01110010 -> r 00110011 -> 3 01101110 -> n 01110011 -> s 00110001 -> 1 01100011 -> c 01011111 -> _ 00110100 -> 4 01101110 -> n 00110100 -> 4 01101100 -> l 01111001 -> y 01110011 -> s 00110001 -> 1 01110011 -> s 01011111 -> _ 00111010 -> : 00110011 -> 3 01100011 -> c 01111101 -> } Decoded flag: utflag{3xp3rt_f0r3ns1c_4n4lys1s_:3c} ``` > Flag: utflag{3xp3rt_f0r3ns1c_4n4lys1s_:3c} ---