La receta de chiva es la ideal para localizar el sketch en cuestión a partir de la comparación de sus binarios. Como te dice chiva la ruta del binario (.hex) del sketch que deseas comparar se obtiene, en las últimas versiones del IDE de arduino, al compilar manteniendo la tecla SHIFT. Haciendo esto te aparecerá la ruta entre los mensajes de compilación que se mostrarán en la ventana de mensajes de la parte inferior del IDE.
Un truquillo que uso yo, siempre que puedo, es utilizar la clase Serial en la función setup(), al comienzo del sketch, para mostrar un mensaje por consola con la versión del sketch y otros datos. Pero claro, se tienen que cumplir grosso modo unos requisitos:
- Llevar un control de versiones de un sketch. Tienes que tener todas las versiones del sketch y que el texto que se imprime corresponda realmente con cada versión.
- Que no necesite los pines 0 y 1 desde el principio del sketch para otros menesteres.
- Y que dispongas de suficiente memoria para ello. Hay veces que un sketch necesita toda la memoria y hay que escatimar el uso de Serial.
#define VERSION "Skecth v.1.3"
void setup(){
Serial.begin(9600);
Serial.println(VERSION);
}
void loop()
{
}
Si estos requisitos se cumplen pues no tienes más que mirar en la consola el mensaje que te aparece

y así podrás dirigirte al código fuente de tu sketch que tendrás almacenado.
Una cosa similar a esto, pero de forma externa y automática, con webservices, un gestor de base de datos en un sistema y alguna cosilla más la estuve usando para las pruebas que hice hace tiempo en el proyecto de 'arduino y la nube (cloud computing)'. Para que cuando los usuarios del 'sistema en cloud' subieran sus sketches el identificador devuelto del .hex compilado sirviese para localizar el fuente que lo había generado
Saludos.
coLe.