สร้าง ID เฉพาะของเครื่องที่สอดคล้องกัน


20

เราสามารถสร้าง id ที่ไม่ซ้ำกันสำหรับพีซีแต่ละเครื่องเช่น uuuidgen แต่มันจะไม่เปลี่ยนแปลงเว้นแต่จะมีการเปลี่ยนแปลงฮาร์ดแวร์หรือไม่? ฉันกำลังคิดเกี่ยวกับการรวม CPUID และ MACADDR และแฮชพวกเขาเพื่อสร้าง ID ที่สอดคล้องกัน แต่ฉันไม่มีความคิดวิธีแยกวิเคราะห์พวกเขาโดยใช้ bash script สิ่งที่ฉันรู้คือฉันจะได้รับ CPUID จาก

dmidecode -t 4 | grep ID

และ

ifconfig | grep ether

จากนั้นฉันต้องรวมสตริง hex เหล่านั้นและแฮชใช้ sha1 หรือ md5 เพื่อสร้างสตริง hex ความยาวคงที่
ฉันจะแยกวิเคราะห์ผลลัพธ์นั้นได้อย่างไร


4
ปัญหาที่คุณพยายามแก้ไขโดยใช้วิธีนี้คืออะไร
Darkhogg

1
ฉันอยู่กับ Darkhogg โดยทั่วไปแล้วเป็นความคิดที่ดีที่จะพยายามทำสิ่งต่าง ๆ เหล่านี้ในยุคนี้ การจำลองเสมือนทำให้การเชื่อมโยงซอฟต์แวร์กับฮาร์ดแวร์ทางกายภาพนั้นไม่มีจุดหมาย โดยปกติแล้วจะมีคำตอบที่ดีกว่าถ้าคุณตรวจสอบความต้องการของคุณอย่างใกล้ชิด (ซึ่งเป็นสิ่งที่ Darkhogg กำลังขับขี่อยู่)
Calphool

4
ฉันไม่ใช้วิธีนี้ในการผูกซอฟต์แวร์ไปยังเครื่องมันเป็นแท่นขุดเจาะเหมืองแร่ลินุกซ์ที่จะต้องระบุตัวเองเพื่อการควบคุมระบบคลาวด์และการบริการการตรวจสอบแทนการตั้งชื่อพันของแท่นขุดเจาะตนเองฉันจำเป็นต้องระบุตัวตนของพวกเขาโดยใช้หมายเลขของฮาร์ดแวร์ของพวกเขา
Uray

1
@ user77710: ถ้าเป็นเช่นนั้นคุณสนใจฮาร์ดแวร์จริงๆหรือเปล่า? ทำไมไม่เพียงแค่สร้าง UUID บนเครื่องหากไม่มีอยู่ นั่นคือประเด็นของ UUID - พวกมันมีความเป็นสากล (อัตราต่อรองของการซ้อนทับนั้นไม่น่าเป็นไปได้ทางดาราศาสตร์) serverfault.com/questions/103359/how-to-create-a-uuid-in-bash
Calphool

1
@JoeRounceville - ฉันไม่ได้หมายความว่าSecureBootเองก็แก้ปัญหา - แม้ว่ามันจะสนับสนุนใบรับรองลงนามด้วยตนเอง - แต่ของวิธีการ แต่ใช้ API ที่เสนอโดยเฟิร์มแวร์ของระบบ- และระบบ UEFI ใด ๆ จะมี UUID มากเท่าที่คุณจะต้องตั้งค่าในชื่อตัวแปรเฟิร์มแวร์แต่ละตัว - ดูคำตอบของฉัน นอกจากนี้คุณไม่จำเป็นต้องมีแอปพลิเคชัน - หรือbash- เพื่อสร้าง UUID ให้คุณบน linux ใด ๆ cat /proc/sys/kernel/random/uuid.
mikeserv

คำตอบ:


21

แล้วสองคนนี้ล่ะ:

$ sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g'
52060201FBFBEBBF
$ ifconfig | grep eth1 | awk '{print $NF}' | sed 's/://g'
0126c9da2c38

จากนั้นคุณสามารถรวมและแฮชพวกเขาด้วย:

