Я пришел сюда с небольшой проблемой (извините за мой английский, это не мой родной язык).
У меня есть небольшое вредоносное ПО. проект в школе, во всем мире у меня есть кейлоггер, который создает файл, а затем шифрует содержимое этого файла с помощью шифрования RC4. (ниже два примера различного содержания этого файла)
Первый
Код: Выделить всё
========================
î³É†"Û4ZôßaV0%í;ËüüòaÐAiúˆcdÖ&
Код: Выделить всё
========================
ä¡Çš3µ{²agÄ}W8%í–YœèáŒ9¯ŽW‰‚”&ÂIAžŠmá'8V¡Uñši&Ædà·…í^ê¥>´©ÍjÌ{
ŒFÔ¿%ïÆñyFÎ3x°º“A)o4´´‡—ÆéâùyÕ p‑@®á÷Lì-»›ys‘ñî“wõl„/•+
w×jc´E"ؾ‑øSG,Üo`ürx;¼¡T#üdÊ-‡k«G‘å”b¿+†]Ù©–f:^É( ÁË èPàv8¹|籟D7…ÁSgœÛÚjá"æ‡=I•Âa|âOÄÝ\Ùþׯçð©Ð¨Û•Øâ¿tù5¾à…y¸Æy
========================
‰Î$œk{²aΞ:Xyc¢“ðÆ¯¨ÉxéÁR ËÌ~Ž
========================
IéÓíq3C¦_Å)$Ãü¥Âƒ7Ð&èIΞ:XycjõúØ·v¯ìzëà—'ì`
========================
±Öšk{ð,•Ã{V4#
========================
ü§ÎâK³[’2…×bx2|p‚³ÐæˆéXÉár ëì^ iÈòãˆK7Ï4àZG¯
‰—¥ÃpÂTÅι Âu‚HÚ±+ïÈñýj«=v¾´O'a°Ä߉—ÆéìùyÕ ž@®á÷Bì#»›w}‘þã“wûl„/›% yÙdmºK"ؾ‑ùPI"Üo`ürx;¼¡T#ü
========================
========================
õ¡‹Ñ$Ý:þ;‡›iT|É9ZlcÒCkøŠafÔ$ãB™izl*Wò¾ójÐÃÄ
========================
========================
Поэтому моей целью было расшифровать содержимое файла, чтобы увидеть, какие данные записывает кейлоггер, поэтому вот мой код на Python (на основе страницы RC4 в Википедии).
Код: Выделить всё
#!/usr/bin/env python
class WikipediaARC4:
def __init__(self, key = None):
self.state = list(range(256)) # initialisation de la table de permutation
self.x = self.y = 0 # les index x et y, au lieu de i et j
if key is not None:
self.init(key)
# Key schedule
def init(self, key):
for i in range(256):
self.x = (ord(key[i % len(key)]) + self.state[i] + self.x) & 0xFF
self.state[i], self.state[self.x] = self.state[self.x], self.state[i]
self.x = 0
# Générateur
def crypt(self, input):
output = [None]*len(input)
for i in range(len(input)):
self.x = (self.x + 1) & 0xFF
self.y = (self.state[self.x] + self.y) & 0xFF
self.state[self.x], self.state[self.y] = self.state[self.y], self.state[self.x]
output[i] = chr((ord(input[i]) ^ self.state[(self.state[self.x] + self.state[self.y]) & 0xFF]))
return ''.join(output)
if __name__ == '__main__':
test_vectors = [['If you want to keep a secret, you must also hide it from yourself', 'î³É†"Û4ZôßaV0%í;ËüüòaÐAiúˆcdÖ&']]
for i in test_vectors:
print(i[0])
print(WikipediaARC4(i[0]).crypt(i[1]))
Код: Выделить всё
If you want to keep a secret, you must also hide it from yourself xBë⁃ìÖú½ÜûuåÐÅÙrJM©[&$5ȿÅk
Спасибо, ребята!
Примечание: два изображения RC4 во вредоносном ПО
InitRC4
callRC4
Подробнее здесь: https://stackoverflow.com/questions/788 ... ng-the-key