CTF-MISC(入门|笔记|工具)

article/2025/11/6 2:23:35

文章目录

    • 音频隐写
      • 直接隐写
      • 频谱隐写
    • 流量分析
      • 第一种流量包修复
      • 第二种是协议分析
      • 第三种数据提取
    • 图片分析
      • zsteg
      • BMP
      • PNG
        • foremost 工具
        • binwalk
        • steghide
        • stegslove
        • tweakpng
      • JPG
        • F5-steganography
        • stegdetect
    • 压缩包分析
      • zip伪加密
      • crc32
      • zip包明文攻击
    • 其它
      • 条形码扫描
      • pyc反编译
        • 数据转换到ASCII乱码
        • strings命令
        • 动态图片分解
      • 关于PDF的数据隐写
    • PIL库
    • MISC工具包

音频隐写

直接隐写

顾名思义,要么就不装了直接给你一个摩斯电码,要么就是双声道中有一个声道是摩斯电码,这种慢慢数一数就行

频谱隐写

音频中的频谱隐写是将字符串隐藏在频谱中,此类音频通常会有一个较明显的特征,听起来是一段杂音或者比较刺耳。

eg:Su-ctf-quals-2014:hear_with_your_eyes

在这里插入图片描述

流量分析

一般流量分析分为以下三种情况:

  • 流量包修复
  • 协议分析
  • 数据提取

第一种流量包修复

考的很少,可以参考:https://www.cnblogs.com/ECJTUACM-873284962/p/9884447.html

第二种是协议分析

我们通过分析不同类型的数据包,来查找flag可能出现的位置,常用的手段:

  • 第一步,查看协议分级,找出流量最多的协议,然后过滤重点查看
  • 第二步,将当前可疑的协议进行溯源,例如TCP溯源或者HTTP,然后分析可能出现的地方
  • 第三步,分析观察可疑流量的包头信息以及流量的去向信息(例如flag可能以某种规律出现在包头,或者说当前流量是一次盲注攻击)
  • 第四步,要是啥也没分析出来,去试试binwalk或者foremost分离一下试试,没准有隐藏文件(不过一般流量分析的时候就能看出来)

第三种数据提取

其实就是上面的操作,只不过可能需要使用T-shark写脚本,来提取流量中某种特定规律,例如

CTFhub中的ICMP的流量分析三道题

在这里插入图片描述

图片分析

zsteg

这是一个用于检测PNG和BMP中的隐藏数据隐藏数据的工具,可以快速提取隐藏信息。

命令:zsteg 文件名 --all

BMP

目前遇到的是2017世安杯的LOW,题目链接:https://adworld.xctf.org.cn/challenges/details?hash=7c7e8acc-38c7-43c5-af88-a44964ba88c6_2

考点是图片隐写,我们先用画图打开文件,然后另存为png格式的,然后使用stegSlove打开,看一下色道就会发现一个二维码,然后直接扫描就得到flag

考点是LSB隐写,可以参考一下这个博客:https://blog.csdn.net/weixin_34075268/article/details/88744599

PNG

foremost 工具

这个工具主要是做文件的分离的恢复

ctf这类文件分离的题目,大多时候可以使用 binwalk或者 winhex也可以使用 dd命令。可以使用 foremost,相对来说 binwalk更加强大,速度也快,但是有时候如果不能分离出来,就可以试试看 foremost

-V  - 显示版权信息并退出
-t  - 指定文件类型.  (-t jpeg,pdf ...)
-d  - 打开间接块检测 (针对UNIX文件系统)
-i  - 指定输入文件 (默认为标准输入)
-a  - 写入所有的文件头部, 不执行错误检测(损坏文件)
-w  - 向磁盘写入审计文件,不写入任何检测到的文件
-o  - 设置输出目录 (默认为./output)
-c  - 设置配置文件 (默认为foremost.conf)
-q  - 启用快速模式. 在512字节边界执行搜索.
-Q  - 启用安静模式. 禁用输出消息.
-v  - 详细模式. 向屏幕上记录所有消息。

