• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

229
Views
Creando Bit Array en Powershell/C# a partir de enteros

Estoy tratando de aplicar ingeniería inversa a la base de datos de un juego y he llegado a un obstáculo.

Puedo cargar todas las tablas/campos/registros, sin embargo, estoy atascado cuando se trata de convertir los valores de registro a hexadecimal o bits

los valores (en juego) son los siguientes: (15 bits) 192 - (10 bits) 20 - (5 bits) 19 - (5 bits) 2

En el archivo db, muestra 00 C0 - 00 0A - A6 - 00

Esto es extraño, porque solo el primer valor (00 C0) es el mismo en Hex (192)

Los otros valores son diferentes, supongo que esto se debe a que no son bytes completos (10 y 5 bits respectivamente), por lo que debe estar usando una matriz de bits.

Esta suposición se prueba aún más cuando cambio el valor final de 2 a 31. Los últimos 2 valores en el db se cambian y la cadena hexadecimal se convierte en 00 C0 - 00 0A - E6 - 07

Entonces, ¿cuál es la mejor manera de colocar estos 4 enteros en una matriz de bits en PowerShell para poder tratar de determinar qué está pasando aquí? Si no es obvio para los programadores más experimentados lo que está en juego aquí. Si es necesario, también podría usar C #, sin embargo, tengo menos experiencia.

Gracias

over 3 years ago · Santiago Trujillo
1 answers
Answer question

0

No estoy seguro de lo que quieres lograr. Las palabras de 5 bits son literalmente extrañas. Podría ser que aquí no haya una conversión clara sino algo así como un hash . De todos modos, técnicamente podrías contar de 0 a 2^35 - 1 y meter eso en tu juego y buscar el resultado en tu base de datos.

Déjame darte algunos métodos de conversión:

A la matriz de bits:

 $Bits = [convert]::ToString(192, 2).PadLeft(15, '0') + [convert]::ToString( 20, 2).PadLeft(10, '0') + [convert]::ToString( 19, 2).PadLeft( 5, '0') + [convert]::ToString( 2, 2).PadLeft( 5, '0') $Bits 00000001100000000000101001001100010

Y atrás:

 if ($Bits -Match '(.{15})(.{10})(.{5})(.{5})') { $Matches[1..4].Foreach{ [convert]::ToByte($_, 2) } } 192 20 19 2

Para Int64:

 $Int64 = [convert]::ToInt64($Bits, 2) $Int64 201347682

a bytes:

 $Bytes = [BitConverter]::GetBytes($Int64) [System.BitConverter]::ToString($Bytes) 62-52-00-0C-00-00-00-00

Tenga en cuenta que la lista de bytes está en orden inverso:

 [convert]::ToString(0x62, 2) 1100010
over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error