2023盘古石决赛

流量分析

1.计算流量包文件的SHA256值是?[答案:字母小写][★☆☆☆☆]

结果为2d689add281b477c82b18af8ab857ef5be6badf253db1c1923528dd73b3d61a9

2.流量包长度在“640-1279”之间的的数据包总共有多少?[答案:100][★☆☆☆☆]

流量包打开后发现没有http流,仔细观察发现是缺少了tls密钥

不过检材中给出了key.log

WireShark中配置tls首选项

即可查看

统计->分组长度

结果为179

3.黑客使用的计算机操作系统是?[答案:windows7x32][★★☆☆☆]

随便找一个请求包看header

结果为windows10x64

4.黑客上传文件到哪个网盘?[答案:xx网盘][★★☆☆☆]

同上,能看到Refererhttps://pan.baidu.com

结果为百度网盘

5.黑客上传网盘的中间件是?[答案:xxxx][★★☆☆☆]

结果为nginx

6.黑客首次登陆网盘时间是?[答案:2000-01-01 01:00:33][★★☆☆☆]

看到关键信息newlogin=1

之前还有一个相似的请求,不过那个请求返回的结果是404

结果为2023-05-11 12:03:52

7.黑客上传到网盘的txt文件的md5值是?[答案:字母小写][★★★☆☆]

找到上传文件的流

该流中就有md5值,根据md5,传输的内容中需要去除一个空行


导出dic.txt并计算md5

结果为6a5aff7bec78dd1e4fc23e571b664b50

8.黑客上传到网盘的txt文件第8行的内容是?[答案:XXX][★★★☆☆☆]

结果为$$

9.被入侵主机的计算机名是?[答案:XXXXXXXXXXX][★★★☆☆]

结果为WIN-BFA1TO8PTNP

10.被入侵电脑的数据回传端口是?[答案:11][★★★☆☆]

找到木马传输的数据,端口为8000

结果为8000

11.流量包中ftp服务器的用户密码是?[答案:abcd][★★☆☆☆]

结果为ftp

12.流量包中ftp服务器中的木马文件的md5值是?[答案:字母小写][★★☆☆☆]

frp传输了两个文件,原始数据导出exe即可

结果为2a49a00a1f0b898074be95a5bbc436e3

13.木马文件伪造的软件版本是?[答案:0.0.0.0][★★☆☆☆]

结果为7.5.0.1039

14.黑客上传到网盘的压缩包解压密码是?[答案:XXXXXXXXXXX][★★★★★]

导出压缩包

rar删除多余数据

导出jpg

jpg删除多余数据

查看jpg数据,发现符合steghide特征,详情可以参考b神隐写总结

接下来使用stegseek根据给出的字典进行爆破

拿到数据

解密摩斯密码

成功解压文件

结果为今天天气不错

15.黑客上传到网盘的压缩包内文件的内容是?[答案:xxxxxxx][★★★★★]

结果为flag{dfaefdgegr$$%463}

16.分析技术人员电脑内的手机流量包,给出技术人员的虚拟身份账号是?[答案格式:13039456655][★★☆☆☆]

结果为13012341234

17.分析技术人员电脑内的手机流量包,给出技术人员的虚拟身份密码是?[答案格式:b3039456655][★★☆☆☆]

同上

结果为a12345678

18.分析技术人员电脑内的手机流量包,分析技术人员的看过几段短视频?[答案格式:3][★★☆☆☆]

结果为6

19.分析技术人员电脑内的手机流量包,分析技术人员最后打开的软件的程序名称是?[答案格式:微信][★★☆☆☆]

流量中看到buildID为com.zhjhsy.ksws04.ucbiao

与模拟器中的狂神无双一致

结果为狂神无双

20.分析技术人员电脑内的手机流量包,分析安全防护的服务器地址是?[答案格式:127.0.0.1][★★☆☆☆]

APK和流量两者结合分析

结果为8.218.119.134

移动智能终端取证

1.分析卡农手机,给出手机的SDK版本?[答案格式:28][★☆☆☆☆]

