Forgot the username and password of *fdb (firebird) database. Is there anyway I can crack this database?

前端 未结 1 1167
傲寒
傲寒 2021-01-06 19:12

I have database of firebird of more than 8 GB and I want to migrate all the data from it. But I have forgotten the username and password. Is there anyway or any tool through

相关标签:
1条回答
  • 2021-01-06 19:26

    In most Firebird setups, the username and password is kept in a central security database (security3.fdb in the case of Firebird 3). If you don't know the username and password of a user anymore, you have the following options.

    Be aware, this answer uses Firebird 3 as its base, but most options also apply to Firebird 2.5 and earlier. Instead of security3.fdb, use security2.fdb. The create user and alter user steps only work in Firebird 2.5 or higher.

    1. Use the sysdba account (or another user with RDB$ADMIN role in the security database) to reset the password of the user through any other database
    2. Use gsec as SYSDBA in embedded mode to reset the password
    3. Replace the security database with a copy with a known password for the user

    If your database uses itself as its security database, you will first have to remove that setting from the databases.conf by commenting out the SecurityDatabase setting for that database.

    For Firebird 3, this answer assumes the creation of a user for the Srp authentication mechanism, and the steps below assume that the firebird.conf in the Firebird installation has setting AuthServer = Srp (or at least that setting AuthServer contains Srp) and setting UserManager = Srp (or at least that Srp is the first entry for UserManager).

    Option 1: reset a password

    Works on Firebird 2.5 and higher

    Connect to a database with SYSDBA (or another user with admin role on the security database), and use

    ALTER USER <username> SET PASSWORD '<new password>';
    

    This is probably not an option in your case though.

    Option 1a: reset with embedded connection (passwordless)

    Works on Linux for Firebird 2.5 or higher, on Windows requires Firebird 3.0 or higher.

    Stop Firebird server, and use ISQL to connect to the database in embedded mode (which doesn't require a password):

    isql -user sysdba <database>
    

    With a default Firebird 3 installation, you can use employee for <database>, which will use the employee example database.

    Alter the password as described above. Alternatively, try replacing sysdba with the actual username in the isql commandline.

    Start Firebird server again.

    Option 2: use gsec to change the password

    Works on Linux for all version, on Windows this only works for Firebird 3.0 and higher.

    Be aware that gsec is deprecated since Firebird 3 and may be removed from future Firebird versions.

    Stop the Firebird server, open the command line, and in the Firebird installation folder do:

    gsec -user sysdba
    

    and on the gsec prompt

    modify <username> -pw <new password>
    

    or if the user doesn't exist yet:

    add <username> -pw <new password>
    

    Start Firebird server again.

    Option 3: replace security database

    Most of these steps also apply if you are using a new Firebird install; just skip the replacing of the security database.

    Stop Firebird server and make a copy of your current security3.fdb as a backup.

    Obtain a default security3.fdb for your platform (eg download a zipkit from the Firebird 3 download page) or use a security3.fdb with a known password, and replace your current security3.fdb with this default version. Don't start Firebird yet.

    For earlier Firebird versions, look for your version on the download page.

    The default password for sysdba is normally 'masterkey', but on Firebird 3 the default security3.fdb only contains this user for the legacy authentication mechanism, which is disabled in a default Firebird 3 installation.

    To add a sysdba user, use an embedded connection to any database and create a sysdba account. On the command prompt from the Firebird installation folder, run:

    isql -u sysdba <database>
    

    Within ISQL execute:

    create user sysdba password '<sysdba password>';
    commit;
    

    To add another user, connect using SYSDBA - similar to the previous step 2 - to any database and execute

    create user <username> password '<new password>';
    commit;
    

    And exit isql (with quit;)

    Then start Firebird server again, and you should be able to connect with this user and its password.


    Most of these steps assume you already have a database to connect to, if you don't yet have one, then you'll need to create on first.

    Start isql as user sysdba:

    isql -u sysdba
    

    And create a database

    create database '<path-of-database>';
    

    You can then use that database for the earlier steps.

    0 讨论(0)
提交回复
热议问题