binwalk

和上面的foremost功能类似,是一个文件提取分离的工具

博客讲解:https://www.bilibili.com/read/cv11310186

steghide

这个是一个色道隐写的工具

stegslove

这个也是观察色道的一个工具

该工具还能进行图片合并功能,例题:https://adworld.xctf.org.cn/challenges/details?hash=ba932136-a9c1-4eff-8b7b-2320c775ca62_2 ,给了你一个压缩包里面有两张图,然后我们需要将两个图片进行合并得到FLAG

在这里插入图片描述

tweakpng

这个工具可以帮我们检查png的一些参数,例如IHDRCRC等等

JPG

F5-steganography

F5刷新隐写

命令:java Extract 路径
然后会得到一个output.txt

stegdetect

通过统计分析技术评估 JPEG 文件的 DCT 频率系数的隐写工具, 可以检测到通过 JStegJPHideOutGuessInvisible SecretsF5appendXCamouflage 等这些隐写工具隐藏的信息,并且还具有基于字典暴力破解密码方法提取通过 Jphideoutguessjsteg-shell 方式嵌入的隐藏信息。

-q 仅显示可能包含隐藏内容的图像。
-n 启用检查JPEG文件头功能,以降低误报率。如果启用,所有带有批注区域的文件将被视为没有被嵌入信息。如果JPEG文件的JFIF标识符中的版本号不是1.1,则禁用OutGuess检测。
-s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
-d 打印带行号的调试信息。
-t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
j 检测图像中的信息是否是用jsteg嵌入的。
o 检测图像中的信息是否是用outguess嵌入的。
p 检测图像中的信息是否是用jphide嵌入的。
i 检测图像中的信息是否是用invisible secrets嵌入的。

一般命令为:.\stegdetect.exe -tjopi -s 10 Misc.jpg

如果反馈是negative那就说明没看出来是什么类型

压缩包分析

zip伪加密

https://blog.csdn.net/xiaozhaidada/article/details/124538768

crc32

这是一个很暴力的方法,只能适用于压缩包文件内容很小,因为我们不去爆破压缩包的密码,而是直接去爆破源文件的内容,我这里附上几个脚本代码吧,感觉zip包的题目很少出到

crc-1byte.py

import binascii
import stringdef crack_crc():print('-------------Start Crack CRC-------------')crc_list = [0xda6fd2a0, 0xf6a70, 0x70659eff, 0x862575d]#文件的CRC32值列表,注意顺序comment = ''chars = string.printablefor crc_value in crc_list:for char1 in chars:char_crc = binascii.crc32(char1.encode())#获取遍历字符的CRC32值calc_crc = char_crc & 0xffffffff#将获取到的字符的CRC32值与0xffffffff进行与运算if calc_crc == crc_value:#将每个字符的CRC32值与每个文件的CRC32值进行匹配print('[+] {}: {}'.format(hex(crc_value),char1))comment += char1print('-----------CRC Crack Completed-----------')print('Result: {}'.format(comment))if __name__ == '__main__':crack_crc()

crc-2byte.py

import binascii
import stringdef crack_crc():print('-------------Start Crack CRC-------------')crc_list = [0xef347b51, 0xa8f1b31e, 0x3c053787, 0xbbe0a1b]#文件的CRC32值列表,注意顺序comment = ''chars = string.printablefor crc_value in crc_list:for char1 in chars:for char2 in chars:res_char = char1 + char2#获取遍历的任意2Byte字符char_crc = binascii.crc32(res_char.encode())#获取遍历字符的CRC32值calc_crc = char_crc & 0xffffffff#将获取到的字符的CRC32值与0xffffffff进行与运算if calc_crc == crc_value:#将获取字符的CRC32值与每个文件的CRC32值进行匹配print('[+] {}: {}'.format(hex(crc_value),res_char))comment += res_charprint('-----------CRC Crack Completed-----------')print('Result: {}'.format(comment))if __name__ == '__main__':crack_crc()

crc-3byte.py

