TarlogicSecurity / PLCTool

GNU General Public License v2.0
145 stars 55 forks source link

Problema compilación última versión y más. #2

Closed hamdycam closed 1 year ago

hamdycam commented 1 year ago

Antes de nada, gracias por vuestro trabajo, me parece muy interesante, todo muy bien explicado y además puede resultar útil para conexiones tipo "intranet" como es nuestro caso. Cada día menos usuarios comparten de forma altruista sus avances/logros.

Paso a describir la problemática.

Utilizamos en nuestro día a día unos meter orbis para controlar el consumo de nuestras máquinas y así analizar el coste que generan. para ello utilizamos un lector óptico y un software muy básico con comunicación serial y solicitud de información que luego guardamos internamente para realizar cálculos de consumo, picos, etc.

Al leer vuestra noticia sobre pctool, nos hemos arriesgado a adquirir el programador y el plc, pensando que seríamos capaz de leer nuestros contadores por el protocolo prime y así poder llegar a integrarlo de forma automática en nuestros procedimientos.

He aquí el problema que hemos tenido, primeramente con la versión inicial, compilamos sin más el software (nuestros conocimientos son en Windows) pero ayudados por vuestros post y Google para errores en complementos faltantes lo hemos instalado y ejecutado sin más. Nos hemos encontrado con el problema que aún cambiando los permisos y ejecutando como sudo, este no nos dejaba guardar los log para poder visualizar posteriormente, el resto funciona aparentemente todo. una vez identificado nuestro meter (ya que nos salen otros que supongo serán los de la red externa que se nos cuelan), y una vez identificada la clave que es la de defecto 00000001, hemos intentado ejecutar el plugin de reinicio para comprobar comunicación. El resultado ha sido siempre nulo. Hemos puesto cada parámetro siguiendo el manual y nada. Incluso hemos enviado a nuestro contador de suministro que también sale la contraseña en claro para probar y nada... Podemos ver en el log del CLI que si se crea la trama y supongo envía, pero no conseguimos resultados, ni esperando 5minutos..

hemos entonces intentado compilar la nueva versión que tiene el plugin separado pero nada, en esta no conseguimos resultado favorable con el make. es como que algo está mal en el code.

Podrían comprobar que estar versión compila correctamente? ha cambiado algo en las versiones de elementos necesarios para compilar?

Muchas gracias, linux nos cuesta.

Gracias y gran trabajo.

antoniovazquezblanco commented 1 year ago

Muchas gracias por tus palabras @hamdycam. Se agradecen mucho!

Para poder ayudarte necesito que me aportes información más concreta:

  1. ¿Cuál de los dos proyectos es el que está fallando? ¿PLCTool o PLCTool-Plugins?
  2. ¿Qué error está dando? ¿Podrías subir una captura o copiar y pegar el log de compilación?
hamdycam commented 1 year ago

Hola! perdón pero aún he llegado hace un rato del trabajo. en la versión primera publicada, la que tiene el ataque de prueba integrado, no consigo reiniciar el meter ni guardar el log, el resto de opciones funcionan perfectamente.

para intentar avanzar me he puesto a instalar la última versión del PLCTool (la que permite compilar paralelamente utilidades para el menú) para ver si el problema estaba en la versión, pero aquí no he conseguido hacer funcionar el make, siempre un error y la verdad se me escapa la compilación en linux. Os adjunto el log que me da el make guardado en un txt (algo me dice de que es un directorio en vez de un archivo), mañana espero llegar antes y hacer pruebas.

Muchas gracias make.txt

antoniovazquezblanco commented 1 year ago

Parece ser que en el último paso de la compilación, cuando el compilador intenta crear el archivo ejecutable final (PLCTool) se topa con que no puede hacerlo porque ya existe una carpeta con ese mismo nombre.

Para evitar situaciones como estas, recomendamos crear una carpeta en la que configuraremos el proyecto y lo compilaremos fuera de la carpeta original del código fuente:

cd <carpeta_del_repositorio>
mkdir -p build # Creamos la carpeta donde vamos a compilar
cd build # Nos movemos a ella
qmake ../.. PREFIX=/usr # Configuramos el proyecto de QT
make -j$(nproc) # Compilamos

Otra opción es que con Qt Builder abras el archivo PLCTool.pro y le des al botón de compilar.

En caso de fallo de nuevo, sería interesante una captura más amplia, con los comandos que se han ejecutado desde un repositorio limpio ya que facilitaría el proceso de depurar que está sucediendo. :)

hamdycam commented 1 year ago

Muchas gracias!!

hemos mejorado algo, gracias a tu código y la idea de compilar en otra carpeta me ha solucionado el problema y he conseguido hacer funcionar la última versión en mi pc, así que un problema menos.

Lo he ejecutado y bueno, parece que todo está ok, solo que sigue sin dejarme guardar el log en diferentes directorios(eso lo veré más adelante, ahora mismo voy a intentar avanzar en el blick attack)

por otra parte he intentado compilar el plugin, y tras varios intentos lo he conseguido pero se me cierra al ejecutar (me permite meter los datos y me funciona en enlace desde PLCTool), voy a intentar hacerlo nuevamente mañana y ver si avanzo algo.

lo que me ha llamado la atención es que me daba fallo con el make, para ser más exactos no me reconocía las funciones

asByteVector() asHexULong();

la primera la he cambiado por la antigua que teníais en la función integrada en la versión primera, primero declarando string y luego pasando a vector.

la otra por la función asULong

y una vez realizado estos cambios y el pach de instalacion PLCTool ha sido cuando el make ha funcionado.

Quiere decir esto que tengo alguna versión antigua de algún include?

Gracias

antoniovazquezblanco commented 1 year ago

Me alegro de que hayas sido capaz de compilar el programa finalmente @hamdycam!

Parece que en principio no existe el problema que originalmente reportaste en este Issue. Para problemas nuevos o distintos al original te recomiendo que abras un issue nuevo y pegues los logs de compilación completos o no podremos ayudarte sin más información.

Muchas gracias!