最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Linux下設(shè)置錄音筆時(shí)間

 更新時(shí)間:2017年12月19日 08:34:24   作者:依云  
這篇文章主要介紹了如何在Linux下設(shè)置錄音筆時(shí)間的方法,有這方面需要的朋友跟著學(xué)習(xí)下吧。

買了一個(gè)錄音筆,效果比使用筆記本話筒錄音好多了還省電。當(dāng)然啦,我也曾試過使用手機(jī)錄音,結(jié)果是,沒能錄多久就中斷了(Android 就是這么不靠譜)。

我的錄音需要記錄較為準(zhǔn)確的時(shí)間信息。錄音筆怎么知道現(xiàn)在是什么時(shí)間呢?還好它沒有跟風(fēng),用不著聯(lián)網(wǎng)!

它帶了一個(gè)小程序,叫「錄音筆專用時(shí)間同步工具」(英文叫「SetUDiskTime」,可以搜到的)。是一個(gè) EXE 文件,以及一個(gè) DLL 文件。功能很棒,沒有廣告,沒有推薦,也不需要注冊什么亂七八糟的賬戶,甚至都不需要打開瀏覽器訪問人家官網(wǎng)。就彈一個(gè)框,顯示當(dāng)前時(shí)間,確定一下就設(shè)置好時(shí)間了。這年頭,這么單純的 Windows 軟件還真是難得呢。

然而,它不支持我用的 Linux 啊。雖然我努力地保證這錄音筆一直有電,但是時(shí)間還是丟失了幾次,它的FAT文件系統(tǒng)也臟了幾次。每次我都得開 WinXP 虛擬機(jī)來設(shè)置時(shí)間,好麻煩。

Wine 是不行的,硬件相關(guān)的東西基本上沒戲。拿 Procmon 跟蹤了一下,也沒什么復(fù)雜的操作,主要部分就幾個(gè) DeviceIoControl 調(diào)用,但是看不到調(diào)用參數(shù)。試了試 IDA,基本看不懂……不過倒是能知道,它通過 IOCTL_SCSI_PASSTHROUGH 直接給設(shè)備發(fā)送了 SCSI 命令。

既然跟蹤不到,試試抓 USB 的包好了。本來想用 Wireshark 的,但是 WinXP 版的 Wireshark 看來不支持。又嘗試了設(shè)備分配給 VBox 然后在 Linux 上抓包,結(jié)果 permission denied……我是 root 啊都被 deny 了……

那么,還是在 Windows 上抓包吧。有一個(gè)軟件叫 USBPcap,下載安裝最新版,結(jié)果遇到 bug。那試試舊版本吧。官網(wǎng)沒給出舊版本的下載地址,不過看到下載鏈接帶上了版本號,這就好辦了。去 commit log 里找到舊的版本號替換進(jìn)去,https://dl.bintray.com/desowin/USBPcap/USBPcapSetup-1.0.0.7.exe,就好了~

抓好包,取到 Linux 下扔給 Wireshark 解讀。挺小的呢,不到50個(gè)包,大部分還都是重復(fù)的。很快就定位到關(guān)鍵位置了:

一個(gè) 0xcc 命令發(fā)過去,設(shè)備回復(fù)「ACTIONSUSBD」,大概是讓設(shè)備做好準(zhǔn)備。然后一個(gè) 0xb0 命令,帶上7字節(jié)數(shù)據(jù)發(fā)過去,時(shí)間就設(shè)置好了。簡單明了,不像那些小米空氣凈化器之類的所謂「物聯(lián)網(wǎng)」,通訊加密起來不讓人好好使用。

那么,這7字節(jié)是怎么傳遞時(shí)間數(shù)據(jù)的呢?我首先檢查了UNIX時(shí)間戳,對不上。后來發(fā)送這個(gè)字串看上去挺像YYYYMMDDHHMMSS格式的,只是明顯不是當(dāng)時(shí)的時(shí)間。啊,它是十六進(jìn)制的嘛!心算了幾個(gè),符合!再拿出我的 Python 牌計(jì)算器,確定年份是小端序的16位整數(shù)。

好了,協(xié)議細(xì)節(jié)都弄清楚了,接下來是實(shí)現(xiàn)。我原以為我得寫個(gè) C 程序,調(diào)幾個(gè) ioctl 的,后來網(wǎng)友說有個(gè) sg3_utils 包。甚好,直接拿來用 Python 調(diào),省得研究那幾個(gè) ioctl 要怎么寫。

#!/usr/bin/env python3
import os
import sys
import struct
import subprocess
import datetime
def set_time(dev):
 cmd = ['sg_raw', '-s', '7', dev, 'b0', '00', '00', '00', '00', '00',
   '00', '07', '00', '00', '00', '00']
 p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
 dt = datetime.datetime.now()
 data = struct.pack('<HBBBBB', dt.year, dt.month, dt.day,
      dt.hour, dt.minute, dt.second)
 _, stderr = p.communicate(data)
 ret = p.wait()
 if ret != 0:
 raise subprocess.CalledProcessError(ret, cmd, stderr=stderr)