结果为30

2.分析卡农手机,给出手机最近开机的时间?[答案格式:2023-05-18-19:09:59][★★☆☆☆]

结果为2023-05-15-10:09:29

3.分析卡农手机,给出高德地图关联的手机号是?[答案格式:13011221234][★★☆☆☆]

结果为18317041122

4.分析卡农手机,给出卡农内部聊天工具的昵称是?[答案格式:李多余][★★☆☆☆]

找到可疑工具

寻找其安装包

在进行逆向分析时,暂未找到该应用操作数据库的点,无法打开其加密数据库,因此尝试应用仿真(现已解决,跳转再战野火IM)。当应用加密文件时,如果使用的密钥不是根据设备动态生成的,就可以使用这种方式来提取信息。

先将data/data/cn.wildfirechat.chat这个应用数据目录导入到模拟器的/data/data目录下,再安装应用

安装成功后可以查看信息

结果为钱彩燕

5.分析卡农手机,给出卡农的真实名字可能是?[答案格式:李多余][★★☆☆☆]

支付宝实名

结果为徐鹏坤

计算机取证

1.黑客计算机系统安装时间是?[答案格式:2000/01/01 01:00:01][★☆☆☆☆☆]

注册表SOFTWARE/Microsoft/Windows NT/CurrentVersionInstallDate的值

结果为2023-05-10 13:31:47

2.黑客计算机磁盘0的总磁道数?[答案格式:数字中无标点][★★☆☆☆☆]

结果为3328770

3.黑客计算机的产品密钥是?[答案格式:字母大写][★★☆☆☆]

注册表SOFTWARE/Microsoft/WindowsNT/CurrentVersion/SoftwareProtectionPlatformBackupProductKeyDefault的值

结果为VK7JG-NPHTM-C97JM-9MPGT-3V66T

*4.黑客计算机共有几次卷影拷贝服务关闭事件?[答案格式:1][★★☆☆☆]

日志里是1个,恢复卷影的Application日志查看不了。。。

结果为1

5.黑客计算机的vc容器解密密码是?[答案格式:字母小写][★★★★★]

找到密码目录

显然是需要分解n,然后求明文,这里它给的密文是m,换成c应该更好理解

离线的话,yafu可以跑出,一共耗时5分钟不到(n,e,m用工具加载为整数)

import gmpy2
from Crypto.Util.number import *

p = 250527704258269
q = 74891071972884336452892671945839935839027130680745292701175368094445819328761543101567760612778187287503041052186054409602799660254304070752542327616415127619185118484301676127655806327719998855075907042722072624352495417865982621374198943186383488123852345021090112675763096388320624127451586578874243946255833495297552979177208715296225146999614483257176865867572412311362252398105201644557511678179053171328641678681062496129308882700731534684329411768904920421185529144505494827908706070460177001921614692189821267467546120600239688527687872217881231173729468019623441005792563703237475678063375349
phi = (p-1)*(q-1)
n = p*q
e = 65537

d =  gmpy2.invert(e,phi)
print(d)

with open('m','rb') as fr:
    data = fr.read()
    c = bytes_to_long(data)
    print(c)
    print(long_to_bytes(1344623113276045419474204762979152241392038756529708577555101337026225647874805271601374952864506346859598224204555148616730099175986866133455376628782291472989301485487416089413567795651370006960706929053851327311239605397199163495283744128430292744681009668591852545964633989481233086928423626048363788175701385497778061041202225264355784725606023790232739200072674485951271277053016244756848096341632277580416621089349189082483203953339976960321622365129783283732895797595460781352954797746199097473897684407094817368745970443711733527211079598505334948285339003620264932858535367533972096191720817562184016751))

运行结果

结果为byebyedisco

6.黑客计算机加密容器中共有几个docx文件?[答案格式:x][★★☆☆☆]

这次加密容器是磁盘,用vc解密时选择设备即可

结果为3

