前言

  • 昨晚在朋友圈看到国外一篇文章利用U盘锁笔记本电脑,刚好有一个坏的金士顿U盘,所以就折腾了一下。

准备

  • USB设备*1
  • Arch系统*1

走过的坑

  • 因为systemd-udevd带起来的进程是root权限的,环境里各种变量也不是当前桌面用户的,所以在Arch的Wiki里找到了调用外部脚本来通知用户桌面。

  • 最后的解决方案是在udev规则里导入xpub获取桌面环境变量,再执行命令锁屏。

  • 执行udevadm monitor --environment --udev监听USB事件,拔掉U盘,找到MODALIAS,原文里是找ID_MODEL,我为什么要找呢?因为ID_MODEL是不唯一的,别人的U盘可能也是一样的,你也不想其他U盘可以触发事件吧。所以找了一个看起来很复杂的字符串,在网上也搜索不到,应该就是唯一的了。

UDEV  [4042.754116] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0 (usb)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
PRODUCT=13fe/5100/110
TYPE=0/0/0
INTERFACE=8/6/80
MODALIAS=usb:v13FEp5100d0110dc00dsc00dp00ic08isc06ip50in00
SEQNUM=3709
USEC_INITIALIZED=2346820353
adb_user=yes
ID_PATH=pci-0000:00:14.0-usb-0:3:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0
ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_3_1_0
  • 拿到MODALIAS的值为usb:v13FEp5100d0110dc00dsc00dp00ic08isc06ip50in00 ,开始写udev规则
ACTION=="remove", SUBSYSTEM=="usb", ENV{MODALIAS}=="usb:v13FEp5100d0110dc00dsc00dp00ic08isc06ip50in00",IMPORT{program}="/usr/bin/xpub", RUN+="/usr/bin/sudo -u kali-team /usr/bin/xdotool key Super_L+l"
  • 保存为/etc/udev/rules.d/busKill.rules
  • 执行sudo udevadm control --reload 重新载入规则

测试

reference:

触发_udev_规则事件的桌面提示

Introducing BusKill: A Kill Cord for your Laptop

xdotool

xpub

A Kill Cord for your Laptop的更多相关文章

  1. ORACLE快速彻底Kill掉的会话

    在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源 ...

  2. SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析

    今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务.UPDATE. ...

  3. Linux 信号(一)—— kill 函数

    世事并无好坏之分,全看我们怎么去想.—— 哈姆雷特·第二幕第二景 ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 #include <signal.h ...

  4. kill命令

    *杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志.   首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:   # kill -pid   注释:标准的kill命令通 ...

  5. Linux学习笔记(11)-kill函数

    明天开始学习kill函数的用法. ---------------------------------------------- kill函数可以用来向指定的进程发送一个指定的信号,在我的理解的来看,就 ...

  6. sql server 查看表的死锁和Kill 死锁进程

    查询出来 select        request_session_id spid,       OBJECT_NAME(resource_associated_entity_id) tableNa ...

  7. 如何保证Service在后台不被kill

    如何保证Service在后台不被kill 相信很多Android开发者在面试过程中会经常被问到“如何保证Service在后台不被kill”这个问题,总结了下一些大神给的答案. 引用知乎Android ...

  8. Linux常用系统管理命令(top、free、kill、df)

    top   -c    #任务管理器 free  -m    #查看内存使用情况 kill  -9   2312 (说明:强制杀死进程 kill  -9  pid ) df   -h    #查看磁盘 ...

  9. linux 批量kill进程

    ps -ef | grep module- | grep -v module-mxm | cut -c 9-15 | xargs kill -9 ps -ef | grep module- 查找关键字 ...

随机推荐

  1. HTML文字标签

    <h1>标题标签,总共六个等级,不能创造标签,只有预定义好的标签才可以被浏览器解析 <br>换行标签,没有内容可以修饰也称为空标签 <p>段落标签</p> ...

  2. ORM表单操作

    准备工作: 1.在orm操作表单之前需要先修改下django中连接的数据库,默认连接的是SQLit3,这里我们修改成mysql 2.mysql使用的版本是5.6,已经安装好了,直接连接就可以使用 创建 ...

  3. ASP.NET + MVC5 入门完整教程七 -—-- MVC基本工具(下)

    https://blog.csdn.net/qq_21419015/article/details/80493633 Visual Stdio 的单元测试

  4. AcWing 148. 合并果子

    #include <iostream> #include <algorithm> #include <queue> using namespace std; int ...

  5. E - Serge and Dining Room

    https://codeforces.com/contest/1180/problem/E 转载自他人博客 题意:有nn个菜肴,有mm个小朋友,每个菜肴的价格为aiai,每个小朋友有bibi元钱,小朋 ...

  6. Go_Context

    如何通知子goroutine退出? 1. 使用全局变量 package main import ( "fmt" "sync" "time" ...

  7. ansible笔记(2):管理清单配置详解

    前情提要:管理清单(Iventory)配置文件/etc/ansible/hosts.通过修改该配置文件以达到管理受控主机的目的.    在我的实验平台上有3台主机:192.168.232.181(an ...

  8. Java与Web前端发展前景及薪资对比

    Web前端和Java谁的薪资待遇高?关于这个问题,是很多网友都感兴趣的,在各大论坛贴吧上也看到了不少类似的问题. 现在的互联网行业飞速发展,因此有很多小伙伴想要进入IT行业分一杯羹,但是关于学习什么技 ...

  9. C#连接SQL Server数据库(二)

    执行SQL语句:Command对象 1.Command对象概述   Command对象是一个数据命令对象,主要功能是向数据库发送查询.更新.删除.修改操作的SQL语句.Command对象主要有以下几种 ...

  10. Some series and integrals involving the Riemann zeta function binomial coefficients and the harmonic numbers

    链接:http://pan.baidu.com/s/1eSNkz4Y