def actionsusbd(dev):
 cmd = ['sg_raw', '-r', '11', dev, 'cc', '00', '00', '00', '00', '00',
   '00', '0b', '00', '00', '00', '00']
 subprocess.run(cmd, check=True, stderr=subprocess.PIPE)
def main():
 if len(sys.argv) != 2:
 sys.exit('usage: setudisktime DEV')
 dev = sys.argv[1]
 if not os.access(dev, os.R_OK | os.W_OK):
 sys.exit(f'insufficient permission for {dev}')
 actionsusbd(dev)
 set_time(dev)
if __name__ == '__main__':
 main()

相關(guān)文章

  • Linux使用ncdu查看磁盤使用的操作詳解

    Linux使用ncdu查看磁盤使用的操作詳解

    ncdu?(NCurses?Disk?Usage)?是一個(gè)用于?Linux?和類?unix?系統(tǒng)的磁盤實(shí)用程序,它提供了一種比?du?等傳統(tǒng)命令更具交互性和用戶友好性的方式來查看和分析磁盤空間使用情況,本文給大家介紹了Linux使用ncdu查看磁盤使用的操作,需要的朋友可以參考下
    2025-02-02
  • 詳解Linux中nginx如何重啟、啟動與停止

    詳解Linux中nginx如何重啟、啟動與停止

    這篇文章主要給大家詳細(xì)介紹了Linux中nginx如何重啟、啟動與停止/設(shè)置開機(jī)自啟動,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過來看看吧<BR>
    2023-12-12
  • 解決啟動php-fpm后訪問不到php文件的辦法

    解決啟動php-fpm后訪問不到php文件的辦法

    今天碰了一個(gè)很奇怪的問題,當(dāng)啟動php-fpm后,發(fā)現(xiàn)居然訪問不到php文件了,后來通過查看日志、分析+搜索終于解決了,現(xiàn)在將整個(gè)過程分享給大家,也方便同樣遇到這個(gè)問題的同學(xué)們參考借鑒,下面來一起看看吧。
    2016-12-12
  • Vmvare虛擬機(jī)給ubuntu根目錄分區(qū)介紹

    Vmvare虛擬機(jī)給ubuntu根目錄分區(qū)介紹

    大家好,本篇文章主要講的是Vmvare虛擬機(jī)給ubuntu根目錄分區(qū)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Linux文件操作新手指南之關(guān)于install命令的用法

    Linux文件操作新手指南之關(guān)于install命令的用法

    這篇文章主要介紹了Linux文件操作新手指南之關(guān)于install命令的用法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 解決Linux系統(tǒng)yum安裝報(bào)錯(cuò)Cannot find a valid baseurl for repo的問題

    解決Linux系統(tǒng)yum安裝報(bào)錯(cuò)Cannot find a valid base

    本文介紹了如何在Linux系統(tǒng)中設(shè)置本地yum源,包括修改yum配置文件、禁用默認(rèn)網(wǎng)絡(luò)源、創(chuàng)建掛載點(diǎn)以及掛載鏡像文件等步驟,操作詳細(xì),適合需要離線安裝軟件或更新系統(tǒng)的用戶參考
    2024-09-09
  • 詳解linux系統(tǒng)調(diào)用原理

    詳解linux系統(tǒng)調(diào)用原理

    這篇文章給大家詳細(xì)講述了linux系統(tǒng)調(diào)用原理的相關(guān)知識點(diǎn)內(nèi)容,對此有興趣的朋友參考學(xué)習(xí)下。
    2018-08-08
  • CentOS6.4安裝Apache+MySQL+PHP圖文教程

    CentOS6.4安裝Apache+MySQL+PHP圖文教程

    這篇文章主要介紹了CentOS6.4安裝Apache+MySQL+PHP圖文教程,需要的朋友可以參考下。
    2016-10-10
  • Linux curl表單登錄或提交與cookie使用詳解

    Linux curl表單登錄或提交與cookie使用詳解

    這篇文章主要給大家介紹了關(guān)于Linux curl表單登錄或提交與cookie使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Linux系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 詳解Linux中幾個(gè)獲取硬件詳細(xì)信息的命令

    詳解Linux中幾個(gè)獲取硬件詳細(xì)信息的命令

    這篇文章主要介紹了詳解Linux中幾個(gè)獲取硬件詳細(xì)信息的命令,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評論

平凉市| 上饶市| 广河县| 嫩江县| 岱山县| 林口县| 余姚市| 洱源县| 成都市| 井陉县| 阳新县| 武安市| 烟台市| 高邮市| 浦东新区| 玛曲县| 衢州市| 广南县| 陕西省| 合肥市| 马龙县| 雷州市| 大英县| 准格尔旗| 碌曲县| 东莞市| 鲁甸县| 呼和浩特市| 香港 | 龙游县| 改则县| 定南县| 正定县| 巴里| 万源市| 贺州市| 静安区| 普定县| 灵山县| 三台县| 南岸区|