mongdb遭遇勒索,用备份进行数据恢复

1、背景

某台MongoDB服务器,没有配置用户名密码,放到公网不到一天,遭到删库勒索

All your data is a backed up. You must pay 0.05 BTC to 1K4DdqZ7sWUkhtfRqAGi7VcRck3itcNH17 48 hours for recover it. After 48 hours expiration we will sell all your data on dark markets and the database dump will be dropped from our server!You can buy bitcoin here, https://localbitcoins.com or https://buy.moonpay.io/ After paying write to us in the mail with your DB IP: rambler+1kgup@onionmail.org and you will receive a link to download your database dump.

2、查找是否有备份,发现存在JSON格式数据备份

[
{
"_id": "5d17452d5548b118d86ee882",
"A_id": "636974317259022022",
"ArtCard_MaxSize": "0",
"AuthorName": "xxx作者",
"Create_time": "29/6/2019 11:02:05.902",
"Email": "aaaa@163.com",
"EndDate": "21/12/2025 16:00:00",
"Goods_footer_img": "/upload/xxx.jpg",
"Goods_header_img": "/upload/xxx.jpg",
"StartDate": "21/12/2019 16:00:00",
"Userhead": "/upload/xxx.jpg",
"Username": "aaaa",
},
{
"_id": "5f4b40ac7341f020cb5ebfa8",
"A_id": "637343928761936160",
"ArtCard_MaxSize": "0",
"AuthorName": "xxx作者",
"Create_time": "29/6/2019 11:02:05.902",
"Email": "aaaa@163.com",
"EndDate": "21/12/2025 16:00:00",
"Goods_footer_img": "/upload/xxx.jpg",
"Goods_header_img": "/upload/xxx.jpg",
"StartDate": "21/12/2019 16:00:00",
"Userhead": "/upload/xxx.jpg",
"Username": "aaaa",
},

3.、尝试用“mongoimport”导入数据

mongoimport  --uri="mongodb://user:user_pwd@127.0.0.1:27017/DBManage" -c "userInfo"  --file="C:\userInfo.json"

报错如下:

Failed: error unmarshaling bytes on document #0: JSON decoder out of sync

原因为,导入JSON为数组,需要添加参数“mongoimport --jsonArray”

再次导入:

mongoimport  --uri="mongodb://user:user_pwd@127.0.0.1:27017/DBManage" -c "userInfo" --jsonArray  --file="C:\userInfo.json"

导入成功,但发现程序不能跑,查看数据,发现日期格式并未导入成预期格式:

预期的格式
{
"A_id": NumberLong(636974317259022022),
"Create_time" : ISODate("2019-06-24T16:27:14.537Z"),
"StartDate" : ISODate("2019-06-24T16:00:00.537Z"),
"EndDate" : ISODate("2019-06-24T16:00:00.537Z"),
} 数据库里的格式
{
"A_id": "636974317259022022",
"Create_time" : "24/6/2019 16:27:14.537",
"StartDate": "21/12/2019 16:00:00",
"EndDate": "21/12/2025 16:00:00",
}

4、PyCharm开起来,修正数据格式【Date/Long/Array】,并插入数据库

import json
import datetime
import pymongo #备份JSON文件所在目录
basePath = "C:\JSON" myclient = pymongo.MongoClient("mongodb://127.0.0.1:27017")
mydb = myclient["DBManage"]
tabAdmin_userInfo = mydb["userInfo_Test"] strJson = ""
with open(basePath + '\\userInfo.json', encoding='utf8') as file:
strJson = file.read() str_json = str(strJson) jsonList = json.loads(str_json) newJsonList = []
for ite in jsonList:
for ke in ite.keys():
# String转成ISO Date
if ke in ["Create_time", "StartDate", "EndDate","Sale_time"] and ite[ke] is not None:
dateTimeValue = ite[ke]
dateFor = None
# "24/6/2019 16:27:14.537" 格式转换成 ISODate("2019-06-24T16:27:14.537Z")
if "." in dateTimeValue:
dateFor = datetime.datetime.strptime(dateTimeValue, '%d/%m/%Y %H:%M:%S.%f')
else:
dateFor = datetime.datetime.strptime(dateTimeValue, '%d/%m/%Y %H:%M:%S')
print(dateTimeValue, dateFor, dateFor.time())
ite[ke] =dateFor # String转成Long ,python3 后long和int 都为int()转换
if ke in ["A_id", "C_id", "New_id", "P_id","Join_userId"]:
ite[ke] = int( ite[ke]) # String转成ISO Date
if ke in ["UserType"]:
#"636974317259022022" 转换成 NumberLong(636974317259022022)
ite[ke]=int(ite[ke]) # String转成对象
if ke in ["Goods_Detail_image"]:
ite[ke]=json.loads(ite[ke]) print(ite)
#按条插入数据库
insREs = tabAdmin_userInfo.insert_one(ite)
print(insREs)

查看userInfo_Test表数据,并和userInfo 表数据对比,userInfo_Test 表数据达到预期要求;

删除userInfo表,将userInfo_Test表重命名为userInfo,测试应用

应用正常运行,此次应急完成

mongdb遭遇勒索,用备份进行数据恢复的更多相关文章

  1. 帝国CMS备份出现数据恢复不完整的问题

    今天linux主机中毒了,把用帝国备份王备份之后,恢复了快照到刚建主机的状态: 哎,只怪当初没有勤快的去做快照啊: 重新配置好后: 开始使用帝国备份王: 数据恢复之后,打开文章,提示"附加表 ...

  2. mongdb的索引及备份

    1. mongodb的索引 1.1 为什么mongdb需要创建索引 加快查询速度 进行数据的去重 1.2 mongodb创建简单的索引方法 语法: db.集合.ensureIndex({属性:1}), ...

  3. mysql数据库的备份与数据恢复

    一.定时备份数据库  前段时间工作中搭建了HttpRunnerManager的接口自动化测试平台,由于平台中没有提供用例下载的功能及权限管理功能,自己也不会写前端,于是就想了办法,那就是备份数据库,如 ...

  4. linux mysql自动备份 和 数据恢复

    1.写一个脚本:/root/mysql_backup.sh vim /root/mysql_backup.sh #!/bin/bashbackupdir=/data/mysql_backup   ti ...

  5. 5.非关系数据库(Nosql)它mongodb:创建一个集合,导出和导入备份, 数据恢复,进出口

     1 固定集合 固定集合值得是事先创建并且大小固定的集合 2 固定集合的特征:固定集合非常像环形队列.假设空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说.固定集合适用于不论什么想要自己 ...

  6. MySQL备份及数据恢复

    昨天MySQL意外挂了,重启不成功.然后悲剧的发现,之前做的磁盘快照规则也不知怎么没有生效,数据无备份. 后来咨询.搜索,结果: 1.可以配置两个参数,忽略检查,启动,可以读数据.然后导出,删除文件库 ...

  7. Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化

    需要的联系我,QQ:1844912514

  8. 云HBase备份恢复,为云HBase数据安全保驾护航

    摘要: 介绍了阿里云HBase自研备份恢复功能的基本背景以及基本原理架构和基本使用方法.   云HBase发布备份恢复功能,为用户数据保驾护航.对大多数公司来说数据的安全性以及可靠性是非常重要的,如何 ...

  9. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  10. Cassandra 备份 - 1 - 节点镜像恢复

    之前比较关注如何使用Cassandra,但是真正想大规模使用前提还是需要搞清楚备份机制,确保数据安全. 本文主要内容来自文档 "Cassandra2.2"的翻译.最后部分为真实操作 ...

随机推荐

  1. nrf9160 做modem—— 连接云(接入方式MQTT)

    今天测试把nrf9160作为modem的例程Serial LTE Modem程序(后面简称slm),何为做modem,通俗来说就是将nrf9160作为无线模块,主控由其余MCU做,主控通过AT命令控制 ...

  2. k8s机器群扩容问题

    今天遇到了一个很奇葩的问题.公司新人吧k8s集权扩容完后,发现服务器上的磁盘没有做分区2T磁盘没有做任何动作 把两台slave节点扩容上去的节点弄到了/目录.由于是生产环境情况比较特殊并没通过kube ...

  3. Pictionary 方法记录

    [COCI2017-2018#5] Pictionary 题面翻译 题目描述 在宇宙一个不为人知的地方,有一个星球,上面有一个国家,只有数学家居住. 在这个国家有\(n\)个数学家,有趣的是,每个数学 ...

  4. SpringBoot 解决跨域问题代码

    package com.example.demo.gs; import org.springframework.context.annotation.Configuration; import jav ...

  5. nodered获取简单的时间

    1.添加simpletime 的节点 2. 添加一个inject节点用来每1s循环获取当点的信息 3.添加一个函数节点对simpletime发来的msg进行解析 var payload=msg;var ...

  6. 如何通过Java导出带格式的 Excel 数据到 Word 表格

    在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...

  7. SpringBoot启动流程源码分析

    前言 SpringBoot项目的启动流程是很多面试官面试中高级Java程序员喜欢问的问题.这个问题的答案涉及到了SpringBoot工程中的源码,也许我们之前看过别的大牛写过的有关SpringBoot ...

  8. C++ 中指针常量、指向常量的指针、引用类型的常量

    命题1. 在C++ 中 const T a 与 T const a 是一样的, 表示a是一个T类型的常量. 测试: 一. 形参定义为引用类型的常量 在函数传参时,形参若定义为 const T& ...

  9. 云原生之旅 - 14)遵循 GitOps 实践的好工具 ArgoCD

    前言 Argo CD 是一款基于 kubernetes 的声明式的Gitops 持续部署工具. 应用程序定义.配置和环境都是声明式的,并受版本控制 应用程序部署和生命周期管理都是自动化的.可审计的,并 ...

  10. i春秋破译

    点开题目就是一段密文 TW5650Y - 0TS UZ50S S0V LZW UZ50WKW 9505KL4G 1X WVMUSL510 S001M0UWV 910VSG S0 WFLW0K510 1 ...