Determine la versión de Magento sin acceso a la base de código


22

¿Hay alguna manera de encontrar la versión de Magento que se está utilizando sin tener acceso al código del lado del servidor?

Por ejemplo, ¿cómo funciona este complemento?

https://chrome.google.com/webstore/detail/magento-version-check/aekpbnbbbgocohlbdpdfgghamedmplal

Mis pensamientos son verificar LICENSE.txto LICENSE_EE.txt. Al menos puede determinar CE vs EE.

También puede usar el año de copyright por defecto styles.csspara hacer una suposición.

¿Alguien más sabe una mejor manera?


3
Su propia herramienta parece ser bastante precisa ...
Peter O'Callaghan

Respuestas:


26

Magento 1.x

El aviso de copyright /skin/frontend/default/default/css/styles.cssya es un buen indicador.

Estos son los diferentes avisos de copyright para Magento CE:

Version             @copyright
------------------------------------------------------------------------------------------------
Magento 1.9         Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
Magento 1.8         Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
Magento 1.7         Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
Magento 1.6         Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
Magento 1.4.1-1.5   Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
Magento 1.4.0       Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
Magento 1.0-1.3     Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)

Para distinguir 1.4 y 1.5, debe hacer una diferencia real contra los archivos. Este repositorio espejo en GitHub podría ayudar:

https://github.com/OpenMage/magento-mirror/commits/magento-1.5/skin/frontend/default/default/css/styles.css

Magento 2.x

Para las tiendas Magento 2, obtienes la versión en una placa de plata siempre que el Magento_Versionmódulo no esté desactivado. Solo visita shop-domain.tld/magento_version. Salida de ejemplo:

Magento/2.1 (Community)

Sin embargo, no hay información sobre la versión exacta del parche.

Si el módulo de versión está deshabilitado o el acceso a esta URL está bloqueado, también puede verificar una hoja de estilo predeterminada como /static/frontend/Magento/blank/en_US/css/print.css. Pero hasta ahora, el aviso de copyright no dice mucho:

Version             @copyright
------------------------------------------------------------------------------------------------
Magento 2.0         Copyright © 2016 Magento.
Magento 2.1         Copyright © 2016 Magento.

¿Cómo puedo ver si Magento es CE o EE?
Vladimir Despotovic

Abra una URL que solo existe en EE
Fabian Schmengler

Como no sé qué URL solo existe en EE, vi que la diferencia entre EE y CE también está en la cantidad de campos en admin_role. En CE hay 7 campos, y en EE hay alrededor de 3 más, alrededor de 10 más o menos. También resolvió mi problema con la versión de edición de Magento.
Vladimir Despotovic

17

Si la tienda todavía tiene instalado el Magento Connect Module y no bloquea a propósito esa URL del acceso público, solo puede acceder a http://www.website.com / downloader, la versión se mostrará en la parte inferior según esta imagen.

Técnicamente creo que esta es la versión para el paquete Downloader, pero nunca he visto que no coincida con la versión general de Magento.

ingrese la descripción de la imagen aquí


Lo que significa que si va a downloader / Maged / Controller.php y observa que public static function getVersionInfo()hay una matriz que muestra la versión. Supongo que esta versión también corresponde a la versión de Magento.
Buttle Butkus

8

Puede usar hash MD5 de archivos públicos (imágenes, css, js) para identificar la versión.

Este depósito tiene una lista de hashes de archivos en js, mediay skincarpetas.

Aquí están los hashes únicos en jsonformato