7.黑客计算机加密容器中记录的bt币地址有几个?[答案格式:x][★★★☆☆]

 直接解容器还不行,得用取证大师或者数据恢复软件,搞出它被删掉的文件(感谢好心的师傅提醒)

 xlsx采用的是zip压缩

 

 结果为4

8.黑客计算机加密容器中记录的受害人共有多少人?[答案格式:xx][★★☆☆☆]

结果为29

9.黑客计算机中win7虚拟机中www用户的登陆密码是?[答案格式:xxxxxxx][★★☆☆☆]

压缩包加密,暴力破解一段时间未果,考虑到流量中黑客传过一个字典文件,进行字典攻击

打开虚拟机时,会提示这个虚拟机不是你的,是否需要获取所有权。另外虚拟机配置了www用户自动登录,实际上它就会利用www用户和主机的密码自动登录到虚拟机当中,因此虚拟机的密码就是黑客主机的密码。跑一下可以知道是12345678

使用改密码登录到www用户成功

此外还有其他方式,仿真或是利用工具将vmdk分片文件合并,都可以导出注册表来破解密码

结果为12345678

10.黑客计算机中win7虚拟机中chrome浏览“bjh.com”网站保存的密码是?[答案格式:xx][★★★☆☆]

结果为admin123!@#