$ echo $(sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g') \
       $(ifconfig | grep eth1 | awk '{print $NF}' | sed 's/://g') | sha256sum 
59603d5e9957c23e7099c80bf137db19144cbb24efeeadfbd090f89a5f64041f  -

หากต้องการลบเส้นประต่อท้ายให้เพิ่มอีกหนึ่งไพพ์:

$ echo $(sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g') \
       $(ifconfig | grep eth1 | awk '{print $NF}' | sed 's/://g') | sha256sum |
  awk '{print $1}'
59603d5e9957c23e7099c80bf137db19144cbb24efeeadfbd090f89a5f64041f

เป็น @mikeserv ชี้ให้เห็นในคำตอบของเขาชื่ออินเตอร์เฟซสามารถเปลี่ยนระหว่างรองเท้า ซึ่งหมายความว่าอะไรคือ eth0 วันนี้อาจเป็น eth1 ในวันพรุ่งนี้ดังนั้นถ้าคุณ grep สำหรับeth0คุณอาจได้รับที่อยู่ MAC ที่แตกต่างกันในรองเท้าที่แตกต่างกัน ระบบของฉันไม่ทำงานในลักษณะนี้ดังนั้นฉันจึงไม่สามารถทดสอบได้จริง ๆ แต่วิธีแก้ปัญหาที่เป็นไปได้คือ:

  1. Grep สำหรับHWaddrในการส่งออกของifconfigแต่เก็บไว้ทั้งหมดไม่เพียง แต่ที่สอดคล้องกับ NIC ที่เฉพาะเจาะจง ตัวอย่างเช่นในระบบของฉันฉันมี:

    $ ifconfig | grep HWaddr
    eth1      Link encap:Ethernet  HWaddr 00:24:a9:bd:2c:28  
    wlan0     Link encap:Ethernet  HWaddr c4:16:19:4f:ac:g5  

    ด้วยการจับที่อยู่ MAC ทั้งสองและส่งต่อsha256sumคุณควรจะได้รับชื่อที่ไม่ซ้ำใครและมั่นคงโดยไม่คำนึงว่า NIC เรียกว่าอะไร:

    $ echo $(sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g') \
         $(ifconfig | grep -oP 'HWaddr \K.*' | sed 's/://g') | sha256sum |
          awk '{print $1}'
    662f0036cba13c2ddcf11acebf087ebe1b5e4044603d534dab60d32813adc1a5    

    โปรดทราบว่ากัญชาจะแตกต่างจากคนข้างต้นเพราะฉันกำลังผ่านทั้งที่อยู่ MAC ส่งกลับโดยการifconfigsha256sum

  2. สร้างแฮชตาม UUID ของฮาร์ดไดรฟ์ของคุณแทน:

    $ blkid | grep -oP 'UUID="\K[^"]+' | sha256sum | awk '{print $1}'
    162296a587c45fbf807bb7e43bda08f84c56651737243eb4a1a32ae974d6d7f4

มันเยี่ยมมาก แต่จะกำจัดเส้นท้ายได้อย่างไร '-'?
uray

@ user77710 ดูคำตอบที่อัพเดต
terdon

1
ฉันเดา cpuid แย่กว่านี้ ... wikipedia.org/wiki/cpuid
mikeserv

@ mikeserv อาใช่แน่นอนฉันเห็นจุดของคุณ ขอบคุณตอบแก้ไข
terdon

สร้าง ID เดียวกันสำหรับ guest OS ทั้งหมดบนโฮสต์เดียวกัน
Nitinkumar Ambekar

23

ประการแรกโปรดทราบว่า CPUID นั้นไม่ใช่เครื่องหมายระบุตำแหน่งที่สามารถเข้าถึงได้โดยทั่วไปสำหรับระบบใด ๆ หลังจาก Intel Pentium III ในขณะที่การแฮ็คมันด้วยที่อยู่ MAC อาจนำไปสู่การทำเครื่องหมายที่ไม่ซ้ำกันอย่างแน่นอนนี่เป็นเพราะคุณสมบัติเฉพาะของ MACs เองและ CPUID ในกรณีนั้นไม่มีอะไรมากไปกว่าสถานการณ์ ยิ่งกว่านั้นการแฮชที่เกิดขึ้นนั้นไม่น่าจะมีความเป็นเอกลักษณ์ใด ๆ มากกว่าเมนบอร์ดของ UUID และง่ายต่อการดึงข้อมูลและกระบวนการนั้นมีแนวโน้มที่จะผิดพลาดน้อยกว่ามาก จากwikipedia.org/wiki/cpuid :

EAX = 3 : หมายเลขซีเรียลของโปรเซสเซอร์

ดูเพิ่มเติมที่: Pentium III §การโต้เถียงเกี่ยวกับปัญหาความเป็นส่วนตัว

ส่งคืนหมายเลขซีเรียลของโปรเซสเซอร์ หมายเลขซีเรียลของโปรเซสเซอร์ได้รับการแนะนำใน Intel Pentium III แต่เนื่องจากข้อกังวลเกี่ยวกับข้อมูลส่วนบุคคลฟีเจอร์นี้จะไม่ถูกนำไปใช้กับรุ่นภายหลัง (ฟีเจอร์บิต PSN จะถูกล้างเสมอ) โปรเซสเซอร์ Efficeon และ Crusoe ของ Transmeta มีคุณสมบัตินี้เช่นกัน อย่างไรก็ตามซีพียูของ AMD ไม่ได้ใช้คุณสมบัตินี้ในซีพียูทุกรุ่น

คุณสามารถดู CPUID แจงตัวเองด้วยการทำหรือแม้เพียงแค่cat /proc/cpuinfolscpu

นี่ทำให้คุณได้รับที่อยู่ MAC ทั้งหมดสำหรับเครือข่ายอินเทอร์เฟซที่ลินุกซ์เคอร์เนลรู้จักผมคิดว่า:

ip a | sed '\|^ *link[^ ]* |!d;s|||;s| .*||'

อาจจำเป็นต้องกรองรายการดังกล่าวหากอาจรวมถึง nics เสมือนจริงกับ MAC ที่สร้างแบบสุ่ม คุณสามารถทำได้ด้วยการตั้งค่าสถานะในการโทรipโดยตรง ดูip a helpข้อมูลเกี่ยวกับวิธีการทำ

โปรดทราบด้วยว่าปัญหานี้ไม่ได้มีลักษณะเฉพาะipและจะต้องได้รับการจัดการหากคุณใช้ifconfigแต่สามารถจัดการได้อย่างน่าเชื่อถือมากขึ้นipซึ่งเป็นส่วนหนึ่งของiproute2ชุดเครือข่ายและได้รับการดูแลอย่างแข็งขันมากกว่าifconfigที่เป็นสมาชิก ของnet-toolsแพคเกจและเลื่อยที่ผ่านมาลินุกซ์เปิดตัวในปี 2001 เนื่องจากมีการเปลี่ยนแปลงฟีเจอร์ในเคอร์เนลตั้งแต่รีลีสล่าสุดifconfigเป็นที่ทราบกันดีว่ารายงานคุณสมบัติเครือข่ายบางอย่างผิดพลาดและควรหลีกเลี่ยงการใช้งานหากเป็นไปได้

แม้ว่าจะเข้าใจว่าการกรองด้วยชื่ออินเตอร์เฟสของเคอร์เนลeth[0-9]นั้นไม่ใช่วิธีการที่เชื่อถือได้เนื่องจากสิ่งเหล่านี้สามารถเปลี่ยนแปลงได้ตามลำดับของการตรวจจับแบบขนานโดยudevในระหว่างกระบวนการบู๊ต โปรดดูชื่อเครือข่ายที่คาดการณ์ได้สำหรับข้อมูลเพิ่มเติม

เนื่องจากdmidecodeไม่ได้ติดตั้งบนระบบของฉันฉันในตอนแรกคิดว่าจะแฮชรายการของ serials ฮาร์ดดิสก์ที่สร้างเช่น:

lsblk -nro SERIAL

ทำlsblk --helpเพื่อหาเบาะแสบางอย่างในการปรับแต่งรายการ - ตามประเภทของดิสก์ พิจารณาlspciและ / หรือlsusbอาจจะ

การรวมเข้าด้วยกันเป็นเรื่องง่าย:

{ ip a | sed ... ; lsblk ... ; } | #abbreviated... for brevity...
    tr -dc '[:alnum:]' | #deletes all chars not alphanumeric - including newlines
    sha256sum #gets your hash

ในขณะที่คุณได้แจ้งให้ฉันทราบว่าคุณกำลังป้อนทรัพยากรของผู้ใช้ในตอนท้ายของคุณไปยังรหัสที่ไม่ซ้ำกันและฮาร์ดดิสก์ไม่สามารถเชื่อถือได้ในการมีอยู่ฉันคิดว่าจะเปลี่ยนแทค

นั่นถือว่าฉันมองเข้าไปในระบบแฟ้มอีกครั้งและพบ/sys/class/dmi/idโฟลเดอร์ ฉันตรวจสอบไฟล์ไม่กี่ไฟล์:

cat ./board_serial ./product_serial

###OUTPUT###
To be filled by O.E.M.
To be filled by O.E.M.

อย่างไรก็ตามอันนี้ดูเหมือนจะค่อนข้างดี แต่ฉันจะไม่เผยแพร่ผลลัพธ์:

sudo cat /sys/class/dmi/id/product_uuid

ผมคาดหวังว่าของที่dmidecodeได้รับมากของข้อมูลของตนอยู่แล้วและในความเป็นจริงมันมีลักษณะเช่นนั้น ตามที่man dmidecodeคุณสามารถทำให้การใช้เครื่องมือนั้นง่ายขึ้นอย่างมากโดยการระบุอาร์กิวเมนต์:

dmidecode -s system-uuid

ถึงกระนั้นก็ง่ายขึ้นคุณสามารถอ่านไฟล์ได้ โปรดทราบว่าไฟล์นี้โดยเฉพาะระบุเมนบอร์ด นี่คือข้อความที่ตัดตอนมาจากเคอร์เนลโปรแกรมแก้ไขของ 2007ซึ่งเริ่มนำการส่งออกเหล่านี้ไปใช้กับ/sysfsระบบไฟล์เสมือน:

+DEFINE_DMI_ATTR_WITH_SHOW(bios_vendor,      0444, DMI_BIOS_VENDOR);
+DEFINE_DMI_ATTR_WITH_SHOW(bios_version,         0444, DMI_BIOS_VERSION);
+DEFINE_DMI_ATTR_WITH_SHOW(bios_date,        0444, DMI_BIOS_DATE);
+DEFINE_DMI_ATTR_WITH_SHOW(sys_vendor,       0444, DMI_SYS_VENDOR);
+DEFINE_DMI_ATTR_WITH_SHOW(product_name,         0444, DMI_PRODUCT_NAME);
+DEFINE_DMI_ATTR_WITH_SHOW(product_version,   0444, DMI_PRODUCT_VERSION);
+DEFINE_DMI_ATTR_WITH_SHOW(product_serial,    0400, DMI_PRODUCT_SERIAL);
+DEFINE_DMI_ATTR_WITH_SHOW(product_uuid,         0400, DMI_PRODUCT_UUID);
+DEFINE_DMI_ATTR_WITH_SHOW(board_vendor,         0444, DMI_BOARD_VENDOR);
+DEFINE_DMI_ATTR_WITH_SHOW(board_name,       0444, DMI_BOARD_NAME);
+DEFINE_DMI_ATTR_WITH_SHOW(board_version,     0444, DMI_BOARD_VERSION);
+DEFINE_DMI_ATTR_WITH_SHOW(board_serial,         0400, DMI_BOARD_SERIAL);
+DEFINE_DMI_ATTR_WITH_SHOW(board_asset_tag,   0444, DMI_BOARD_ASSET_TAG);
+DEFINE_DMI_ATTR_WITH_SHOW(chassis_vendor,    0444, DMI_CHASSIS_VENDOR);
+DEFINE_DMI_ATTR_WITH_SHOW(chassis_type,         0444, DMI_CHASSIS_TYPE);
+DEFINE_DMI_ATTR_WITH_SHOW(chassis_version,   0444, DMI_CHASSIS_VERSION);
+DEFINE_DMI_ATTR_WITH_SHOW(chassis_serial,    0400, DMI_CHASSIS_SERIAL);
+DEFINE_DMI_ATTR_WITH_SHOW(chassis_asset_tag, 0444, DMI_CHASSIS_ASSET_TAG);

คุณอาจสามารถใช้ข้อมูลนั้นเพียงอย่างเดียวเพื่อระบุระบบ - ถ้าเมนบอร์ดมีความเพียงพอ แต่คุณสามารถรวมข้อมูลนี้กับ MAC ของระบบในแบบเดียวกับที่ฉันแสดงให้เห็นว่าคุณอาจทำกับฮาร์ดดิสก์:

sudo sh <<\CMD | tr -dc '[:alnum:]' | sha256sum
        ip a | sed '\|^ *link[^ ]* |!d;s|||;s| .*||'
        cat /sys/class/dmi/id/product_uuid 
CMD

เคอร์เนล Linux ยังสามารถสร้าง UUID ให้คุณได้:

cat /proc/sys/kernel/random/uuid #new random uuid each time file is read

หรือ:

cat /proc/sys/kernel/random/boot_id #randomly generated per boot

ได้รับมันถูกสร้างขึ้นแบบสุ่มและคุณจะต้องคิดใหม่การกำหนด ID แต่มันเป็นเรื่องง่ายเหมือนที่จะได้รับอย่างน้อย และมันควรจะค่อนข้างมั่นคงถ้าคุณสามารถหาวิธีที่จะทำให้มันสำคัญ

สุดท้ายในระบบ UEFI สิ่งนี้จะง่ายกว่ามากเนื่องจากตัวแปรสภาพแวดล้อมเฟิร์มแวร์ของ EFI ทุกตัวมี UUID ของตนเอง ตัวแปรสภาพแวดล้อม{Platform,}LangCodes-${UUID}ควรมีอยู่ในทุกระบบของ UEFI ควรมีการรีบูตและแม้กระทั่งการอัพเกรดเฟิร์มแวร์และการดัดแปลงส่วนใหญ่และระบบ Linux ใด ๆ ที่efivarfsโหลดโมดูลสามารถแสดงรายการชื่อใดชื่อหนึ่งหรือทั้งสองชื่อได้อย่างง่ายดาย

printf '%s\n' /sys/firmware/efi/efivars/*LangCodes-*

แบบฟอร์มที่เก่ากว่า - LangCodes-${UUID}เห็นได้ชัดว่าเลิกใช้แล้วและในระบบที่ใหม่กว่านั้นควรจะเป็นPlatformLangCodes-${UUID}แต่ตามสเป็คหนึ่งหรืออื่น ๆ ควรจะปรากฏในทุกระบบ UEFI ด้วยความพยายามเพียงเล็กน้อยคุณสามารถกำหนดตัวแปรถาวรการรีบูตของคุณเองและอาจใช้ประโยชน์จากตัวสร้าง UUID ของเคอร์เนลมากขึ้น หากสนใจดูเป็นefitools


มันไม่ได้มีฮาร์ดดิสก์หรือดิสก์ใด ๆ ที่ทำงานอุปกรณ์ขุดของมันถ้าคุณไม่รู้ว่ามันคืออะไร diit.cz/sites/default/files/images/3988/ ......เครื่องเสมือนไม่สามารถเรียกใช้ 6 GPU ได้ในครั้งเดียว เมนบอร์ด
uray

อย่างไรก็ตามมันไม่ควรใช้หมายเลขสุ่มใด ๆ เนื่องจากเอาชนะจุดประสงค์ในการตั้งชื่อเครื่องอย่างสม่ำเสมอเนื่องจากพวกเขาไม่สามารถเปลี่ยนรหัสประจำตัวได้
uray

@ user77710 - แดงผู้ชายสิ่งนั้นเจ๋ง นั่นเป็นเครื่องเดียวเหรอ? อาจเป็นไปได้ว่าคุณถูกต้อง แต่อาจเป็นไปได้ด้วยคำสั่งผสม XDMX และ Chromium บางอย่าง - กราฟิกกระจายบางอย่าง อย่างไรก็ตามมันไม่สำคัญหรอก - ฉันเอามันย้อนหลัง ใครอยากจะเอาชนะตนเองจากเงินของพวกเขา ฉันคิดว่ามีบางสิ่งที่ให้สิทธิ์ใช้งานซอฟต์แวร์หรือบางอย่าง - คุณกำลังทำบัญชีธนาคาร
mikeserv

พวกเขามีกลอุบายที่ดีพวกเขามาถึงที่นั่น +1
terdon

@terdon - คำชมเชยชื่นชมมาก แต่ส่วนใหญ่แล้วพวกเขาไม่ใช่ลูกเล่น ip2ถูกออกแบบมาเพื่อสามารถแยกวิเคราะห์และมันอาจเป็นไปได้ว่าฉันไม่ได้ทำมันได้ดีพอ - grep/sedฉันสงสัยว่าสิ่งเดียวกันสามารถทำได้เกือบจะไม่มี udevadmน่าจะเป็นเหมือนกันสามารถทำได้อย่างง่ายดายด้วย และชื่อตัวแปรสภาพแวดล้อม EFI แต่ละตัวได้รับการออกแบบให้มีการระบุเฉพาะสำหรับสถานการณ์ประเภทนี้
mikeserv

19

การแจกแจงแบบสมัยใหม่จำนวนมากจัดส่งไฟล์/etc/machine-idที่มีสตริงเลขฐานสิบหก 32 อักขระที่ไม่ซ้ำกันมากที่สุด มันมาจาก systemd ที่manpage มีข้อมูลเพิ่มเติมและอาจเหมาะสมกับวัตถุประสงค์ของคุณ


+1, @XZS คุณสามารถเพิ่มข้อมูลที่เกี่ยวข้องจาก URL ได้ที่นี่เช่นกัน
Ramesh

1
นี่เป็นสิ่งที่ดีและฉันพบข้อมูลที่คล้ายกันและเกือบจะใช้มัน ... แต่ฉันมุ่งมั่นแล้วกับเส้นทางอื่น ถึงกระนั้นก็ควรสังเกตว่านี่เป็นสิ่งที่dbusเฉพาะเจาะจงฉันคิดว่าและการเปลี่ยนแปลงหากระบบปฏิบัติการเช็ด / ติดตั้งใหม่
mikeserv

นี่มันช่างน่ากลัวจริงๆ
GeneCode

5

ในจำนวนมากของเครื่อง Linux ไฟล์ที่/var/lib/dbus/machine-idมีรหัสเฉพาะสำหรับแต่ละกระจาย Linux dbus_get_local_machine_id()และสามารถเข้าถึงได้ด้วยการโทรไปยัง นี่อาจเป็นเช่นเดียวกับที่/etc/machine-idกล่าวไว้ข้างต้น มันทำงานบนการติดตั้ง Linux เสมือนจริงด้วย ฉันได้ตรวจสอบใน Ubuntu, SuSE และ CentOS ปัจจุบัน


1
ใน Fedora 19 + 20 ไฟล์นั้นไม่มีอยู่ อยู่ที่นี่: /etc/machine-id.
slm

บางทีฉันอาจจะไม่ชัดเจนพอ ประเด็นของฉันคือถ้าคุณไม่พบที่นี่ให้ดูที่อื่น หรือเขียนโปรแกรมของคุณเองโดยใช้ฟังก์ชั่นการโทร
อันดับ

0

คุณต้องการหมายเลขเครื่องที่จะเปลี่ยนเมื่อฮาร์ดแวร์เปลี่ยนแปลงหรือไม่ มีการใช้หมายเลขเครื่องเพื่อป้องกันบางสิ่งหรือไม่ วิธีที่ดีที่สุดที่ฉันเชื่อว่ามีหมายเลขเครื่อง "ที่สอดคล้องกัน" คือการจัดเก็บสตริงแบบสุ่มไว้ที่ใดที่หนึ่งในระบบและวิธีการดังกล่าวหากมีการเปลี่ยนแปลงฮาร์ดแวร์จากนั้นหมายเลขเครื่องจะไม่เปลี่ยนแปลงเช่นกัน สิ่งนี้ยังดีสำหรับระบบเสมือนจริงที่ จำกัด การเข้าถึงฮาร์ดแวร์และ MAC ID คือ 00: 00: 00: 00

ลองบางอย่างเช่นสคริปต์ sh นี้เพื่อสร้างและรับ ID:

#!/bin/sh
FILE="/etc/machine-id"

if [ ! -f $FILE ]; then
    cat /dev/urandom|tr -dc A-Z0-9|head -c32 > $FILE;
fi

cat $FILE;

เนื่องจากคุณ/dev/urandomระบุว่า Linux อยู่แล้วคุณสามารถทำcat /proc/sys/kernel/random/uuid >$FILEUUID ที่จัดรูปแบบอย่างถูกต้องในทุกการอ่าน ยังคงมีอยู่ดิสก์ดำเนินการใด ๆ อยู่ภายใต้การลบและหากเป็นที่ยอมรับและdbusติดตั้งให้คุณควรทำตามที่ @ XZS แนะนำแทน
mikeserv

0

คำตอบอื่น ๆ ให้หลายวิธีในการดึงรหัสจากฮาร์ดแวร์ คุณสามารถตัดสินใจที่จะใช้ฮาร์ดแวร์หนึ่งชิ้นเป็นตัวระบุหรือหลายตัว นี่เป็นปัญหาหากคุณต้องการสลับหรือเปลี่ยนชิ้นส่วนของฮาร์ดแวร์โดยพลการ

บางคนอาจเก็บ id ที่สร้างขึ้นไว้ใน harddrive (หรือใช้ UUID) แทน แต่ harddrides สามารถเป็นโคลนได้

โมดูล TPM และการบู๊ตอย่างปลอดภัยอาจเป็นวิธีที่มาเธอร์บอร์ดเชื่อมต่อและฮาร์ดแวร์อื่น ๆ พร้อมกับติดตั้งลงในฮาร์ดไดรฟ์

ในกรณีเหล่านี้จะง่ายขึ้นเล็กน้อยหากคุณให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณต้องการทำให้สำเร็จ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.