All posts by danman

Enable system site packages in virtualenv

I started using virtualenv for all python apps I run (because I hate to make mess with pip in system site-packages). Later I’ve found out that some dependencies can not be installed via pip but are included in standard system packages installed via apt or yum. To use these imports inside your venv, you need to specify parameter –system-site-packages when creating your venv. If you only find out that you really need them later, you can enable them by deleting following file:
your_venv_dir/lib/pythonXXX/no-global-site-packages.txt

Happy pythoning!

Source: https://virtualenv.pypa.io/en/latest/userguide/#the-system-site-packages-option

My unbiased experience with JLCPCB

I needed to fabricate some PCBs. I’ve seen some youtubers to advertise and recommend this service so I decided to give it a try. My order was done without using any affiliation link or discount code so there was no way for them to know who I am. I needed to create a microSD breakout board and luckily I found a similar OSHw project and only made some modifications: https://github.com/danielkucera/MicroSD_Sniffer . I prepared my board in Eagle and generated gerber files. Continue reading My unbiased experience with JLCPCB

Automatic letsencrypt wildcard cert renewal with nsupdate

I’m using a wildcard cert from letsencrypt. Currently there is only one way how to verify that you hold the domain you are requesting cert for: creating TXT record in that domain. You can do it by hand when asked by certbot but you don’t want to do this each 90 days. If you are running your own DNS servers with PowerDNS like me there’s an elegant solution: RFC2136. This allows you to update your zones without writing config files and restarting anything.

Continue reading Automatic letsencrypt wildcard cert renewal with nsupdate

My git cheatsheet

Show git log as tree

$ git log --oneline --graph --decorate --all
| * 0255f78c (HEAD -> qmtech, my/qmtech) added support for qm_xc6slx16_sdram board
| * dae037cf (my/spisingle, spisingle) added spi 1-bit mode, code from litex
|/
* 1325aff6 (origin/master, origin/HEAD, master) correctly use result of Record.connect in Converter (#81)

Rebasing

git rebase --onto <where-to> <where-from> <what>
$ git rebase --onto master spisingle qmtech
First, rewinding head to replay your work on top of it...
Applying: added support for qm_xc6slx16_sdram board

$ git log --oneline --graph --decorate --all
* 37d2eff0 (HEAD -> qmtech) added support for qm_xc6slx16_sdram board
| * 0255f78c (my/qmtech) added support for qm_xc6slx16_sdram board
| * dae037cf (my/spisingle, spisingle) added spi 1-bit mode, code from litex
|/
* 1325aff6 (origin/master, origin/HEAD, master) correctly use result of Record.connect in Converter (#81)

Push changed branch

$ git push my qmtech -f
Counting objects: 7, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 1.86 KiB | 1.86 MiB/s, done.
Total 7 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
To https://github.com/danielkucera/misoc.git
+ 0255f78c...37d2eff0 qmtech -> qmtech (forced update)

$ git log --oneline --graph --decorate --all
* 37d2eff0 (HEAD -> qmtech, my/qmtech) added support for qm_xc6slx16_sdram board
| * dae037cf (my/spisingle, spisingle) added spi 1-bit mode, code from litex
|/
* 1325aff6 (origin/master, origin/HEAD, master) correctly use result of Record.connect in Converter (#81)

Set default github username

$ git config --global credential.https://github.com.username danielkucera

Squash commits

git rebase -i <after-this-commit>

replace “pick” on the second and subsequent commits with “squash” or “fixup”

Ignore line endings

git config --global core.autocrlf true

Smart energy meter

In my current flat the central heating runs on natural gas and I wanted to have a nice chart showing its consumption. The gas meter is directly in the hallway so everyone can see it. Because of this, I cannot simply bring in AC power and attach some exposed wires, otherwise my neighbors would probably call anti-terrorist group. The measuring device has to be small, look professional and have low power consumption so it can run on batteries. In next lines I’ll describe how I have achieved this.

Continue reading Smart energy meter

Getting root access on ZyXEL VMG1312-B30B

Nothing special, just use undocumented command sh and you are there (I found it out by a mistake):

danman@silverhorse:~$ nmap 10.0.0.138

Starting Nmap 7.60 ( https://nmap.org ) at 2018-03-26 22:54 CEST
Nmap scan report for 10.0.0.138
Host is up (0.013s latency).
Not shown: 996 closed ports
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
23/tcp open  telnet
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 3.14 seconds
danman@silverhorse:~$ telnet 10.0.0.138
Trying 10.0.0.138...
Connected to 10.0.0.138.
Escape character is '^]'.
ZyXEL VDSL Router
Login: admin
Password: admin
 > help
?
help
logout
exit
quit
reboot
adsl
xdslctl
xtm
brctl
cat
loglevel
logdest
virtualserver
ddns
df
dumpcfg
dumpmdm
meminfo
psp
kill
dumpsysinfo
dnsproxy
syslog
echo
ifconfig
ping
ps
pwd
sntp
snmp
sysinfo
tftp
wlctl
arp
defaultgateway
dhcpserver
dhcpcondserv
dns
lan
lanhosts
passwd
ppp
restoredefault
route
save
swversion
uptime
cfgupdate
swupdate
exitOnIdle
wan
rip
igmp
wlan
telnetd
natp
sysstate
sipalgctl
celld
autoexec
fileShare
igmp
btt
ledctl
 > sh
shell Password: admin
~ # ls
bin         etc         linuxrc     proc        tmp         vmlinux.lz
data        firmware    mnt         sbin        usr         webs
dev         lib         opt         sys         var

Continue reading Getting root access on ZyXEL VMG1312-B30B