Programas de inicio en Windows 10

En ocasiones algunos programas o malware se resisten a desaparecer de la pestaña «Inicio» del administrador de tareas, tienen donde esconderse.
Deberemos revisar el el registro de Windows (regedit.exe) las siguientes rutas:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run

Y en el explorador de ficheros:
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
%Appdata%\Microsoft\Windows\Start Menu\Programs\Startup




Evaluar migración a .NET Core

Tarde o temprano nos encontraremos con la migración de frameworks/tecnologías y .NET no iba a ser una excepción. Utilizaremos la herramienta .NET Portability Analyzer para un primer vistazo a nuestras librerías y aplicaciones teniendo como objetivo aplicaciones multiplataforma, microservicios, dockers… en la nube.

Debemos tener claro antes de empezar, la recomendación general de Microsoft actualmente es utilizar .NET Core si tenemos que añadir nuevas funcionalidades en background, por el momento .NET Framework y .NET Core son complementarias. La mayor parte de las API de .NET Core se comparten con .NET Framework

Aclarado esto, con la extensión para Visual Studio 2019 instalada ya podemos iniciar el análisis que nos ayudará a identificar las dependencias externas. Dentro de la configuración de la extensión podemos fijar nuestro objetivo. Todas las acciones tienen su equivalente en línea de comandos.

Leer más

C# 9: propiedades iniciales y datos

Desde el año 2000 han sido muchas las modificaciones y mejoras en el lenguaje, a veces cuesta acostumbrarse a estas nuevas funcionalidades, veamos que nos depara 20 años después:

Es posible declarar el valor de propiedades en el momento de creación de un objeto, no es posible modificar a posteriori estos valores.

1
2
3
4
5
public class Vehiculo
{
    public string Marca { get; init; }
    public string Modelo { get; init; }
}

Por tanto, si todas las propiedades de un objeto con valores primitivos (int, double…) son de solo lectura (inmutables), nos acercamos a la definición de estructura (struct). Recordemos que las estructuras contienen valores y las clases referencias a valores, el ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Vehiculo
    public int Potencia; 
    public Vehiculo(int pot) 
    
        this.Potencia = pot; 
    
 
Vehiculo a = new Vehiculo(120); 
Vehiculo b = a; 
a.Potencia = 200; 
 
System.Console.WriteLine(b.Potencia);
Leer más

Actualización de osTicket con errores

Desde versiones previas 1.10.X a 1.12.X o posteriores aparecen errores con tablas ya creadas (seguramente de actualizaciones fallidas previas) en las que se muestra el error en el registro de la aplicación:

* @signature 86707325fc571e56242fccc46fd24466 
* @version v1.11.0 
* @title Add ticket referral * 
* This patch adds a table for thread referral as well as thread event states of referred and deleted 
*/ CREATE TABLE `cli_thread_referral` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `thread_id` int(11) unsigned NOT NULL,  `object_id` int(11) unsigned NOT NULL,  `object_type` char(1) NOT NULL,  `created` datetime NOT NULL,  PRIMARY KEY (`id`),  UNIQUE KEY `ref` (`object_id`, `object_type`, `thread_id`),  KEY `thread_id` (`thread_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 

Table 'XXX_thread_referral' already exists

Deberemos volver a recuperar los archivos y la base de datos de nuestra copia de seguridad, además de eliminar la tabla indicada, deberemos suprimir dos más, donde «XXX» es el prefijo de las tablas de nuestra instalación:

DROP TABLE XXX_thread_referral;
DROP TABLE XXX_queue_export;
DROP TABLE XXX_event;

Es recomendable eliminar posibles idiomas adicionales y dejar como predeterminado el inglés nativo. En el caso de instalaciones antiguas, la versión de PHP mínima es la 5.6.40 tras la actualización podemos cambiar a 7.1.33 o posterior.

Si nos encontramos con errores durante la actualización pero sin dejar rastro en el log de PHP y de la BBDD de la aplicación, las reglas del firewall de aplicaciones Modsecurity bloquean el proceso de actualización, deberemos permitir temporalmente, utilizar Atomic Standard en lugar de OWASP o añadir excepciones para la ruta del panel de gestión (SCP).

NOTA: Es posible revisar los detalles de las reglas aplicadas en el registro de Plesk/cPanel via web o en los directorios de registro, por ejemplo: %Plesk_dir%\ModSecurity\vhosts\GUIDXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\logs sería necesario deshabilitar la regla 920480

 

Message: Access denied with code 403 (phase 1). Match of "rx ^%{tx.allowed_request_content_type_charset}$" against "TX:1" required. [file "/Plesk/ModSecurity/rules/modsecurity_crs-plesk/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"] [line "944"] [id "920480"] [msg "Request content type charset is not allowed by policy"] [data "utf-8"] [severity "CRITICAL"] [ver "OWASP_CRS/3.2.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "OWASP_CRS"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/CONTENT_TYPE_CHARSET"] [tag "WASCTC/WASC-20"] [tag "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/EE2"] [tag "PCI/12.1"]
Action: Intercepted (phase 1)
Apache-Handler: IIS
Stopwatch: 1590421305747749 0 (- - -)
Stopwatch2: 1590421305747749 0; combined=0, p1=0, p2=0, p3=0, p4=0, p5=0, sr=0, sw=0, l=0, gc=0
Producer: ModSecurity for IIS (STABLE)/2.9.2 (http://www.modsecurity.org/); OWASP_CRS/3.2.0.
Server: ModSecurity Standalone
Engine-Mode: "ENABLED"

 

 

Errores post-instalación con Intel Unite

La instalación del software del Intel Unite, para permitir compartir pantallas y entornos de trabajo colaborativos compatibles con Intel vPro, termina correctamente pero es necesaria una configuración posterior del entorno más detallada. Debemos asegurarnos que el equipo contiene certificados SSL válidos dentro de la organización, bien con nuestra propia AC o externos.

Para realizar la autoconfiguración de equipos cliente podemos añadir registros DNS en nuestro servidor, añadimos una etiqueta TXT:

SERVICEURL=https://unite.midominio.com/IntelUnite/api&orgId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX&orgName=MI-ORGANIZACION

Nos facilitará algunos pasos de despliegue según la infraestructura de nuestra organización, en el caso del sevicio DNS de Windows Server:

Leer más