Poste unter der schwarzen Flagge oder Da ich deinen Videokurs nicht auf den Tracker gesetzt habe

kapitän_flint.jpg

Hallo Habr! In schwierigen Zeiten leben wir, nicht wahr? Die Menschen sind egoistisch, erkennen den Wert der Werke anderer Menschen nicht an und kommen gerne zu allem, was auf einmal fertig ist. Geistiges Eigentum scheint für viele im Allgemeinen nichts anderes als ein bürokratischer Witz zu sein: „Wie kommt es, dass Informationen frei sein sollten, weil sie IN-FOR-MA-QI-I sind !!! 11“. Ich stimme zu, im Idealfall ist das so. Diese Anarchien von Ihnen, die rebellischen Stimmungen und Philosophien von Hackern / Piraten im Untergrund, die die Rechte gewöhnlicher Menschen schützen, sind mir nicht fremd. Das Paradoxe ist jedoch, dass wahre Gerechtigkeit auch darin besteht, alle für ihre Arbeit und ihre Verdienste zurückzuzahlen. In den meisten Fällen ist Piraterie also ein antagonistisches Unternehmen. Aber hier hat mich die von einem so wunderbaren Anbieter wie InfoProtector vorgeschlagene Politik der Erbringung von Dienstleistungen zum Schutz des geistigen Eigentums aufrichtig verärgert.

Unter dem Schnitt fiel die Geschichte, wie ich einen kostenpflichtigen Videokurs gekauft hatte, ins Wanken, nachdem mir klar wurde, dass ich die Videos nicht mehr speichern konnte, um sie in Zukunft erneut anzusehen. Ich wurde wütend auf diejenigen, die diese quasi-schützende Software versteckt hatten (die unter anderem gnadenlos ist) hinkt und frisst eine Menge Maschinenressourcen) und beschloss, die Gerechtigkeit ein wenig wiederherzustellen ... Natürlich ohne gegen das Gesetz zu verstoßen. Amen.
HAFTUNGSAUSSCHLUSS. Alle folgenden Artikel wurden zu Forschungszwecken veröffentlicht und sollen eine ausschließlich pädagogische Funktion erfüllen. Der Autor ist nicht verantwortlich für die rechtswidrige Verwendung von Informationen aus diesem Beitrag und drängt in keinem Fall darauf, sie als "Handlungsleitfaden" zu betrachten.

Wie war es


Es war ein freies Wochenende und ich beschloss, das ehrlich verdiente XXXX p auszulegen. bei einem fünfstündigen Videokurs. Wir werden es den „Auffrischungskurs für den Catering-Mitarbeiter“ nennen, damit es keine Parallelen gibt. Im Allgemeinen bin ich kein Befürworter der Wahrnehmung von Informationen durch Videokurse (oh, sehr kontraproduktiv), aber ich konnte nicht direkt widerstehen - ich wurde Opfer bunter Werbebanner.

Ich bezahlte, ein Brief flog in die Mail, der Links enthielt, um vom InfoProtector-Randomizer erfundene Materialien (Links) herunterzuladen und an ein nahe gelegenes CDN auszuspucken. Im Hauptteil des Briefes befindet sich die Dankbarkeit des Autors für den Kauf und der Registrierungsschlüssel, mit dem vorgeschlagen wurde, den Kauf zu aktivieren.

Laden Sie das Archiv herunter. Der Archivordner. Die ausführbare Datei befindet sich im Ordner. In der ausführbaren Datei befindet sich ein Ei. Ich starte exe'shnik - hier haben sie mir die ganze Wahrheit dargelegt, was in einer kostenlosen Nacherzählung ungefähr so ​​klingt (mit nasaler Stimme gelesen):
InfoProtector, ein digitaler Informationsschutzmechanismus, wurde auf diesen Videokurs angewendet. Für den ersten Start (siehe „Produktaktivierung“) benötigen Sie einen Internetzugang. Das Ansehen von Videos ist nur über unser Programm und unseren Player möglich. Die Installation des Videokurses ist nur auf zwei Computern möglich (der Videokurs ist an die Konfiguration der Betriebssystem- / Hardwareumgebung gebunden, wie sich später herausstellt).