{
    "skin/adminhtml/default/default/boxes.css": {
        "6aefb246b1bb817077e8fca6ae53bf2c": "CE 1.2.0, CE 1.2.0.1, CE 1.2.0.2, CE 1.2.0.3", 
        "84b67457247969a206456565111c456b": "CE 1.1.2, CE 1.1.3, CE 1.1.4", 
        "0902e89fb50b22d44f8242954a89300c": "EE 1.12.0.0", 
        "8a5c088b435dbcf1bbaac9755d4ed45f": "EE 1.12.0.1, EE 1.12.0.2", 
        "1cbeca223c2e15dcaf500caa5d05b4ed": "CE 1.7.0.0", 
        "d0511b190cdddf865cca7873917f9a69": "CE 1.1.1", 
        "a2c7f9ddda846ba76220d7bcbe85c985": "CE 1.2.1, CE 1.2.1.1, CE 1.2.1.2"
    }, 
    "js/mage/adminhtml/sales.js": {
        "a86ad3ba7ab64bf9b3d7d2b9861d93dc": "CE 1.0", 
        "d80c40eeef3ca62eb4243443fe41705e": "CE 1.5.0.1", 
        "95e730c4316669f2df71031d5439df21": "CE 1.1.0", 
        "bdacf81a3cf7121d7a20eaa266a684ec": "CE 1.5.1.0", 
        "ba43d3af7ee4cb6f26190fc9d8fba751": "EE 1.14.1.0", 
        "c8dd0fd8fa3faa9b9f0dd767b5a2c995": "CE 1.9.1.1", 
        "4422dffc16da547c671b086938656397": "CE 1.4.2.0", 
        "0e400488c83e63110da75534f49f23f3": "CE 1.3.2, CE 1.3.2.1, CE 1.3.2.2, CE 1.3.2.3, CE 1.3.2.4", 
        "48d609bb2958b93d7254c13957b704c4": "CE 1.6.1.0, CE 1.6.2.0", 
        "40417cf4bee0e99ffc3930b1465c74ae": "EE 1.11.2.0", 
        "5656a8c1c646afaaf260a130fe405691": "CE 1.8.1.0", 
        "17da0470950e8dd4b30ccb787b1605f5": "CE 1.1.5, CE 1.1.6", 
        "aeb47c8dfc1e0b5264d341c99ff12ef0": "EE 1.11.0.2", 
        "ec6a34776b4d34b5b5549aea01c47b57": "EE 1.10.0.2", 
        "a0436f1eee62dded68e0ec860baeb699": "CE 1.9.1.0", 
        "5112f328e291234a943684928ebd3d33": "CE 1.1.7, CE 1.1.8", 
        "7ca2e7e0080061d2edd1e5368915c267": "EE 1.10.1.1", 
        "a4296235ba7ad200dd042fa5200c11b0": "CE 1.6.0.0", 
        "9a5d40b3f07f8bb904241828c5babf80": "EE 1.13.1.0", 
        "3fe31e1608e6d4f525d5db227373c5a0": "EE 1.13.0.0, EE 1.13.0.2", 
        "26c8fd113b4e51aeffe200ce7880b67a": "CE 1.8.0.0", 
        "839ead52e82a2041f937389445b8db04": "CE 1.3.3.0", 
        "d1bfb9f8d4c83e4a6a826d2356a97fd7": "CE 1.3.1, CE 1.3.1.1"
    }, 
    "js/mage/adminhtml/product.js": {
        "e887acfc2f7af09e04f8e99ac6f7180d": "CE 1.3.0"
    }, 
    "skin/frontend/rwd/default/css/styles.css": {
        "bf6c8e2ba2fc5162dd5187b39626a3a0": "CE 1.9.0.1", 
        "5373978891051983da47ac5064b4b2b9": "EE 1.14.0.1", 
        "8a874fcb6cdcb82947ee4dbbe1822f3e": "CE 1.9.0.0", 
        "bd66fd43fecd7ca1e293226bb11e1658": "EE 1.14.0.0"
    }, 
    "js/prototype/validation.js": {
        "295494d0966637bdd03e4ec17c2f338c": "CE 1.4.1.0", 
        "d3252becf15108532d21d45dced96d53": "CE 1.4.1.1"
    }, 
    "js/mage/adminhtml/tools.js": {
        "86bbebe2745581cd8f613ceb5ef82269": "CE 1.7.0.1, CE 1.7.0.2", 
        "ea81bcf8d9b8fcddb27fb9ec7f801172": "CE 1.3.2.2", 
        "d594237950932b9a3948288a020df1ba": "CE 1.3.2.3, CE 1.3.2.4, CE 1.3.3.0"
    }, 
    "js/lib/flex.js": {
        "4040182326f3836f98acabfe1d507960": "CE 1.4.0.1", 
        "eb84fc6c93a9d27823dde31946be8767": "CE 1.4.0.0"
    }
}

Por ejemplo, si probamos la tienda de demostración de Magento

$ curl -s http://demo.magentocommerce.com/skin/frontend/rwd/default/css/styles.css | md5
8a874fcb6cdcb82947ee4dbbe1822f3e

Vemos que el hash corresponde a CE 1.9.0.0.

Con podría parecer

$url = 'http://demo.magentocommerce.com/';

foreach ((array)json_decode(file_get_contents('hashes.json')) as $file => $hash) {
    $md5 = md5(file_get_contents($url . $file));
    if (isset($hash[$md5])) {
        echo $hash[$md5];
        break;
    }
}

Tenga en cuenta que esto puede no funcionar si los archivos están minificados, parcheados, tienen diferentes finales de línea, etc.


4

Si tiene acceso al panel de administración, puede consultarlo en el pie de página para la versión de magento

De lo contrario, si no se cambia el permiso, puede consultar el archivo RELEASE_NOTES.txt para la versión de magento que puede determinar fácilmente si se trata de EE o comunidad


0

No , sería malo si se publicara públicamente. En cuanto a la seguridad, está bien no decirle todo a todos.

A veces, la funcionalidad frontend le dará una buena suposición. Debido a que algunas características se acaban de implementar desde la edición x. O las rutas se crean de una manera que es especialmente para una versión.

Lo mismo ocurre con los módulos, si tienen una funcionalidad de interfaz específica y enrutadores que los señalan o el uso del nombre de la clase, se puede adivinar fácilmente.

Sin embargo, puede hacer esto (todos necesitan un cierto nivel de acceso):

  • lado del servidor (echar un vistazo app/Mage.php) y comprobarapp/etc/modules
  • inicie sesión en el panel de administración y vea la versión en el pie de página
  • ejecute el servidor Magerun (puede hacer mucho más)
  • Utilice la llamada a la API magento.info

Como se mencionó en la pregunta, no tengo acceso del lado del servidor, por lo que esta respuesta no me funcionará.
Steve Robbins

0

Solía magescandeterminar una versión remota de Magento:

https://github.com/steverobbins/magescan

También puede buscar el nivel de parche, la información del servidor, los módulos instalados, el catálogo, el mapa del sitio, las rutas inalcanzables y, por supuesto, la versión. Es un PHP phar y se puede instalar con Composer.

Uso típico:

$ magescan.phar scan:all store.example.com
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.