mongdb遭遇勒索,用备份进行数据恢复
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遭遇勒索,用备份进行数据恢复的更多相关文章
- 帝国CMS备份出现数据恢复不完整的问题
今天linux主机中毒了,把用帝国备份王备份之后,恢复了快照到刚建主机的状态: 哎,只怪当初没有勤快的去做快照啊: 重新配置好后: 开始使用帝国备份王: 数据恢复之后,打开文章,提示"附加表 ...
- mongdb的索引及备份
1. mongodb的索引 1.1 为什么mongdb需要创建索引 加快查询速度 进行数据的去重 1.2 mongodb创建简单的索引方法 语法: db.集合.ensureIndex({属性:1}), ...
- mysql数据库的备份与数据恢复
一.定时备份数据库 前段时间工作中搭建了HttpRunnerManager的接口自动化测试平台,由于平台中没有提供用例下载的功能及权限管理功能,自己也不会写前端,于是就想了办法,那就是备份数据库,如 ...
- linux mysql自动备份 和 数据恢复
1.写一个脚本:/root/mysql_backup.sh vim /root/mysql_backup.sh #!/bin/bashbackupdir=/data/mysql_backup ti ...
- 5.非关系数据库(Nosql)它mongodb:创建一个集合,导出和导入备份, 数据恢复,进出口
1 固定集合 固定集合值得是事先创建并且大小固定的集合 2 固定集合的特征:固定集合非常像环形队列.假设空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说.固定集合适用于不论什么想要自己 ...
- MySQL备份及数据恢复
昨天MySQL意外挂了,重启不成功.然后悲剧的发现,之前做的磁盘快照规则也不知怎么没有生效,数据无备份. 后来咨询.搜索,结果: 1.可以配置两个参数,忽略检查,启动,可以读数据.然后导出,删除文件库 ...
- Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化
需要的联系我,QQ:1844912514
- 云HBase备份恢复,为云HBase数据安全保驾护航
摘要: 介绍了阿里云HBase自研备份恢复功能的基本背景以及基本原理架构和基本使用方法. 云HBase发布备份恢复功能,为用户数据保驾护航.对大多数公司来说数据的安全性以及可靠性是非常重要的,如何 ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
- Cassandra 备份 - 1 - 节点镜像恢复
之前比较关注如何使用Cassandra,但是真正想大规模使用前提还是需要搞清楚备份机制,确保数据安全. 本文主要内容来自文档 "Cassandra2.2"的翻译.最后部分为真实操作 ...
随机推荐
- kubelet忽然不可用
原因,有可能机器的cpu信息有变化(扩容或者缩容)解决办法: 删掉/opt/var/lib/kubelet目录下(或者/data/lib/kubelet)cpu_manager_state文件 然后m ...
- 长文梳理muduo网络库核心代码、剖析优秀编程细节
前言 muduo库是陈硕个人开发的tcp网络编程库,支持Reactor模型,推荐大家阅读陈硕写的<Linux多线程服务端编程:使用muduo C++网络库>.本人前段时间出于个人学习.找工 ...
- Python基础之模块:1、模块的导入和使用
目录 一.模块 1.简介 2.模块的表现形式 二.模块的分类 1.自定义模块 2.内置模块 3.第三方模块 三.导入模块的句式 学前须知: 1.import句式 2.from...import...句 ...
- SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)
1.安装erlang语言环境 1.1 创建 erlang安装目录 mkdir erlang 1.2 上传解压压缩包 上传到: /root/ 解压缩# tar -zxvf otp_src_22.0.ta ...
- pyinstaller 打包exe相关
-w 只有窗口,没有console -p 加入路径 -F 生成一个exe文件 有虚拟环境时,需要先在cmd中进入虚拟环境,再执行打包程序 # 生成一个exe 无窗口 有icon Pyside2 pyi ...
- onps栈移植说明(3)——添加网卡
4. 添加网卡 移植的最后一步就是编写网卡驱动然后将网卡添加到协议栈.网卡驱动其本质上完成的是数据链路层的工作,在整个通讯链路上处于通讯枢纽位置,通讯报文的发送和接收均由其实际完成.针对网卡部分的移植 ...
- 计算机系统大作业:Hello的一生
计算机系统大作业 题 目 程序人生-Hello's P2P 专 业 计算机科学与技术 学 号 班 级 学 生 江水为竭 指导教师 刘宏伟 计算机科学与技术学院 2022年5月 摘 要 HelloWor ...
- dd格式化硬盘
1. dd硬盘读写测速(不做实际读写): 测试纯写入性能 dd if=/dev/zero of=/dev/sdb bs=1M count=10240 oflag=direct 测试纯读取性能 dd i ...
- bugku web基础$_GET
让我们通过url传入what的值,让其等于flag 直接构造url就得到flag了
- (C++) C++虚函数性能分析
class baseA { public: virtual float mulTwo(float a, float b) = 0; virtual ~baseA() = default; }; cla ...