8
votes

Comment se rendre au schéma de base de données d'une DB cachée?

Mon client est une pratique dentaire qui a acheté un logiciel de gestion de la pratique. Ce logiciel a été installé sur leur serveur local, y compris une base de données de patients, une planification et toutes sortes de dossiers médicaux. Maintenant, ils veulent que je répète des utilitaires pour eux qui ne sont pas fournis avec leur colis, et j'ai besoin de la possibilité d'interroger cette base de données.

J'ai essayé d'appeler le support technique des fabricants de logiciels ( Patterson / Eaglesoft ), et il est difficile de trouver quiconque qui comprend suffisamment la technologie pour répondre à mes questions. Pour autant que je sache, il n'y a pas d'API pour leur logiciel et ils sont naturellement réticents à me dire comment interroger la base de données directe, programmatisée. Ils ont une fenêtre de requête interactive, mais évidemment, ce n'est pas bon pour écrire des requêtes automatisées. Tout ce qu'ils laisseraient, c'est que quelque part il y a une dB SQL Server, mais les pilotes ODBC à se connecter sont des pilotes SQL partout (hein?).

J'ai donc cherché sur le serveur et n'a pas pu trouver de fichiers de base de données. Ensuite, j'ai découvert que l'installation crée une sorte de machine virtuelle exclusive, qui n'est visible que sur le logiciel Eaglesoft. Mais alors qu'ils ont été très bons pour isoler leur DB dans des couches d'obfuscation, ils ont laissé un pilote ODBC ouvert, ce qui est en effet une connexion SQL Anywhere.

Maintenant, après ce préambule fascinant et long, voici ma question: quelles requêtes puis-je exécuter cette connexion ODBC pour interroger le DB sur sa structure? S'il s'agit d'un serveur SQL DB sous Je pouvais utiliser la table SysObjects, mais je ne saisis pas complètement la manière dont vous pouvez utiliser une connexion ODBC SQL n'importe où à une DB MSSQL. Et s'ils me disiraient mal et c'est vraiment un SQL n'importe où dans led-à-dessus, quelles sont les requêtes à courir pour se rendre à la structure de la DB?

Et s'il y a quelqu'un d'autre là-bas qui a déjà réussi à interroger Eaglesoft (ou tout paquet propriétaire similaire) - s'il vous plaît dites-moi comment vous l'avez fait!


1 commentaires

@MARC Gravell: L'API ODBC a une capacité générique pour le schéma introspectif, et ce serait une réponse non très localisée à cette question.


4 Réponses :


1
votes

J'utiliserais un outil tel que Squirel, qui est idéal pour parcourir toute base de données pour vérifier si quelqu'un a un succès avec "SQL n'importe où" ce résultat de Google:

http://blog.gmane.org/ gmane.comp.db.squirrel-sql.utilisateurs / mois = 20091001

montre que d'autres ont réussi à faire de l'écureuil pour le faire. C'est assez facile à utiliser ... en supposant bien sûr que vous parvenez à faire fonctionner la connexion!


0 commentaires

8
votes

Éteint le moyen le plus simple de le faire était d'écrire une petite application à l'aide de ODBCDBConnection et de vous connecter à l'aide du DSN installé avec le logiciel. Il a fallu un 'Select * à partir de SysObjects' pour révéler qu'il s'agit, en effet une base de données MS-SQL sous tout cela, et je suis bon d'aller de là!


10 commentaires

Comment savons-nous quel DSN est installé avec le logiciel. Avez-nous également besoin de références pour vous connecter à la base de données?


SHUL BEHR Pouvez-vous poster votre exemple de code im également avec Eaglesoft


@Blairandaloc Ce poste approche son 5e anniversaire. Code enterré quelque part dans un projet archivé. Désolé...


@Shaulbehr Vous souvenez-vous du type de pilote que vous avez utilisé?


@Kentagoto SQL Server Driver IIRC


@Shaulbehr J'essaie de vous connecter à la base de données Eaglesoft à l'aide de PHP. Est-ce quelque chose que vous avez réussi?


@Kentagoto je l'ai fait en C #


