Giter Site home page Giter Site logo

plctool's Introduction

PLCTool - A PRIME/DLMS graphical swiss-knife

This repostory contains the source code of PLCTool, a Qt-based graphical tool used to analyze and debug PRIME / DLMS-based smart-meter networks, with special focus on the security of these deployments.

Currently, we support GNU/Linux and probably other Unix-based environments. Windows support is on its way.

This tool was presented in the talk Hacking Smart Meters of the RootedCON 2022, during which its use with the ATPL360-EK evaluation kit to send and receive data in PLC networks was demonstrated.

Leave it running during a full 24-hour cycle and click on the Credential Logger button. If the PRIME you are in is not particularly secure, you may be able to see a few low-level-security DLMS passwords in the credential logger.

Plugin support

Plugin build and usage guide can be found here: PLCTool plugin support

Sample plugins can be found here: PLCTool-Plugins

Build

Build instructions and a usage guide here: PLCTool, the Swiss army knife of smart meters

Note that in order to build PLCTool, you will need:

  • A suitable C++ compiler (gcc 10.3 or higher)
  • Qt 5 development files, version 5.9.1 or higher

plctool's People

Contributors

antoniovazquezblanco avatar jesusgomezmoreno avatar tarlogicsecurity avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plctool's Issues

PLCTool funciona en una VM?

Hola!

He compilado todo tal y como se comenta en las instrucciones (tanto Candleblow en la placa base) y compilado PLCTool en una máquina virtual, pero me queda la inquietud de saber si funciona correctamente en un entorno virtual o mejor en un host fisico?

gracias!

slds,

No se realiza envio de tráfico

Buenas tardes, un compañero y yo estamos intentando lanzar el BlinkAttack pero siempre salta el tiemout. Decidimos coger una segunda placa con Candlebow y otro ordenador con PLCTool para poder ver el tráfico que se mandaba al ejecutar el BlinkAttack, pero tras ejecutarlo no vimos ningun tipo de tráfico DLMS capturado. Hemos usado tanto las versiones de PLCTool como de BlinkAttack que se encuentra en la release como la ultima actualización del repositorio.

Muchas gracias por su trabajo y espero que puedan ayudarnos

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

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.

PLCTool doesn't compile

Following the tutorial from your website to compile PLCTool i have encountered this error, after executing make inside PLCTool folder downloaded by github.

Makefile:2319: warning: overriding commands for target `moc_MainWindow.cpp'
Makefile:1778: warning: ignoring old commands for target `moc_MainWindow.cpp'
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -O2 -std=gnu++1z  -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -mmacosx-version-min=12 -Wall -Wextra -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -Igurux/include -I/usr/local/lib/QtWidgets.framework/Headers -I/usr/local/lib/QtGui.framework/Headers -I/usr/local/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/AGL.framework/Headers -I/usr/local/share/qt/mkspecs/macx-clang -F/usr/local/lib -o Attack.o Attacks/Attack.cpp
In file included from Attacks/Attack.cpp:30:
In file included from ./Attacks/AttackFactory.h:33:
In file included from ./Attacks/Attack.h:33:
In file included from ./PRIME/PrimeAdapter.h:33:
In file included from ./Topology/Adapter.h:36:
In file included from ./Topology/SubNet.h:36:
In file included from ./Topology/Node.h:35:
./Topology/StringParams.h:44:5: error: unknown type name 'ulong'; did you mean 'long'?
    ulong asULong(void) const;
    ^~~~~
    long
1 error generated.
make: *** [Attack.o] Error 1

PLCTool en Windows?

Buenas!

Por otra parte me gustaría saber si es posible compilar y ejecutar PLCTool en un sistema operativo basado en Windows?

gracias,

slds,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.