import binascii
import stringdef crack_crc():print('-------------Start Crack CRC-------------')crc_list = [0x2b17958, 0xafa8f8df, 0xcc09984b, 0x242026cf]#文件的CRC32值列表,注意顺序comment = ''chars = string.printablefor crc_value in crc_list:for char1 in chars:for char2 in chars:for char3 in chars:res_char = char1 + char2 + char3#获取遍历的任意3Byte字符char_crc = binascii.crc32(res_char.encode())#获取遍历字符的CRC32值calc_crc = char_crc & 0xffffffff#将遍历的字符的CRC32值与0xffffffff进行与运算if calc_crc == crc_value:#将获取字符的CRC32值与每个文件的CRC32值进行匹配print('[+] {}: {}'.format(hex(crc_value),res_char))comment += res_charprint('-----------CRC Crack Completed-----------')print('Result: {}'.format(comment))if __name__ == '__main__':crack_crc()

crc-4byte.py

import binascii
import stringdef crack_crc():print('-------------Start Crack CRC-------------')crc_list = [0xc0a3a573, 0x3cb6ab1c, 0x85bb0ad4, 0xf4fde00b]#文件的CRC32值列表,注意顺序comment = ''chars = string.printablefor crc_value in crc_list:for char1 in chars:for char2 in chars:for char3 in chars:for char4 in chars:res_char = char1 + char2 + char3 + char4#获取遍历的任意4Byte字符char_crc = binascii.crc32(res_char.encode())#获取遍历字符的CRC32值calc_crc = char_crc & 0xffffffff#将遍历的字符的CRC32值与0xffffffff进行与运算if calc_crc == crc_value:#将获取字符的CRC32值与每个文件的CRC32值进行匹配print('[+] {}: {}'.format(hex(crc_value),res_char))comment += res_charprint('-----------CRC Crack Completed-----------')print('Result: {}'.format(comment))if __name__ == '__main__':crack_crc()

crc-5byte.py

import binascii
import stringdef crack_crc():print('-------------Start Crack CRC-------------')crc_list = [0x5a904a21]#文件的CRC32值列表,注意顺序comment = ''chars = 'abcdefghijklmnopqrstuvwxyz\{\}'for crc_value in crc_list:for char1 in chars:for char2 in chars:for char3 in chars:for char4 in chars:for char5 in chars:res_char = char1 + char2 + char3 + char4 + char5#获取遍历的任意5Byte字符char_crc = binascii.crc32(res_char.encode())#获取遍历字符的CRC32值calc_crc = char_crc & 0xffffffff#将遍历的字符的CRC32值与0xffffffff进行与运算if calc_crc == crc_value:#将获取字符的CRC32值与每个文件的CRC32值进行匹配print('[+] {}: {}'.format(hex(crc_value),res_char))comment += res_charprint('-----------CRC Crack Completed-----------')print('Result: {}'.format(comment))if __name__ == '__main__':crack_crc()

上面的五个代码其实也就是对应的不同字节数的压缩文件

zip包明文攻击

  • 我们为zip压缩文件所设定的密码,首先被转换成 3 3 3 32 32 32 bitkey,所以可能的 key 的组合是 2 96 2^{96} 296,这是个天文数字,如果用暴力穷举的方式是不太可能的,除非你的密码比较短或者有个厉害的字典。
  • 压缩软件用这3个key加密所有包中的文件,也就是说,所有文件的key是一样的,如果我们能够找到这个key,就能解开所有的文件。
  • 如果我们找到加密压缩包中的任意一个文件,这个文件和压缩包里的文件是一样的,我们把这个文件用同样的压缩软件同样的压缩方式进行无密码的压缩,得到的文件就是我们的Known plaintext(已知明文)。用这个无密码的压缩包和有密码的压缩包进行比较,分析两个包中相同的那个文件,抽取出两个文件的不同点,就是那3个key了,如此就能得到 key 。两个相同文件在压缩包中的字节数应该相差 12 12 12byte,就是那 3 3 3key了。虽然我们还是无法通过这个key还原出密码,但是我们已经可以用这个key解开所有的文件,所以已经满足我们的要求了,毕竟对我们而言,得到解压后的文件比得到密码本身更重要。