Zu diesem Zeitpunkt war ich ein wenig verärgert. Das heißt, sie nannten mich nicht nur von der Tür aus eine unehrliche Person, die nur der Monetarisierungsarbeit eines anderen beraubt würde, sondern auch die Rate, für die ich einen angemessenen Betrag gezahlt habe, würde mir nur bis zur Neuinstallation des Systems zur Verfügung stehen.

"Es wird nicht funktionieren", entschied ich und begann eine Reihe von Experimenten.

InfoProtector-Einschränkungen


Um keine Zeit umsonst zu verschwenden, habe ich mich zunächst an das World Wide Web gewandt, um herauszufinden, dass die Leute bereits über den Schutzmechanismus dieser Typen nachgedacht hatten (alle Feinheiten der Schutzarbeit wurden natürlich nicht bekannt gegeben).

Was ich herausgefunden habe:

  1. Der Aktivierungsschlüssel wird bei der Bezahlung des Kurses zufällig generiert und dient als authentifizierter Server, der dem Client bei Erfolg einen AES-Schlüssel sendet, um die vom benutzerdefinierten Player des Unternehmens verfügbaren Videomaterialien zu entschlüsseln. Das Umkehren der Anwendung ist lang und zeitaufwändig (d. H. Für diese Art von Aufgabe unpraktisch), daher habe ich beschlossen, diesen Pfad zu verlassen.
  2. Die Verwendung von Bildschirmaufzeichnungstools wird auf verschiedene Weise rücksichtslos blockiert: Sie können den Player und einen beliebigen Bildschirmfänger nicht gleichzeitig auf demselben Host starten, da das Programm laufende Prozesse anhand ihrer Metadaten erkennt: Fenstertitelnamen; Beschreibung der ausführbaren Dateien; Namen von Anbietern, die in exe'shniki-Erfassungsanwendungen eingenäht sind; Selbst ein Browser, der auf einer Seite geöffnet wurde, deren Name beispielsweise das Wort "Fraps" enthält, ist Gegenstand einer Warnung und eines Herunterfahrens des Players.
  3. Sandboxen, virtuelle Maschinen und Streaming-Inhalte von Remoteverbindungen (rdesktop, RAdmin, TeamViewer) sind ebenfalls keine Option - intelligente Software kann sie im Laufe der Jahre erkennen und sich bei jeder Gelegenheit selbst töten.

Trotz der letzten beiden Punkte bleibt der realistischste Angriffsvektor die Bildschirmaufzeichnung, die auf verschiedene Arten implementiert werden kann:

  1. Suchen Sie ein Erfassungsprogramm, dessen Name / Produzent / Beschreibung keine Beacon-Wörter enthält, die InfoProtector nicht kennt und die letztere daher nicht auslösen. Nachteile: lang, langweilig und keine Tatsache, was im Prinzip machbar ist.
  2. Suchen Sie ein Open Source-Produkt mit den erforderlichen Funktionen und kompilieren Sie Ihre Version der Bildschirmaufnahme, indem Sie in der Quelle alles ersetzen, was theoretisch für den InfoProtector-Schutz verdächtig erscheint. Nachteile: lang, langweilig, zeitaufwändig (normalerweise sind solche Projekte ziemlich umständlich, bestehen aus Hunderten (?) Dateien und haben jede Menge Abhängigkeiten in den Quellen, sodass nur Strg-H nicht funktioniert. Sie müssen es nicht bearbeiten, damit Mimikatz Windows Defender nicht schneidet).
  3. Schreiben Sie Ihre Entscheidung in ein Skript, um nicht mit einer kompilierten ausführbaren Datei unbekannter Art zu riskieren (es ist nicht bekannt, was diese Infektion aussagt), die die triviale Funktionalität implementiert, schnell Screenshots aus einem ausgewählten Bereich des Bildschirms zu erstellen (zum Glück erlaubt InfoProtector dies), und schreiben Sie sie separat auf Soundtrack, der sich auch als legitim und so einfach wie möglich herausstellte.