11.分析技术人员电脑,请给出电脑系统安装时间(UTC-0?[答案格式:20000-01-0100:00:00][★★☆☆☆]

同第1题

结果为2023-04-19 06:10:50

12.分析技术人员电脑,请给出电脑内用户JohnSID[答案格式:x-x-x-x-x-x-x-x][★★★☆☆]

注册表

结果为S-1-5-21-2950582214-2327523445-121360615-1001

13.据技术人员交代,其电脑连接过nas服务器,请给出该nas服务器的iqn名称?[答案格式:iqn.xxx][★★★☆☆]

暴力搜索,可以在nas中得到确认

结果为iqn.2005-10.org.freenas.ctl:windows

14.分析技术人员电脑,请给出该技术人员使用的隐写工具名称?[答案格式:xx][★★☆☆☆]

可以找到oursecret的记录

结果为oursecret

15.接上题,请给出使用该隐写工具隐写文件所使用的密码?[答案格式:xx][★★★☆☆]

onedrive目录

结果为caiwu

16.据技术人员交代,其电脑内存过一个名为“财务流水.rar”的文件,请给出该文件的SHA-1?[答案格式:字母小写][★★★★☆]

usn日志可以看到使用oursecret加密了财务流水.mp4,不过这个文件被删除了

考虑到存在nas,那么文件应该在nas里面

nas仿真后,启动iSCSI,即可在主机中访问到d盘,需要注意的是nas仿真时,需要控制其ip为192.168.91.129

在d盘中可以看到CWLS.mp4oursecret,解密即可

双击保存解密的文件,计算哈希值

结果为ac6d658f42915bda02c13f890e47bc08b6736a24

APK分析

1.分析技术人员的模拟手机,给出安全防护的验证码是?[答案格式:11226655][★★★★★]

雷电模拟器备份文件,无须解释

找到判断函数

直接hook

结果为110110110

2.分析技术人员的模拟手机,给出安全防护的推送服务的调证值是?[答案格式:11226655][★★★★★]

结果为5cfdec7f570df35073000f03

3.分析技术人员的模拟手机,给出老板的联系方式是?[答案格式:11226655][★★☆☆☆]

可以看到data目录下存在野火的数据目录

因此可以使用三星手机中的安装包安装到模拟器当中

结果为13812341234

4.分析技术人员的模拟手机,给出办公场所是?[答案格式:北京市朝阳区中山路25555号][★★★☆☆]

结果为上海市闵行区合川路18888号

5.分析技术人员的模拟手机,给出技术人员聊天工具的用户ID是?[答案格式:QN11AATT][★★★☆☆]

结果为QN63ANIT

二进制文件分析

1.分析黑客电脑,控制端程序传输协议是什么协议?[答案格式:http][★★☆☆☆]

可以找到文件控制端.exe,图标是python,猜测打包方式是pyinstaller

使用工具解包

可以得到一个server文件,实际上是缺少了magic的pyc文件

一般情况下是采用uncomply6来反编译,但是uncomply6要求编译版本与反编译版本一致,复盘可以直接使用在线工具https://www.lddgo.net/string/pyc-compile-decompile反编译,反编译前需要补齐文件头(看pyinstxtractor的版本,高版本就不用补文件头了)

需要补齐的数据在struct

得到的源码如下

# Visit https://www.lddgo.net/string/pyc-compile-decompile for more information
# Version : Python 3.8

import socket
import json

def decrypt_config():
    data_str = ''
# WARNING: Decompyle incomplete


def input_data():
    data = input('请输入指令:')
    data = Crypt_data(data)
    return data.encode()


def Crypt_data(data = None):
    if isinstance(data, str):
        data = data.encode('utf-8')
    temp = b''
    for i in data:
        data_int = i ^ int.from_bytes(b'p', 'big', **('byteorder',))
        data_bytes = data_int.to_bytes(1, 'big', **('byteorder',))
        temp += data_bytes
    
    try:
        temp = temp.decode()
    finally:
        pass
    temp = temp
    return temp



def deal(data = None):
    pass
# WARNING: Decompyle incomplete


class connect:
    
    def __init__(self):
        self.address = decrypt_config()

    
    def tcpServer(self):
        pass
    # WARNING: Decompyle incomplete


if __name__ == '__main__':
    con = connect()
    con.tcpServer()

很明显反编译不是很成功,因此采用pycdc来反编译,得到的是python字节码

不过不全的代码也可以知道是tcp连接

结果为tcp

2.分析黑客电脑,控制端程序接收数据缓冲区大小是多少?[答案格式:100][★★☆☆☆]

conn.recv(1000000)

结果为1000000

3.分析黑客电脑,控制端程序接收并判断几种指令?[答案格式:1][★★★☆☆]

==

结果为5

4.分析黑客电脑,控制端程序连接结束指令是什么?[答案格式:xxx][★★★☆☆]

实际上,我们可以让chatgpt帮我们将这段字节码还原为python脚本

def run(self):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind(self.address)
        s.listen(10)
        conn, addr = s.accept()
        conn.setblocking(0)

        try:
            while True:
                data = conn.recv(1000000)
                data = self.null_address(data)
                if data == b'2a':
                    conn.send(self.null_listen())
                elif data == b'ok':
                    send_data = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    send_data.connect(self.address)
                    conn.send(send_data)
                elif data == b'er':
                    conn.send(self.null_listen())
                    send_data = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    send_data.connect(self.address)
                    conn.send(send_data)
                elif data == b'end':
                    break
                elif data == b'':
                    continue
                else:
                    send_data = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    send_data.setblocking(0)
                    send_data.connect(self.address)
                    send_data.send(data)
        finally:
            return None

def null_address(self, data):
    return self.address + data

def null_listen(self):
    return None

结果为end

5.分析黑客电脑,控制端程序配置文件解密函数是什么?[答案格式:x_x][★★★☆☆]

结果为decrypt_config

6.分析黑客的木马程序,该程序控制端ip是?[答案格式:127.0.0.1][★★★☆☆]

分析v14的来源

可以看到这个结构体的sa_data的值来自于v8,根据v8的赋值情况,得到来源为hostshort

od打断点拿到内容

结果为192.168.100.141

7.分析黑客的木马程序,程序在地址0x00410CA4处调用了Sleep函数,请问该函数会暂停几秒?[答案格式:3][★★★☆☆]

跳转到对应地址

可以看到时间是0x1388,单位是毫秒,转成10进制就是5秒

结果为5

8.分析黑客的木马程序,该程序“png”型资源下有两张图片,程序图标对应图片的MD5值是?[答案格式:字母小写][★★★☆☆]

用7zip打开这个exe即可找到资源

结果为ae755aad5abaa7926a691a5d94e84ea2

9.分析黑客的木马程序,哪个函数直接调用了HOST型资源?[答案格式:sub_1234][★★★☆☆]

查看函数

发现加载资源

结果为sub_405570

10.分析黑客的木马程序,该程序会绕过哪个杀毒软件?[答案格式:腾讯][★★★★★]

WinMain函数中,执行了系统命令

使用命令杀掉了金山卫士

结果为金山

物联取证

1.分析扫地机器人数据,robot1.bin采用的压缩算法是?[答案格式:xxxx][★★☆☆☆☆]

使用binwalk分析

结果为LZMA

2.扫地机器人使用的软件版本是?[答案格式:0.0.0][★★☆☆☆☆]

暂时没有找到有用的工具来解包,暴力搜

结果为3.1.0

3.扫地机器人id是?[答案格式:21243245838790][★★☆☆☆]

结果为3144460861838790

4.扫地机器人云证书的前6位是?[答案格式:sdfead][★★☆☆☆]

结果为MIIDnj

5.扫地机器人连接过的wifissid(channl1)[答案格式:xx_xx_xx][★★☆☆☆]

结果为ELPASO_TPLINK_C04A00BD0769

6.扫地机器人连接过的wifi的密码是(channl1)?[答案格式:xxxx][★★☆☆☆]

结果为admin123

7.扫地机器人的时区是?[答案格式:xx/xx][★★☆☆☆]

结果为America/DenverU

8.扫地机器人的名称是?[答案格式:xxxxx][★★☆☆☆]

结果为VTORoomba

9.无人机飞行纬度前两位是?[答案格式:xx][★★☆☆☆]

exif

结果为31

10.无人机的快门速度是?[答案格式:x/xxx][★★☆☆☆]

结果为1/400

11.分析智能门锁数据包,请给出用户“wonderful”首次开门时间?[答案格式:2000-01-01 00:00-00:00][★★☆☆☆]

数据库查看

结果为2023-02-17 18:56:38

12.分析智能门锁数据包,请给出智能门锁MAC地址?[答案格式:字母大写][★★☆☆☆]

配置文件查看

结果为E8:BD:63:D0:6F:AD

服务器取证

之前内部聊天工具中的聊天记录,得到两个域名,可能对后续分析有帮助

1.请分析服务器,给出NAS服务器系统账号密码?[答案格式:xx@xx][★★★☆☆☆]

需要仿真时不跳过或重置密码,直接跑出其密码为paofen,然后浏览器查看

 

结果为root@P@88w0rd

2.请分析服务器,给出NAS服务器的版本信息?[答案格式:xx-xx-xx][★★☆☆☆☆]

登录到管理平台

结果为TrueNAS-13.0-U4

3.请分析服务器,给出NAS服务器内用户SMB的邮箱?[答案格式:xx@xx][★★☆☆☆☆]

结果为smb@paofen.com

4.请分析服务器,给出NAS服务器系统告警服务使用的邮箱?[答案格式:xx@xx][★★☆☆☆☆]

设置里修改一下中文

结果为11729369@qq.com

5.请分析服务器,给出NAS服务器内存储池名?[答案格式:xxx][★★☆☆☆]

结果为vol

6.请分析服务器,给出NAS服务器内有几个数据集和几个Zvol?[答案格式:0,0][★★★☆☆]

类型为VOLUME的是Zvol,类型为FILESYSTEM的是数据集

结果为2,3

7.请分析服务器,给出该NAS服务器存储监听IP和端口?[答案格式:192.168.1.1:8080][★★★☆☆]

结果为0.0.0.0:3260

8.请分析服务器,给出NAS服务器内iSCSI目标为web的连接所使用的启动器组ID[答案格式:xx][★★★☆☆]

结果为2

9.请分析服务器,给出web服务器连接NAS服务器所使用的iqn[答案格式:iqn.xxx][★★★☆☆]

结果为iqn.2005-10.org.freenas.ctl

10.请分析服务器,给出web服务器连接NAS服务器所使用的账号和密码?[答案格式:root/123][★★★★★]

结果为user/202305140921

11.请分析服务器,给出redis所使用的配置文件?[答案格式:/home/1.conf][★★☆☆☆]

配置在nas的web虚拟机里,需要在vm中给nas虚拟机开启虚拟化cpu

启动web虚拟机,并连接到vnc

由于不知道密码,需要重启该虚拟机,并不断尝试vnc连接, 直到进入如下页面,接下来就可以利用单用户模式修改密码

进入单用户模式后,查看shadowpasswd文件,发现root用户有密码,但是禁止登录

允许root登录,重置root密码

重启后即可登录root用户

结果为/etc/redis.conf

12.请分析服务器,给出跑分网站后台根目录?[答案格式:/xx/xx][★★★☆☆]

服务器里apache和nginx都有,不过跑分网站在nginx里

后台根目录,看admin.paofen.com.conf

结果为www/admin.paofen.com/public

13.请分析服务器,嫌疑人所使用的跑分系统可能来自哪,请给出网站?[答案格式:www.baidu.com][★★★☆☆]

直接看www分区,没有内容,看一下硬盘信息

发现没有挂载,挂载一下mount /dev/sdb1 /www

结果为www.98sucai.com

14.请分析服务器,给出数据库root账号密码?[答案格式:password][★★★★★]

用户目录下有一个backup.sh,是经过gzexe加密的

结果为3W.paofen.com

15.请分析服务器,给出数据库备份文件存放路径?[答案格式:/xx/xxx][★★★★★]

结果为/data/mysql_back

16.请分析服务器,给出数据库备份文件解压密码?[答案格式:password][★★★★★]

结果为p@ssw0rd

17.请分析服务器,给出数据库备份文件间隔多少天会删除?[答案格式:1][★★★★★]

结果为45

18.请分析服务器,给出数据库每天几点会执行备份操作?[答案格式:00:00][★★★☆☆]

查看计划任务crontab -l

结果为02:00

19.请分析服务器,给出跑分网站后台用户余额总计?[答案格式:1000][★★☆☆☆]

先看数据库,发现没有数据,需要恢复备份。首先挂载mount /dev/sdb1 /data

解压备份数据,可以看到备份的是paofen数据库

恢复备份,密码之前已经找过,是3W.pa0fen.com

再看端口,是默认的3306

回到web虚拟机,hosts已经配置过

修改数据库连接参数

启动nginxphpredis,需要临时关闭selinux

service nginx start
service php-fpm start
service redis start

public目录下有admin.php

添加到url就能进入到后台登录页面

数据库查一下管理员账号是admin

随意密码登录,提示密码输入错误

寻找逻辑所在文件

这段if直接改成永真

任意密码登录成功

结果为7459848

20.请分析服务器,给出跑分平台后台未处理的用户申请有多少个?[答案格式:1000][★★☆☆☆]

结果为24

21.请分析服务器,给出会员聂鸿熙推荐人的姓名?[答案格式:张三][★★☆☆☆]

结果为针长兴

22.请分析服务器,给出给出跑分平台内用户银行卡所属银行共有几家?[答案格式:10][★★★★★]

数据库的表ob_userbank

简单写个sql

SELECT COUNT(DISTINCT(`bank_name`)) FROM `ob_user_bank`;

结果为12

23.接上题,请给出这些银行中用户数最多的银行名称?[答案格式:xx银行][★★★★★]

SELECT count(id) as nums,bank_name FROM `ob_user_bank` GROUP BY bank_name order by nums desc;

结果为农业银行

24.请分析服务器,给出用户祝虹雨通过审核的充值总额?[答案格式:10][★★★★★]

select sum(money) from `ob_charge_log` where `name`='祝虹雨' and `status` = 1;

结果为366335

25.请分析服务器,给出该跑分团队可能的办公大楼有几个?[答案格式:1][★★☆☆☆]

CSM虚拟机中,绕过密码后简单看一下,发现是宝塔面板

访问发现有验证,关闭即可

登录后还有动态口令,一并关掉

存在一个数据库,但是没有内容,需要恢复备份

导入备份文件

宝塔内启动网站,同样在public下找到dkewl.php,添加到url可以访问到后台登录页

同样数据库查看用户名

随意密码登录提示密码不正确

可以锁定逻辑所在文件

需要绕个弯,实际要搜索Password is incorrect

改成永假

任意密码成功登录

结果为2

26.请分析服务器,给出用户John共提了几次会议预约申请,通过了几个?[答案格式:11][★★☆☆☆]

结果为9,3

27.接上题,用户John哪个时间段的会议预约申请次数最多[答案格式:2000-01-0100:00-00:00][★★☆☆☆]

结果为2023-05-15 16:00-16:59

28.请分析服务器,给出用户Harvey预约了什么时间的会议?[答案格式:2000-01-01 00:00-00:00][★★☆☆☆]

结果为2023-05-17 17:00-17:59

29.会议管理系统的后台登陆地址是[答案格式:www.baidu.com:8080/login.php][★★☆☆☆]

结果为hy.paofen.com:8085/dkewl.php

数据分析

1.分析技术人员电脑内银行卡交易流水,给出转入的对手交易卡号有多少?[答案格式:10][★★☆☆☆]

import pandas

in_bank_no = set()
for i in range(1,50):
    dataFrame = pandas.read_csv(f'{i}.csv',encoding="UTF-8")
    for index,row in dataFrame.iterrows():
        if row['交易是否成功'] == 1 and row['收付标志'] == '进':
            in_bank_no.add(row['交易对手账卡号'])
print(len(in_bank_no))

结果为99

2.分析技术人员电脑内银行卡交易流水,给出转出的对手交易卡号有多少个?[答案格式:1][★★☆☆☆]

import pandas

out_bank_no = set()
for i in range(1,50):
    dataFrame = pandas.read_csv(f'{i}.csv',encoding="UTF-8")
    for index,row in dataFrame.iterrows():
        if row['交易是否成功'] == 1 and row['收付标志'] == '出':
            out_bank_no.add(row['交易对手账卡号'])
print(len(out_bank_no))

结果为9

3.分析技术人员电脑内银行卡交易流水,给出卡号"6233542760791453"金额转出比(保留两位有效小数)[答案格式:10.21%[提示:注意文件编码][★★★★★]

这些数据表,每张表表示一个卡号的收支情况,简单分析一下

import pandas
card_in = 0
card_out = 0
for i in range(1,2):
    dataFrame = pandas.read_csv(f'45.csv',encoding="UTF-8")
    for index,row in dataFrame.iterrows():
        if row['交易是否成功'] == 1:
            if row['收付标志'] == '进':
                card_in += row['交易金额']
            else:
                card_out += row['交易金额']
print(card_in,card_out,card_out/card_in)
#15096103.980002012 1677358.1099999035 0.11111198705453537

结果为11.11%

4.分析技术人员电脑内银行卡交易流水,给出金额转出比最大的卡号?[答案格式:xxxx][提示:注意文件编码][★★★★★]

total_list = []
for i in range(1,50):
    card_in = 0
    card_out = 0   
    dataFrame = pandas.read_csv(f'{i}.csv',encoding="UTF-8")
    for index,row in dataFrame.iterrows():
        if row['交易是否成功'] == 1:
            if row['收付标志'] == '进':
                card_in += row['交易金额']
            else:
                card_out += row['交易金额']
    total_list.append([f'{i}.csv',card_in,card_out,card_out/card_in])
    print(f'{i}.csv',card_in,card_out,card_out/card_in)

跑出的数据手动转成csv,排个序

结果为6202628427760809

5.分析技术人员电脑内银行卡交易流水,给出收益最大的卡号?[答案格式:xxxxx][提示:注意文件编码][★★★★★]

结果为6264488446694651

posted @ 2023-06-17 14:46  WXjzc  阅读(1732)  评论(8编辑  收藏  举报