简单说一下就是两个通过相同加密的文件,如果已经有一个压缩包是被解出来了(伪加密),我们就可以将这个压缩包作为明文对另一个压缩包进行攻击,最终破解出第二个压缩包的密码,我们使用ARCHPR工具进行攻击:(不过貌似挺慢)

在这里插入图片描述

其它

条形码扫描

https://online-barcode-reader.inliteresearch.com/

例题:https://adworld.xctf.org.cn/challenges/details?hash=eaf7cbbe-2377-433f-841a-461d431d4a72_2

pyc反编译

使用Uncompyle6进行反编译,例题:https://adworld.xctf.org.cn/challenges/details?hash=7a4e06c0-811c-4493-a628-886dc5bd59b4_2

题目思路大概是丢进stegslove,然后观察色道发现有一个色道隐写的二维码,然后扫描后发现一串字母和数字,然后Hex解码后发现可能是pyc文件,于是丢进winhex然后使用Uncompyle6进行反编译,命令:uncompyle6 -o ans.py kk.pyc,然后打开ans.py跑一下代码就出来了

# uncompyle6 version 3.8.0
# Python bytecode 2.7 (62211)
# Decompiled from: Python 3.9.4 (tags/v3.9.4:1f2e308, Apr  6 2021, 13:40:21) [MSC v.1928 64 bit (AMD64)]
# Embedded file name: 1.py
# Compiled at: 2016-10-18 15:12:57def flag():str = [102, 108, 97, 103, 123, 51, 56, 97, 53, 55, 48, 51, 50, 48, 56, 53, 52, 52, 49, 101, 55, 125]flag = ''for i in str:flag += chr(i)print flag

数据转换到ASCII乱码

题目链接:https://adworld.xctf.org.cn/challenges/details?hash=d8d12470-34b6-4146-a27e-5cd1c057d186_2

碰到了这样的题目,给你一串十六进制的字符串,然后就没有信息了,直接转换ASCII会乱码,搜索后发现是数据偏移了 128 128 128 位,然后,mark一下博主的脚本:

cipher = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd'
print(''.join([chr(int(cipher[i:i + 2], 16) - 128) for i in range(0,len(cipher), 2)]))

strings命令

strings命令加上grep筛选和正则表达可以帮我们在文件中特定的字段,例如:strings 8deb5f0c2cd84143807b6175f58d6f3f.core| grep {.*}

动态图片分解

网站:https://tu.sioe.cn/gj/fenjie/

关于PDF的数据隐写

刚才做了一道大无语的题,就是:

https://adworld.xctf.org.cn/challenges/details?hash=3dc21fd0-684f-4a05-9360-4c2339c9a377_2

CSAW的一道MSIC数据隐写,数据是隐写在这个pdf中的,不过可能颜色上做了遮盖,用浏览器打开ctrl+a一键提取所有字,就能得到flag

PIL库

常用的一些功能如下:

