|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 348
|
Controllo su seriale hard disk
Ciao a tutti,
ho un programmino (non creato da me) su ubuntu, è una specie di app che gira su tomcat con pagine jsp. Siccome dovrei sostituire l'SSD della macchina con uno più capiente, ho clonato il disco con clonezilla. L'avvio avviene correttamente ma ad un certo punto si blocca e mi dà un errore di sicurezza. Ho provato a clonare pure con DD e pure su un SSD preciso identico ma l'errore è sempre lo stesso. Il problema grosso è che il programmatore che ha creato questo accrocchio non lavora più, oltretutto è pure irreperibile, per cui non ci sono speranze di chiedergli come l'abbia creato. Io penso ci sia un controllo sul numero seriale del disco... altre idee? Grazie a tutti! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Ma quindi non hai il file del pacchetto di installazione?
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 348
|
No, purtroppo non ho in mano nulla... non so nemmeno come sia installato.
E' tutto in una sottodirectory di /home e ci sono file .sh, .obj, e ovviamente .jsp e fin qui, aprendoli qualcosa ci capisco ma non trovo nessun controllo. Ci sono anche 3 ulteriori subdirectory: /app /lib /util con alcuni file .class .jar e .so che ovviamente non riesco ad editare. Grazie, a presto. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Possibile che non ci sia qualche altro file di configurazione, magari un bellissimo .conf ?
![]() Se c'è probabilmente è da qualche altra parte... dentro /etc ? Troppo facile? Sperando che questo presunto controllo di seriale / uuid, non sia hard-coded. Non ho mai usato tomcat, ma c'è anche un database?
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ |
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: Feb 2002
Messaggi: 348
|
Quote:
Penso ci sia un database, non ho visto mySQL o cose simili ma devo verificare bene. Quote:
Non è il secure boot purtroppo... il programma si avvia fino a questo famigerato controllo, dopodiché si blocca... quindi sicuramente è un controllo nel software. Faccio un passo indietro: visto che come detto il clone è identico, secondo voi è sicuro che sia un controllo sul seriale del disco o potrebbe essere qualche altro tipo di controllo (non so, UUID, hash o altre cose...)? Grazie a tutti. |
||
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Eh qui purtroppo si tratterebbe di fare reverse engineering .
Se invece tenessi il vecchio SSD e montassi il nuovo nelle cartelle dove ti serve spazio? Insomma fai un po' di overlay nelle cartelle che sai che crescono.
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 20025
|
Quote:
![]()
__________________
Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza (O.W.) |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Il presunto controllo potrebbe anche essere effettuato semplicemente dallo script di avvio.
Controllerei su /etc/init.d/ se si vede qualcosa nel relativo script di avvio, provando anche ad avviare il programma manualmente per vedere se viene fuori qualche errore più specifico. Inoltre controllerei su /var/log/ se c'è qualche log che riporti il problema e dia qualche indizio.
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 348
|
Ciao a tutti,
ho guardato dappertutto ma non ho trovato nulla. A questo punto il sospetto è che sia compilato in qualche .class Ho decompilato alcuni files e, come già avevo intuito dal log, ho scoperto che c'è un securitycheck che può assumere valore 0 o -1. Quando assume valore 0 tutto ok, quando è -1 blocca l'esecuzione. Ho visto nel file principale che spesso c'è un controllo su questa variabile, esempio: Codice:
if (Configuration.getSecurityCheck() == 0) { Bootstrap.startThread(); } Codice:
if (Configuration.getSecurityCheck() != 0) { SocketListener.showSecurityViolation(); } Codice:
public static int getSecurityCheck() { if (DEBUG) { securityCheck = Integer.valueOf(0); } if (securityCheck == null) { if ((model.equals("fox-g20")) || (platform.equals("ARM-BeagleBone"))) { securityCheck = Integer.valueOf(0); } else { File f = new File("/home/programma/eseguibile"); if (f.exists()) { securityCheck = Integer.valueOf(new ShellInterpreter().exec(f.getAbsolutePath(), new String[] { "" })); } else securityCheck = Integer.valueOf(-1); } log("Configuration.getSecurityCheck - securityCheck is " + securityCheck); } return securityCheck.intValue(); } } |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Si, la chiave è qui credo.
Se si capisce che fa questo programma magari si riesce a correggere il comportamento, sarebbe la cosa migliore. Bisogna vedere se è compilato o no, e se ha qualche file di configurazione. Altrimenti bypasserei il controllo con questo programma, e lascerei il resto dei controlli del securitycheck.
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 348
|
Leggendo questo IF
Codice:
if (f.exists()) { securityCheck = Integer.valueOf(new ShellInterpreter().exec(f.getAbsolutePath(), new String[] { "" })); } else securityCheck = Integer.valueOf(-1); Ultima modifica di Mr Carlo : 25-07-2017 alle 08:45. |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Quote:
Leggi meglio il codice. Se il file esiste viene eseguito e viene assegnato alla variabile il valore che il programma resituisce. Se il file non esiste (blocco else) questo controllo non può venire eseguito, e alla variabile viene assegnato un valore arbitrario di -1. Se pensi che quel controllo non ti serva potresti semplicemente cancellare/rinominare il programma, e cambiare a piacimento il valore che c'è nel blocco else.
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ Ultima modifica di DooM1 : 25-07-2017 alle 13:34. |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 348
|
Ho capito.
Non ho idea circa cosa faccia l'eseguibile, a parte restituire il valore che poi viene processato dall'if. Altrimenti, creare un eseguibile che restituisca il valore che vuole l'if? |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:27.