Die Minuspunkte des dritten Absatzes wurden nicht gefunden, sodass Sie fortfahren können.

Screenshot des Planeten!


Zunächst: Lassen Sie uns herausfinden, wie Sie den Prozess der Erstellung einer Wolke von Screenshots mithilfe eines Skripts automatisieren können. Dies sind natürlich: Python und mehr OpenCV und mehr MSS und mehr PIL .

Der Prozess ist sehr einfach:

  1. Stellen Sie die Größe des Player-Fensters auf die Auflösung des gewünschten Ausgabevideos ein (es ist logisch, den Platz für die Skriptsteuerelemente zu berücksichtigen - beispielsweise ein Fenster mit einem Terminal, das nicht in den Aufnahmebereich fallen sollte). Dies kann mit solch einer wunderbaren Software geschehen.
  2. Wir positionieren das Player-Fenster so, dass es am einfachsten zu erklären ist - die untere rechte Ecke des Bildschirms (ich denke, das mit den Bildschirmrändern verknüpfte Referenzsystem ist die bequemste Option).
  3. Lassen Sie uns das bereits geschriebene Skript (das etwas niedriger sein wird) einstellen, um Screenshots dieses Bereichs zu machen.
  4. Wir berühren dieses umständliche System während der gesamten Videowiedergabe nicht.

Skript unter dem Spoiler:

fckInfoprotector.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Usage: python3 fckInfoprotector.py <WIDTH> <HEIGHT>

import sys

import numpy as np
import cv2
from mss.windows import MSS as mss
from PIL import Image


class Capturer:

	def __init__(self, w, h, resolution='1080p', fps=24.975):
		if resolution == '1080p':
			self.monitor = {
				'top': 1080 - h,
				'left': 1920 - w,
				'width': w,
				'height': h
			}

		elif resolution == '1440p':
			self.monitor = {
				'top': 1440 - h,
				'left': 2560 - w,
				'width': w,
				'height': h
			}

		else:
			raise ValueError('Unsupported monitor resolution')

		self.sct = mss()

		self.vid = cv2.VideoWriter(
			'output.avi',
			cv2.VideoWriter_fourcc(*'XVID'),
			fps=fps,
			frameSize=(
				self.monitor['width'],
				self.monitor['height']
			)
		)

	def mainloop(self):
		while True:
			sct_img = self.sct.grab(self.monitor)
			sct_img_size = (sct_img.width, sct_img.height)

			img = Image.frombytes(
				'RGB',
				sct_img_size,
				sct_img.rgb
			)

			frame = cv2.cvtColor(
				np.array(img),
				cv2.COLOR_BGR2RGB
			)

			self.vid.write(frame)


if __name__ == '__main__':
	if len(sys.argv) != 3:
		print(f'Usage: {sys.argv[0]} <WIDTH> <HEIGHT>')
		sys.exit()

	w, h = (int(x) for x in sys.argv[1:3])
	capturer = Capturer(w, h, fps=50.0)

	try:
		capturer.mainloop()
	except KeyboardInterrupt:
		print('Interrupted')



: Windows .

Windows 7: -> -> -> -> -> « »:

1.png

, :

2.png



, , . VirtualDub.

:

3.png

:

4.png

, . . . , , 50- ( , ) $X$, $X$ :

$X=captured\_video\_duration\times 50\div original\_video\_duration$


5.png

, , .

F7! .


? .

-, , . -, , . , .

-, : ( NVIDIA, !), , , , , «», ?

-, : « DVD- !». , . , , ( ), , .

: , , -, (, ), , . , ().

, , – .

-, !

Source: https://habr.com/ru/post/de449970/


All Articles