Publicar bajo la bandera negra, o como no puse tu curso de video en el rastreador

captain_flint.jpg

Hola Habr! En tiempos difíciles, vivimos, ¿no? Las personas son egoístas, no reconocen el valor de las obras de otras personas, les gusta llegar a todo listo de una vez. La propiedad intelectual para muchos en general no parece más que una broma burocrática: "¡¿Cómo es que la información debería ser gratuita, porque es IN-FOR-MA-QI-I !!! 11". Estoy de acuerdo, idealmente esto es así. Estas anarquías suyas, los estados de ánimo y filosofías rebeldes de piratas informáticos / piratas clandestinos, que protegen los derechos de la gente común, no son ajenos a mí. Pero la paradoja es que la verdadera justicia también es recompensar a todos por su trabajo y méritos, por lo que en la mayoría de los casos la piratería es una empresa antagónica. Pero aquí, la política de proporcionar servicios para la protección de la propiedad intelectual, propuesta por un proveedor tan maravilloso como InfoProtector, me causó una ira justa.

Debajo del corte, la historia de cómo compré un curso de video pago cayó en picado después de darme cuenta de que no podía guardar los videos para volver a verlos en el futuro, me enojé con aquellos que habían ocultado este software cuasi protector (que, entre otras cosas, es despiadado se atrasa y come muchos recursos de la máquina) y decidió restaurar un poco la justicia ... Sin violar la ley, por supuesto. Amén
Descargo de responsabilidad. Todo lo siguiente ha sido publicado con fines de investigación y está destinado a cumplir una función exclusivamente educativa. El autor no es responsable por el uso ilegal de la información de esta publicación y en ningún caso insta a percibirla como una "guía de acción".

Como fue


Fue un fin de semana gratis, y decidí diseñar el XXXX p honestamente ganado. en un curso de video de cinco horas. Lo llamaremos el "Curso de actualización para el trabajador de la restauración" para que no haya paralelos. En general, no soy partidario de la percepción de la información a través de lecciones en video (oh, muy contraproducente), pero no pude resistirlo directamente; fui víctima de coloridos carteles publicitarios.

Pagué, una carta voló al correo que contenía enlaces para descargar materiales inventados (enlaces) por el aleatorizador InfoProtector y escupió a un CDN cercano. En el cuerpo de la carta está la gratitud del autor por la compra y la clave de registro, que propuso activar la compra.

Descargue el archivo. La carpeta de archivo. El archivo ejecutable está en la carpeta. En el archivo ejecutable hay un huevo. Lanzo exe'shnik: fue aquí donde me explicaron toda la verdad, que en un recuento gratuito suena algo como esto (leer con voz nasal):
InfoProtector, un mecanismo de protección de información digital, se ha aplicado a este video curso; para el primer lanzamiento (lea "activación del producto") necesita acceso a Internet; ver videos solo es posible desde nuestro programa, desde nuestro reproductor; la instalación del curso de video solo es posible en dos computadoras (el curso de video está vinculado a la configuración del entorno del sistema operativo / hardware, como se verá más adelante).

En este punto, estaba un poco molesto. Es decir, no solo me llamaron desde la puerta una persona deshonesta que solo sería privada del trabajo de monetización de otra persona, sino que la tasa por la que pagué una cantidad decente estaría disponible para mí solo hasta que se reinstale el sistema.

"No funcionará", decidí y comencé una serie de experimentos.

Restricciones de InfoProtector


Para no perder el tiempo en vano, para empezar, recurrí a la World Wide Web para descubrir que la gente ya había descubierto el mecanismo de protección de estos tipos (por supuesto, no se revelaron todas las sutilezas del trabajo de protección).

Lo que logré averiguar:

  1. La clave de activación se genera aleatoriamente al pagar el curso y se utiliza para ser un servidor autenticado, que, si tiene éxito, envía al cliente una clave AES para descifrar los materiales de video disponibles del reproductor personalizado de la compañía. Revertir la aplicación lleva mucho tiempo (es decir, poco práctico para este tipo de tarea), por lo que decidí dejar este camino.
  2. El uso de herramientas de grabación de pantalla se bloquea despiadadamente de varias maneras: no puede iniciar simultáneamente el reproductor y ningún capturador de pantalla en el mismo host, porque el programa detecta procesos en ejecución con sus metadatos: nombres de títulos de ventanas; descripción de archivos ejecutables; nombres de vendedores cosidos en aplicaciones de captura de exe'shniki; incluso un navegador abierto en una página cuyo nombre contiene la palabra "Fraps", por ejemplo, también es objeto de una alerta y apagado del jugador.
  3. Los sandboxes, las máquinas virtuales y el contenido de transmisión desde conexiones remotas (rdesktop, RAdmin, TeamViewer) tampoco son una opción: el software inteligente puede detectarlos a lo largo de los años, matándose en cada oportunidad.

Pero a pesar de los últimos dos puntos, el vector de ataque más real sigue siendo la grabación de pantalla, que se puede implementar de varias maneras:

  1. Busque un programa de captura que no contenga palabras de baliza en su nombre / productor / descripción que InfoProtector no conozca y que, por lo tanto, este último no active. Contras: largo, aburrido y no un hecho, que en principio es factible.
  2. Encuentre un producto de código abierto que tenga la funcionalidad necesaria y compile su versión de la captura de pantalla, reemplazando en la fuente todo lo que pueda parecer sospechoso para InfoProtector en teoría. Contras: largo, aburrido y lento (por lo general, estos proyectos son bastante engorrosos, consisten en cientos (?) De archivos y tienen un montón de dependencias en las fuentes, por lo que solo Ctrl-H no funciona, no es necesario editarlo para que mimikatz no corte Windows Defender).
  3. Escriba su decisión sobre algo script para no arriesgarse con un archivo ejecutable compilado de naturaleza desconocida (no se sabe lo que dirá esta infección) que implementa la funcionalidad trivial de tomar capturas de pantalla rápidamente de un área seleccionada de la pantalla (afortunadamente, InfoProtector lo permite) y anótelo por separado banda sonora, que también resultó ser legítima y lo más simple posible.

No se encontraron las desventajas del tercer párrafo, por lo que puede continuar.

Captura de pantalla del planeta!


Primero: descubramos cómo automatizar el proceso de creación de una nube de capturas de pantalla usando un script. Por supuesto, estos son: Python, y más OpenCV , y más MSS , y más PIL .

El proceso es extremadamente simple:

  1. Establezca el tamaño de la ventana del reproductor igual a la resolución del video de salida que nos gustaría tener (es lógico tener en cuenta el lugar para los controles del script: una ventana con un terminal, por ejemplo, que no debe caer en el área de grabación). Esto se puede hacer con un software tan maravilloso.
  2. Colocamos la ventana del reproductor en una posición tal que encuentre cuál sería más fácil de explicar al guión: la esquina inferior derecha de la pantalla (creo que el sistema de referencia asociado con los bordes de la pantalla es la opción más conveniente).
  3. Configuremos un script ya escrito (que será un poco más bajo) para tomar capturas de pantalla de esta área.
  4. No tocamos este sistema incómodo durante la reproducción completa del video.

Guión bajo el 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/449970/


All Articles