以pcre2调试为例
1 2 3 4 5 6 7 8 9 | #!/bin/sh cd `pwd`/installed/bin mkfifo /tmp/pcre echo "<h1>hello</h1>" > /tmp/pcre & gdb ./pcre2grep -ex 'b main' -ex 'r -o "<.*>" < /tmp/pcre' rm /tmp/pcre |
人,技术,生活。
以pcre2调试为例
1 2 3 4 5 6 7 8 9 | #!/bin/sh cd `pwd`/installed/bin mkfifo /tmp/pcre echo "<h1>hello</h1>" > /tmp/pcre & gdb ./pcre2grep -ex 'b main' -ex 'r -o "<.*>" < /tmp/pcre' rm /tmp/pcre |
/etc/apt/sources.list
1 2 3 4 | deb http://http.us.debian.org/debian/ testing non-free contrib main #deb http://http.us.debian.org/debian/ stable non-free contrib main #deb http://http.us.debian.org/debian/ unstable non-free contrib main #deb http://http.us.debian.org/debian/ wheezy non-free contrib main |
1 2 | #apt edit-sources
apt update |
NO_PUBKEY 04EE7237B7D453EC NO_PUBKEY 648ACFD622F3D138
1 2 | apt-key adv --keyserver keyserver.ubuntu.com --recv 04EE7237B7D453EC apt-key adv --keyserver keyserver.ubuntu.com --recv 648ACFD622F3D138 |
ubuntu repo names
1 2 3 | wheezy: debian 7.0 xenial: Ubuntu 16.04 focal: Ubuntu 20.04 |
refer to:
https://serverfault.com/questions/550855/how-to-add-debian-testing-repository-to-apt-get
https://yunwei365.blog.csdn.net/article/details/114930145
Use cgdb instead.
Let GDBW denote the command window,
let SRCW denote the source window
let TTYW denote the input window.
Cgdb basic usage
1 2 3 4 5 6 | ESC key in GDBW: switch to SRCW i key in SRCW: switch to GDBW T key in SRCW: switch on/off TTYW PgUp/PgDn key in GDBW: scroll GDBW PgUp/PgDn key in SRCW: scroll SRCW -/= in SRCW: decrease/increase SRCW size |
Patch: GDBW output is truncated.
cgdb/scroller.cpp:146
https://github.com/cgdb/cgdb/pull/269
refer to:
https://github.com/cgdb/cgdb/blob/master/doc/cgdb.texi
名词
1 2 3 4 5 6 7 | I帧: Intra-coded picture P帧: Predictive-coded Picture B帧: Bidirectionally predicted picture GOP: Group of Pictures IDR: Instantaneous Decoding Refresh DTS: Decoding Time Stamp PTS: Presentation Time Stamp |
WebRTC 之视频捕获
https://hyjk2000.github.io/2015/04/21/webrtc-video-capture/
https://github.com/uxctx/DesktopLiveStreaming
retain_sym.txt
1 2 | func1 func2 |
ver_script.txt
1 2 3 4 5 6 7 | LIBA_1.1 { global: foo1; foo2; local: *; }; |
1 | ld -shared --retain-symbols-file=retain_sym.txt --version-script=ver_script.txt tst.o -o tst.so |
refer to:
https://blog.csdn.net/chdhust/article/details/79356717
http://blog.sina.com.cn/s/blog_493667730100csde.html
http://www.gnu.org/software/gnulib/manual/html_node/LD-Version-Scripts.html
名词
1 2 3 4 5 | pie: position-independent executable pic: position-independent code aslr: address space layout randomization got: global offset table vdso: virtual dynamic shared object |
Basic command
1 2 3 4 5 6 7 8 9 10 11 12 13 | grep [OPTION]... PATTERNS [FILE]... find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression] find . -size +2G -exec du -sh {} \; ps axl | grep VirtualBoxVM | grep -v grep | awk '{print $3};' cat /etc/passwd | sort -k5,5 -t: | column -t -s: while true; do echo sleep 1 sec; sleep 1; cat /home/work/aa.txt 2>/dev/null && echo ok && break; done echo first | xargs -i echo {} second cat /etc/shadow sudo !! cd other_dir cd - # return back |
swap文件
1 2 3 4 | dd if=/dev/zero of=./swap_file bs=1G count=8 mkswap ./swap_file swapon ./swap_file swapoff ./swap_file |
objcopy
1 2 3 | objcopy -I binary -O elf32-i386 -B i386 test.jpg test.o objdump -s -b binary test.o readelf -s test.o |
静态链编stdc++
1 | -Bstatic -lstdc++ -Bdynamic |
工具
1 2 3 4 5 6 | systemtap inotify-tools windres reptyr nmcli nmtui |
自启动
1 2 3 4 5 6 7 8 9 10 11 12 | #/lib/systemd/system/mytask.service #ln -s /lib/systemd/system/mytask.service /etc/systemd/system/multi-user.target.wants/mytask.service [Unit] Description=mytask After=network.target [Service] Type=simple ExecStart=mytask.sh [Install] WantedBy=multi-user.target |
ubuntu
1 2 3 4 5 6 7 8 9 10 | #网络配置文件路径,默认DHCP的连接不会生成文件 /etc/NetworkManager/system-connections/ #run arm64 binary on x86 dpkg --add-architecture armhf && apt-get update && apt-get install libc6:armhf cat /proc/sys/fs/binfmt_misc/ qemu-user -L /home/bamanzi/i386-libs ./prog #disable background process systemctl disable unattended-upgrades ss -tap pv -d <pid> |
centos
1 2 3 4 | #网络配置文件路径 /etc/sysconfig/network-scripts/ifcfg- #compiz https://spins.fedoraproject.org/mate-compiz/download/index.html |
refer to:
http://blog.chinaunix.net/uid-28461677-id-5766451.html
https://blog.csdn.net/weixin_33842304/article/details/91443399
https://unix.stackexchange.com/questions/4034/how-can-i-disown-a-running-process-and-associate-it-to-a-new-screen-shell
https://blog.csdn.net/wuzhong8809/article/details/117450302
https://stackoverflow.com/questions/18312935/find-file-in-linux-then-report-the-size-of-file-searched
https://www.toutiao.com/a7073448755428688399/
https://www.likecs.com/show-695436.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | [*] 64-bit kernel (leave blank for x86) General Setup ---> [*] Optimize very unlikely/likely branches Power management and ACPI options ---> [*] ACPI (Advanced Configuration and Power Interface) Support ---> Processor type and features ---> Processor Family (usually Core2/Newer Xeon) Bus Options ---> < > PCCard (PCMCIA/Cardbus) support Networking support ---> [ ] Amateur Radio support [ ] Wireless (only if you plan on using nat EXCLUSIVELY) Device Drivers ---> Generic Driver Options [*] Maintain a devtmpfs filesystem to mount at /dev Misc Devices ---> [*] VMware Balloon Driver (manages memory between VM and host) [*] VMware VMCI Driver (Virtual Machine Communication Interface - low-latency access to host memory bus) SCSI device support ---> [*] SCSI low-level drivers ---> <*> VMware PVSCSI driver support (high throughput storage adapter) [*] Fusion MPT device support ---> <*> Fusion MPT ScsiHost drivers for SPI [*] Network device support ---> [*] Ethernet driver support ---> (disable every driver but this) [*] AMD Devices <*> AMD PCNet32 PCI support [ ] Wireless LAN (ONLY if you disabled Wireless networking support above) < > VMware VMXNET3 ethernet driver (PCNet32 is more than enough for most use cases - enable this only if you have spare cpu cycles to burn) Graphics support ---> <*> Direct Rendering Manager < > Intel 8xx/9xx/G3x/G4x/HD Graphics <*> DRM driver for VMware Virtual GPU [*] Enable framebuffer console support under vmwgfx by default <*> Support for frame buffer devices Console display driver support ---> <*> Framebuffer Console support Sound card support ---> <*> Advanced Linux Sound Architecture ---> [*] PCI sound devices <*> (Creative) Ensoniq AudioPCI 1371/1373 < > Intel HD Audio File systems ---> (enable only those you anticipate using) <*> Second extended fs support <*> The Extended 4 (ext4) filesystem <*> XFS filesystem support <*> Btrfs filesystem Unstable disk format Pseudo filesystems ---> [*] Tmpfs virtual memory file system support (former shm fs) [*] Tmpfs POSIX Access Control Lists |
efi boot (uncertain, maybe need to ask pc maker for signing the kernel.)
1 2 3 4 5 6 | Processor type and features ---> [*] EFI runtime service support [*] EFI stub support Firmware Drivers ---> EFI (Extensible Firmware Interface) Support ---> <*> EFI Variable Support via sysfs |
device mapper
1 2 3 | Device Drivers Multiple devices driver support (RAID and LVM) <M> Device mapper support |
refer to:
https://forums.gentoo.org/viewtopic-p-7332884.html
https://stackoverflow.com/questions/40344484/cant-load-self-compiled-linux-kernel
kprobe
1 2 3 4 5 6 7 8 | cd /sys/kernel/debug/tracing echo 'p:myprobe do_sys_open' > kprobe_events echo 'r:myretprobe do_sys_open $retval' > kprobe_events echo 'r:myprobe getname +0($retval):string' > kprobe_events echo 1 > tracing_on echo 1 > events/kprobes/myprobe/enable echo '-:myprobe' > kprobe_events cat trace |
uprobe
1 2 3 4 5 | cd /sys/kernel/debug/tracing echo 'p:do_sth /home/kernel_test/loop_print:0x52d %ip %ax' > uprobe_events echo 'r:do_sth_exit /home/kernel_test/loop_print:0x52d %ip %ax' >> uprobe_events echo 1 > events/uprobes/enable cat trace |
refer to:
https://blog.csdn.net/melody157398/article/details/113764679
https://blog.csdn.net/daiq531/article/details/52749673
asn.1编码以tag + length + value为基本单元,IMPLICIT模式是用context-specific tag替换后面通常是universal的tag;EXPLICIT模式是用context-specific tag的tlv包裏里层的universal tag的tlv。
ber编码时,会默认为EXPLICIT模式。
在bnf范式语法中
1 2 3 4 5 | 圆括号(): 相当于C语言算术表达式中圆括号()的作用。 尖括号<>: 内包含的为必选项。 方括号[]: 内包含的为可选项。 花括号{}: 内包含的为可重复0至无数次的项。 |: 或or的意思;若要表示并and的意思,直接两个符号之间空白间隔。 |
而在asn.1语法中,方括号[Index]指示的是context-specific tag值,即0xA0 + Index;花括号{}用于SEQUENCE,SET或CHOICE的定义。如
1 2 | Number2 ::= [7] IMPLICIT [1] INTEGER AccountedClosed ::= [2] EXPLICIT BOOLEAN |
这里Number2的tag值为0xA7;而对于AccountedClosed,当其值为true时其ber编码为
1 | 0xA2 0x3 0x1 0x1 0xFF |
refer to:
https://blog.csdn.net/sever2012/article/details/7767867
https://www.cnblogs.com/qook/p/5957436.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ca: certification authority pem: privacy enhanced mail, "begin"+base64+"end" der: distinguished encoding rules, binary crt: certificate cer: certificate csr: certificate signing request pkcs: public key cryptography standard ietf: internet engineering task force pkcs#12/pfx/p12: file format encoding private keys, certificates and etc, rfc7292 pkcs#7: cryptographic message syntex standard pkcs#10/p10: certification request syntax specification, rfc2986 x.509: public key certificates format standard ber: basic encoding rules per: packed encoding rules crl: certificate revocation list dsa: digital signature algorithm |
refer to:
http://www.360doc.com/content/15/0520/10/21412_471902987.shtml
https://baike.baidu.com/item/BER/19940289?fr=aladdin
https://blog.csdn.net/mao834099514/article/details/109074661
https://datatracker.ietf.org/doc/html/rfc7292