@Shaulbehr De toute façon, vous pouvez déterrer le fichier source? Je serais grandement apprécier cela. J'ai essayé d'appeler Patterson Eaglesoft Tech Support, mais ils voulaient que nous remplissions un formulaire de fournisseur. Cela pourrait prendre un certain temps et je ne suis pas sûr qu'ils puissent m'aider. Tout ce que je veux pouvoir faire, c'est interroger contre la base de données à un niveau d'application. La fenêtre de requête interactive n'est pas très utile pour cela évidemment. J'ai le même problème exact que vous avez eu des années. Signifierait beaucoup.


@Kentagoto Il était il y a 6 ans et je ne pense pas avoir toujours le code. De toute façon je ne l'ai jamais terminé; Le projet a été annulé. Mais le schéma n'est pas difficile de comprendre si vous interrogez les sysobjects, etc. à l'aide de la connexion ODBC.


Justinshafer.blogspot.com/2018/09/...



0
votes

J'ai écrit mon propre site Web piloté PHP pour accéder et manipuler des données dans ma base de données Eaglesoft. Vous créez simplement une connexion ODBC à la saisie DNS locale et effectuée. Pour voir la structure de la base de données, vous pouvez utiliser la référence technique incluse dans l'outil de requête Eaglesoft ou Advanced.


1 commentaires

Pouvez-vous expliquer comment vous avez utilisé PHP pour établir une connexion avec la base de données Eaglesoft s'il vous plaît.



1
votes

Quelques outils qui pourraient aider sont sqlworkbench et Django . J'utilise SQLworkbench pour copier les données du système de production dans une base de données Postgres afin que je puisse pirater dessus sans endommager l'environnement de production. Ensuite, j'utilise l'inspecteur de Django pour générer des modèles de l'environnement de la base de données. De là, il est facile de créer des "vues" dans la base de données et les modèles à afficher exactement ce que je veux.

mise à jour: à partir de Eaglesoft 19, il semble que Patterson a protégé par mot de passe protégé la base de données et ils se sont déplacés de leur façon d'empêcher les utilisateurs d'obtenir des données sans les payer pour avoir accès.

mise à jour: comme je l'ai déjà mentionné, Eaglesoft 19 a une version verrouillée de la base de données. Pour un accès en lecture seule, vous pouvez appeler Patterson et leur demander le mot de passe de la section "Administrateur de base de données" de leur outil "Référence technique" installé sur votre serveur. Une fois que vous êtes là-bas, il y a une option pour définir un mot de passe en lecture seule pour l'accès à la base de données. Le nom d'utilisateur est 'dba' et quel que soit le mot de passe que vous avez défini. Parfois, cela prend un peu de retour et d'abord de vous donner un accès, mais ma solution consistait à dire «Nous avons mis les données des patients à Eaglesoft depuis plus d'une décennie et nous avons toujours eu accès à la base de données. Maintenant, vous le limitez et nous nous disons que nous devons payer pour l'accès. On dirait que vous essayez d'extorquer de l'argent en tenant notre otage de données. Je devrais probablement courir cela par notre équipe juridique. " / p>


4 commentaires

J'essaie de vous connecter à l'aide de Razorsql et de demander le nom de la base de données et les informations d'authentification. En regardant l'ODBC.ini dans le registre, je ne vois aucun de ces détails sauvegardés, aucune idée de la valeur par défaut pour Eaglesoft?


Tous les clients Eaglesoft (au moins dans les journées de la version 14-ISH) créeraient une connexion de base de données sur le serveur et la requête directement plutôt que d'envoyer des données au processus serveur et d'obtenir un résultat. Cela signifie que le client signe avec un nom d'utilisateur et un mot de passe. Et il était clair-texte - pas de SSL / TLS. Donc, incendiez-vous sur WireShark sur votre serveur Windows qui héberge des paquets Eaglesoft et Capturer. Vous devriez être capable d'obtenir le nom d'utilisateur et le mot de passe. :)


Merci Aaron, j'utilise la dernière démo (version 18.00) sur un ordinateur local. J'ai installé NMAP car WinPCap ne peut pas faire de trafic localhost, mais ne voyez rien d'utiliser Wireshark. Je n'ai aucune expérience en décryptant SSL / TLS, mais si elle est claire texte, je n'ai pas trouvé de correspondance pour Pass ou utilisateur dans les journaux de bouclage.


Je serais heureux de travailler avec vous sur la question car je devais faire face à Eaglesoft depuis 10 ans. Tirez-moi un e-mail. C'est mon prénom 'Aaron' à 'HeyAaron.com'. Une fois que nous avons trouvé une solution, nous pouvons le poster ici.