from PIL import Image,ImageFilter,ImageGrab,ImageDraw,ImageFont
# 创建图片:宽800*高600,红色
imNew = Image.new('RGB',(800,600),(255,0,0))
# 显示图片
#imNew.show()
# 抓取屏幕
imGrab = ImageGrab.grab()
imGrab.save('grab.jpg', 'jpeg')
# 打开图片
im = Image.open('1.jpg')
# 复制图片
im1 = im.copy()
im2 = im.copy()
im3 = im.copy()
im4 = im.copy()
im5 = im.copy()
im6 = im.copy()
im7 = im.copy()
# 获得图片宽高:
w, h = im.size
print('图片宽高:{} * {}'.format(w, h))
# 缩略图(图片不会被拉伸,只能缩小)
im.thumbnail((w//2, h//2))
im.save('1_thumbnail.jpg', 'jpeg')
# 缩放(图片可能会被拉伸,可缩小也可放大)
im1 = im1.resize((w//2, h//2))
im1.save('1_resize.jpg', 'jpeg')
# 模糊图片
im2 = im2.filter(ImageFilter.BLUR)
im2.save('1_blur.jpg', 'jpeg')
# 旋转图片,逆时钟旋转45度
im3 = im3.rotate(45)
im3.save('1_rotate.jpg', 'jpeg')
# 图片转换:左右转换 FLIP_LEFT_RIGHT,上下转换 FLIP_TOP_BOTTOM
im4 = im4.transpose(Image.FLIP_LEFT_RIGHT)
im4.save('1_transpose.jpg', 'jpeg')
# 图片裁剪
box = (200,200,400,400) #左上角(0,0),4元组表示坐标位置:左、上、右、下
im5 = im5.crop(box)
im5.save('1_crop.jpg', 'jpeg')
# 图片上添加文字
draw = ImageDraw.Draw(im6)
#truetype设置字体、文字大小
#stxingka.ttf华文行楷 simkai.ttf 楷体 simli.ttf 隶书
font = ImageFont.truetype("C:\\WINDOWS\\Fonts\\stxingka.ttf", 20) 
draw.text((100,100), ('hello word \n你好,世界'), fill='#0000ff', font=font)
im6.save('1_drawText.jpg', 'jpeg')
# 图片上添加图片(粘贴图片)
imTmp = Image.new('RGB',(30,30),'blue')
im7.paste(imTmp, (50,50)) #第2个参数为坐标
im7.save('1_paste.jpg','jpeg')
# 图片横向拼接:拼接上面im6、im7(两张图片大小一样)
im6Width, im6Height = im6.size
imHorizontal = Image.new('RGB', (im6Width * 2, im6Height))
imHorizontal.paste(im6, (0,0))
imHorizontal.paste(im7, (im6Width,0))
imHorizontal.save('1_horizontal.jpg', 'jpeg')
# 图片竖向拼接:拼接上面im6、im7
imVertical = Image.new('RGB', (im6Width, im6Height*2))
imVertical.paste(im6, (0,0))
imVertical.paste(im7, (0,im6Height))
imVertical.save('1_vertical.jpg', 'jpeg')

ImageDraw 模块提供了 Draw 类,它能在 Image 实例上进行简单的 2D 绘画。你可以使用这个模块来创建新图像或者修饰现有图像。

有关 PIL 的更高级绘图库,可以参考 aggdraw模块
创建 Draw 类的实例

要在 Image 实例上绘制新的图样,首先要创建一个 Draw 类的实例。

这里粗略介绍下 Draw 类中的基本绘画操作函数(英文都是函数名):

  • 弦/弧/扇形: chord / arc / pieslice
  • 椭圆: ellipse
  • 线段/多段线: line
  • 点: point
  • 多边形: polygon
  • 矩形: rectangle
  • 文字: text
  • 文字大小: textsize

详细的使用说明,请看官方文档:Draw 类的各函数使用说明

画直线

Draw 类提供了 line(xy,options) 函数绘制直线。 其中 xy 表示坐标列表,它可以是任何包含 2 2 2 元组 [(x,y),…] 或者数字 [x,y,…] 的序列对象,至少包含两个坐标:

  • [ ( x 1 , y 1 ) , ( x 2 , y 2 ) , … ] [(x1, y1), (x2, y2), …] [(x1,y1),(x2,y2),] :包含若干个元组的列表
  • [ x 1 , y 1 , x 2 , y 2 , … ] [x1, y1, x2, y2, …] [x1,y1,x2,y2,] :按照顺序包含坐标信息的列表
  • [ x 1 , y 1 , ( x 2 , y 2 ) , … ] [x1, y1, (x2, y2), …] [x1,y1,(x2,y2),] :以上两种情况的混合
  • ( ( x 1 , y 1 ) , ( x 2 , y 2 ) , … ) ((x1, y1), (x2, y2), …) ((x1,y1),(x2,y2),) :包含若干个元组的元组
  • ( x 1 , y 1 , x 2 , y 2 , … ) (x1, y1, x2, y2, …) (x1,y1,x2,y2,) :按照顺序包含坐标信息的元组
  • ( x 1 , y 1 , ( x 2 , y 2 ) , … ) (x1, y1, (x2, y2), …) (x1,y1,(x2,y2),) :以上两种情况的混合options 可用的选项:
    • fill = (R,G,B) :指定线条颜色
    • width = integer :指定线条宽度,单位是px

附上一道例题:梅花香之苦寒来

脚本:

from PIL import Image,ImageDraw
import re
img = Image.new('RGB',(272,272),(0,0,0))
drawAvatar = ImageDraw.Draw(img)with open('key.txt','r') as f:key = f.read()key = key.split('\n')for i in range(len(key)):pox = (key[i])indx = pox.find(',')a = int(pox[1:indx])b = int(pox[indx+1:len(pox)-1])print(a,b)tp = (a,b)drawAvatar.point(tp,fill=(255,255,255))img.show()

MISC工具包

其实MISC的题目很杂很杂,大家可以多多去一些平台做一些MISC的题目,拓展一下自己的见识,我这里附上我常用的MISC工具包吧(一般情况下应该够用):

链接:https://pan.baidu.com/s/10IbBjwmZQvvQrXdDTYL-zQ
提取码:vet6


http://chatgpt.dhexx.cn/article/TEWCyJXF.shtml

相关文章

misc cover

文件打开来就是一张图片,开始用010、binwalk、foremost都没有发现答案,最后就在网上搜了在线图片隐写的工具, 最后找到了,网站:www.atoolbox.net/Tool.php?Id699 得到了一个网址,打开网址是一个缺了角的二维码 手动拼…

.misc

眼见非实 下载 解压文件 打开后是一个word文档 很难找到线索 用工具尝试一下(010editor) 可以看到 开头为504B0304 zip压缩包的文件头 所以吧word文档后缀改为zip压缩包形式 重新解压打开 打开后又出现了新文件 文件查找 最终在document.xml中找到flag 再也没有纯洁的灵魂 下…

【MISC】从零开始学MISC

1.了解ext3文件系统,熟练使用mount 将linux文件拽入虚拟机。 strings linux //以字符串模式查看文件 strings linux | grep flag //筛选flag字样 mount linux /mnt //使用mount挂载文件系统或使用binwalk提取文件 find /mnt -name "flag.*" -print /…

CTF基础-MISC篇

编码是什么? 编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机 编程语言的代码简称编码。 用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据 转换成规定的电脉冲信号。 编码在电子计算机、电视、遥控和通讯等方…

MISC:音频隐写的破解方法.

MISC:音频隐写的破解方法. Misc即杂项,是信息隐藏又称信息伪装,就是通过减少载体的某种冗余,如空间冗余、数据冗余等,来隐藏敏感信息,达到某种特殊的目的。 信息隐藏打破了传统密码学的思维范畴&#xff0…

MISC入门——文件操作

MISC入门之(一)——文件操作 前言文件操作一、文件类型识别(一)file命令(二)winhex/010Edit工具 二 、文件分离(一)binwalk、foremost、dd1.binwalk2.foremost3.dd (二&a…

MISC入门总结

《re入门到Misc精通》,哄堂大笑了,家人们。 总结在后面 ctf.showhttps://ctf.show/challenges#misc2-1134 ctfshow misc入门题(还没写完,持续更新) 图片篇第一题 签到题 打开直接给flag qq提取文字交了 第二题 给…

【安全攻防知识-4】CTF之MISC

1、MISC介绍 MISC,中文即杂项,包括隐写,数据还原,脑洞、社会工程、压缩包解密、流量分析取证、与信息安全相关的大数据等。 竞赛过程中解MISC时会涉及到各种脑洞,各种花式技巧,主要考察选手的快速理解、学…

Failed building wheel for pycocotools

最近在部署tensorflow2的时候,总是遇到下面错误:(ERROR:Failed building wheel for pycocotools),具体信息如下: 一般这种问题,会出现在windows安装上,可以使用下面命令进行安装&…

Failed building wheel for tokenizers

安装transfomers成功了,但是tokenizers怎么也装不上 如图,安装了rust也同样报错 那策略就是自己分开安装tokenizer 可以直接pip,也可以去官网自己下载,注意与tranformers版本的对应 pip install tokenizers0.10.1

Python 小知识,wheel 文件的说明与使用

文章目录 ⛳️ 需求实战背景⛳️ 安装实战 ⛳️ 需求实战背景 .whl 文件是以 wheel 格式保存的安装包,而且 wheel 是 Python 发行版标准内置包,其包含 Python 所有安装文件,wheel 文件使用 zip 格式压缩,本质也是压缩文件。 按照…

android wheel控件滚动,android 滚动选择插件 android-wheel

效果图: 源码: package kankan.wheel.demo; import java.util.Calendar; import kankan.wheel.R; import kankan.wheel.widget.OnWheelChangedListener; import kankan.wheel.widget.OnWheelClickedListener; import kankan.wheel.widget.OnWheelScrollL…

详解Unity中的车轮碰撞器Wheel Collider

前言 碰撞体组件定义了物体的物理性状,Unity中有一系列基本碰撞体,我们可以使用它们组合成任意形状,但除了基本碰撞体之外,Untiy还提供了诸如车轮(Wheel)、网格(Mesh)、地形(Terrain)等碰撞器,就比如Wheel Collider&a…

html 显示音标,wheel的音标

这两个单词读音一样吗 第一个:will 第二个:wheelwill [wil,wel] wheel [hwi:l] wheel发音的时候嘴唇更加紧张。 wheel tower的音标 英文原文: wheel tower 英式音标: [wiːl] [ˈtaʊə] 美式音标: [wil] [ˈtaʊɚ] w…

wheelCollider

mass 质量 质量越大摩擦力会越大 Suspension Distance 车轮悬架距离 wheelcollider.morotTorque 驱动力 brakeTorque 这个是刹车的动力 steerAngle 这个是控制车子的转向 wheelcollider.rpm 这个可以获取车轮的转速 float speed (wc.rpm ) * (wc.radius * 2 * Mathf.PI) * 60…

wheel安装+使用wheel安装第三方库+临时换源安装和永久换源安装

上一篇文章:Python要点及其环境搭建Pycharm简单使用教程 wheel安装使用wheel安装第三方库临时换源安装和永久换源安装 wheel安装使用wheel安装第三方库临时换源安装永久换源安装python的三种不同编辑器输出hello world下一篇文章 wheel安装 命令行下pip install w…

卡方检验还是费歇尔精确检验?

1,卡方检验(chi-square test)和费歇尔精确检验(fisher’s exact test)都可以对2X2的表格进行检验,如何进行选择? 假设有如下的2X2表格(CVD为心血管病): a, …

假设检验之卡方检验

之前我对卡方检验的了解都是一知半解的,即知道作用是对离散变量分布差异的比较,根据期望频数和观察频数的差异计算出来一个卡方值,之后根据自由度和显著性水平查卡方分布对应的临界值,比较大小得出有无明显差异的结论。 一般我们都…

计量经济学及Stata应用 陈强 第七章异方差习题7.2

7.2 房价回归是否存在异方差?数据集hprice2a.dta包含美国波士顿506个社区的房屋中位数价格的横截面数据,考虑以下特征价格回归: 其中,lprice为房价的对数,lnox为空气污染程度的对数,ldist为社区到就业中心距离的对数&a…

R 两组样本t检验 wilcoxon检验、卡方、fisher精确检验

一般统计方法R实现 文章目录 一、读入数据二、连续性变量1.正态性和方差齐性检验2.描述统计量3.独立样本t检验和wilcoxon秩和检验 三、四格表卡方或fisher精确检验(OR【95%CI】)1.计算各组频数和相对频率2.整理数据进行检验 总结 一、读入数据 library(…