Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Overall, the primary data type being processed in the code is a string, but various other data types (like dictionaries and floats) are used to store intermediate results and perform calculations.
- from collections import Counter
- import math
- import pandas as pd
- import matplotlib.pyplot as plt
- import seaborn as sns
- # Provided data
- data = '3=U³\\¬¶6|cò\\u000fã£Ü\\u001bn>]UãÊOM³YWl®cÕ\\u0017«ÔñqZÓZÖø\\u005cæ\\u0017ÙGµZ.ôSv²5\\u001f;Ì͸Õ\'Ö<\\u001eYã.ËôðâøxãµtøªÓ3/VÍÆµrÜfÚczlzjÎvfñfÎÔO\\u00177iËG§tÍ£=ðÙ\\u0017챺+¼=êqÇV\\u005cG«ig\']+>geµÜñ\\u001e¶±§ÊÚx|<͸|¥ìáÚ.é\\u001bn£³¦]véeô<y¸ãÉã\\u001dò>Ö\\u001e¼Æv\'§êÌvtn6Ó¥³læ:µl\'>jélOfÇ7ÉkÌWÔ\\u001fSÕå\'§\\u001e\\u001fÉ®\\u001b§\\u001bnáx;Åô¥¶gu¦ÊÍcÓÖÑ©¹ð¶KêÊ>\\u001b;9«ª|K¹\\u001eÜ£;.¶ÅWðø´Ü£Õæxs\\u005c®\\u005cìÌuÑÓimn²\\u001f6Ö\\u005c]VÓ¬êÆôðkcm\\u005cÚ¦|iv\\u001døUOK³.>xm6vf¹en²vMñ.OSkS:sM¶´\\u001f<;ð;\\u001e[q;67Myj]VÚcz²µM§Å³±¬O+òtm3¦©ÓGn9y<ÇZ;\\u001eÅÚ>ÑÓØ²¹\\u001eÚY/Gãð³\\u001by£zÒÎNµxø\\u005cUám\\u001eÕVκ67.z¼rÜc¹l³ÒñãNγ.Çfº9ñâ®l±¶<¶GÙ\\u0017§isêÚ¦øt«¥/él7:Õ¸ñ5>lñ[3æØ|SnGѵ:>â;Ôj>-<WGN|¥W5uSã©mZømÇ3S[¥v+m²¼VUìrÕxãYÙMWìc>3ÖØø¬Õ+Ó\\u001bmZÙÃ\\u001dØÍc«9ñæVËÌW<ÕY³:êqéiGÓ\\u005cÜéÖZgSÙNéÌnÌ=qø®ÃÓ6^<\\u0017ÍK[¥å\\u001dæÔWSs:®jvÊ^j«:ÍGñSåÑ[\\u005cÕ^\\u001b^¦Ú\\u000fÇrÇSÚ´yqì\\u001dã´yɵ+>^j]Ysé¼ä;£ZÇzrãV/ÅÓNvM«Ëi].§±;:ñ6ͬô-ºÅò±WÌ^Åy:Nvè\\u000f¼cÖ5^ª\\u001f-ÖY=KñGÓ-Õ´ØUnѶªòÔôr¼<«.W5åm¥|Ñãª>fòØ7âñM§9^\\u000f^Åã±|eêÑÓr;¬ôV[SÇtÇ5znµ:7Mnq\\u001f6|ÆÍæK¹xã¸]+³NÇ£áñcÙÆìÊ[yK¼Nãx;¶[ÙÌkâ³\\u001eÅÜ´]-[ÎrSò\\u001f\'>Ã|:mÆ|²ÉØ«£Ü£¶´Ír§3Ç<¶xñʦ/âê<ôVµÒ/Mu+òاªyj¹KÕfná|\\u001et\\u001flkÅkzNôÚtÌÔêjøÃËVu´uÌÙ|¼èêèÜ´m馫£ºq츹+ÖèÜG\\u000fÜèË\\u001b\\u001bºxvÑg´OxËÒ\\u001f<[MÚô¥zÑ/âÖÑMæUY|5µ6¶xÓ©\\u001e³â®ä|Zg/á§rW©§\\u005cÙØ|ªn-Õª>MÇÑ/ªµtÎr¶Ø\\u001fâò[Ô\\u001fiÇä³´µÖÌn¬mø3s3|jå¼É§\\u001bu¥ø©Oz<7|ÃÓf®\\u001bø\\u001bê3g.Ó±.¼eueô©ñg\\u001dܱÚjWÆ7ry-ê²/Ìê+ÜÔ\\u001fìf[ðÍS娼ܱåeéWjOÃOÒÊ7è]Æ6ÕØº6s;ÃñG˱éMãKºZæÚ\\u001e¹GêU\\u001f|èrv¸vqÖVô9nnÆè\\u001fÅ\\u001fKºµ¬º\\u001eµð/KW9ÙjÎU6ìÉ\\u001f\\u001eÕG;èÜi¼\\u001e^ávù£=¥3Ü3ktytºKÎòtÓ\\u000fº:^-µÑåfµYváòONO-ÙUµÆË3µ±¶©n<§ò'
- def analyze_data(data):
- frequency = Counter(data)
- total_chars = sum(frequency.values())
- expected_frequency = total_chars / len(frequency)
- entropy = -sum((freq / total_chars) * math.log2(freq / total_chars) for freq in frequency.values())
- print('Entropy:', entropy)
- print('Character Frequency:')
- for char, freq in frequency.items():
- print(f'{char}: {freq}')
- # Known file headers (magic numbers)
- file_signatures = {
- b'\x89PNG': 'PNG Image',
- b'GIF8': 'GIF Image',
- b'\xFF\xD8': 'JPEG Image',
- b'%PDF': 'PDF Document',
- b'PK': 'ZIP Archive',
- b'RIFF': 'WAV/AVI File',
- b'\x7FELF': 'ELF Executable',
- b'\x42\x5A': 'BZ2 Compressed',
- }
- # Check for file signatures
- for signature, file_type in file_signatures.items():
- if data.encode('utf-8').startswith(signature):
- print(f'Identified file format: {file_type}')
- return
- print('File format could not be identified.')
- # Frequency Test
- freq_deviation = {char: freq - expected_frequency for char, freq in frequency.items()}
- print('Frequency Test Deviation:')
- for char, deviation in freq_deviation.items():
- print(f'{char}: {deviation}')
- # Runs Test
- runs = 0
- last_char = None
- for char in data:
- if char != last_char:
- runs += 1
- last_char = char
- print(f'Runs Test: {runs} runs found.')
- # Chi-Squared Test
- chi_squared = sum((freq - expected_frequency) ** 2 / expected_frequency for freq in frequency.values())
- print(f'Chi-Squared Test Statistic: {chi_squared}')
- # Extract features
- features = {'entropy': entropy}
- features.update(frequency)
- df = pd.DataFrame(list(features.items()), columns=['Feature', 'Value'])
- print('Extracted Features:')
- print(df)
- # Visualize character frequencies
- plt.figure(figsize=(12, 6))
- sns.set_style('whitegrid')
- sns.barplot(x=list(frequency.keys()), y=list(frequency.values()))
- plt.title('Character Frequency Distribution')
- plt.xlabel('Characters')
- plt.ylabel('Frequency')
- plt.xticks(rotation=90)
- plt.tight_layout()
- plt.show()
- # Visualize entropy
- plt.figure(figsize=(8, 4))
- sns.set_style('whitegrid')
- plt.plot([entropy], marker='o')
- plt.title('Entropy Visualization')
- plt.xlabel('Segment')
- plt.ylabel('Entropy')
- plt.grid()
- plt.show()
- # Call the analyze_data function
- analyze_data(data)
Add Comment
Please, Sign In to add comment