Tianji's Blog.

常用shell命令及相关工具(shell+python+tools)

Word count: 1,871 / Reading time: 8 min
2018/04/24 Share

统计文件中每个字符串的长度

grep -o . file.txt | sort | uniq -c | sort -rn

Python使用其他镜像安装包

pip3 install –index https://pypi.mirrors.ustc.edu.cn/simple/ scapy-http

Python将16进制字符串转化为ascii码

a = “456e”

‘’.join([chr(int(b, 16)) for b in [a[i:i+2] for i in range(0, len(a), 2)]])

Python将16进制字符串转为2进制字符串

a = “456e”

‘’.join([(bin(int(b, 16))[2:]).zfill(8) for b in [a[i:i+2] for i in range(0, len(a), 2)]])

Python二进制字符串转16进制字符串

str = “0100010101101110”

‘’.join([(hex(int(b, 2))[2:]).zfill(2) for b in [a[i:i+8] for i in range(0, len(a), 8)]])

hexdump使用

hexdump [filename] 以16进制查看文件

hexdumlp -C [filename] 以16进制查看文件同时显示ascii码

7z使用

7z x [压缩包]

binwalk使用

binwalk [filename] 查看文件信息

binwalk -e [filename] 提取文件

strings使用

strings -10 [filename] 从二进制文件或普通文件中查找可打印的字符串,-10 设置显示的最小字符串

base64使用

echo [base64字符串] | base64 -d base64解密

echo [字符串] | base64 base64加密

debin,ubuntu删除所有带 rc 标记的dpkg包

dpkg -l | grep ^rc | cut -d’ ‘ -f3 | sudo xargs dpkg –purge

批量计算文件夹中所有文件md5值

md5sum *

LSB检查

1
2
3
4
> >>> import Image
> >>> a=Image.open('zxczxc.png')
> >>> a.point(lambda i: 255 if i&1 else 0).show()
>

查看文件夹下边的某个字符串

grep -rn -A10 -B5 “php_string_shuffle” ./

grep -rn -A10 -B5 “php_string_shuffle” -l ./ 只列出文件名

监控目录变化

watch -n2 ls -l /proc/11631/fd/

dd命令使用

dd if=carter.jpg of=carter-1.jpg skip=140147 bs=1

dd if=./test of=./test1 count=1 bs=3 skip=2

if 从目标文件中提取数据

of 提取的数据保存的位置

count 从目标文件中提取的块数

bs 一次性读取或者写入的字节数

skip 跳过几个块

上边的命令就是从test文件中的第6(skip bs = 2 3)个字节开始,读3(count bs = 1 3)个字节,写入到test1文件中。

shell文件去重

sort filename | uniq

socat启动一道pwn题目

socat tcp-l:8080,fork exec:./note,reuseaddr

exiftool使用

exiftool [picture_name]

exiftool -Exif:ImageDescription=”%^&*()[]{}” [picture_name]

curl发送请求

curl -d “param1=value1&param2=value2” -b “cookie_name1=value1&cookie_name2=value2” url

curl上传文件,传递多个参数,一个参数需要一个-F

curl -F “file=@composer.json“ -F “chunks=3” -F “chunk=1” -F “name=1.jsp” “http://localhost:8080/fileupload"

url中需要转义字符如下:

[,],{,}

curl保存cookie到文件中,并使用该cookie,可以及时更新cookie

curl -v www.baidu.com -c ./cookie -b ./cookie

curl 发送json字符串

curl -v -H “Content-Type:application/json” -X POST –data ‘{“code”:”cwdjwz”}’ http://35.207.132.47/api/verify

grep匹配字符串

grep -Eo “regex_expr”

grep -i “connection” -r ./ –include *.class # 递归在目录中class结尾的文件中查询字符串

grep -i “connection” -r ./ –include *.{class|xml}

查找文件

find / -name “flag”

ngrep监听80端口

ngrep -W byline -d eth0 port 80

scp命令使用

A.104.238.161.75,B.43.224.34.73

A服务器下操作,将B服务器下/home/lk目录下所有文件复制到本地/home目录下

scp -r root@43.224.34.73:/home/lk /home

在A服务器上将/root/lk目录下所有的文件传输到B的/home/lk/cpfile目录下

scp -r /root/lk root@43.224.34.73:/home/lk/cpfile

nc传送文件

A.104.238.161.75 B.43.224.34.73

将B服务器文件【test.txt】从B服务器传送到A服务器下

方案一:

A: nc -l [port] > text.txt

B: nc 104.238.161.75 [port] < test.txt

方案二:

A: nc 43.224.34.73 [port] > test.txt

B: nc -l [port] < test.txt

传输目录:

A机器给B机器发送多个文件,需要结合其它的命令,比如tar,经过测试管道后面最后必须是 - ,不能是其余自定义的文件名

B: nc -l [port] | tar xfvz -

A: tar cfz - * | nc 43.224.34.73 [port]

tcpdump抓包

sudo tcpdump tcp -c 100 -i ens33 -nn -XX -vv

-c 抓取的数量

-i 指定端口

sudo tcpdump -c 100 -XX -nn -vv -i ens33 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

抓取网卡ens33中的http包

0x4745 => ‘GE’ 0x4854 => “HT”

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
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
[ -s snaplen ] [ -w file ] [ expression ]

抓包选项:
-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。
-i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo),
:一旦找到第一个符合条件的接口,搜寻马上结束。可以使用'any'关键字表示所有网络接口。
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-N:不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。
-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,
:输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,
:从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

输出选项:
-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v:当分析和打印的时候,产生详细的输出。
-vv:产生比-v更详细的输出。
-vvv:产生比-vv更详细的输出。

其他功能性选项:
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。
-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

临时DNS解析网站

http://dnsbin.zhack.ca/#master=a901ccef8fc26818ea0e

使用方法:

[mydatahere].7250305a7aa136b15585.d.zhack.ca```
1
2

## 全种类浏览器内网IP地址扫描(javascript版)

<!DOCTYPE html>










`

前端端口扫描

https://github.com/SkyLined/LocalNetworkScanner.git

大素数分解网站

http://www.factordb.com/index.php?query=542800573380084826910381

centos防火墙

firewall-cmd --permanent --add-port=2222/tcp

firewall-cmd --reload

firewall-cmd --zone=public --list-ports

CATALOG
  1. 1. 统计文件中每个字符串的长度
  2. 2. Python使用其他镜像安装包
  3. 3. Python将16进制字符串转化为ascii码
  4. 4. Python将16进制字符串转为2进制字符串
  5. 5. Python二进制字符串转16进制字符串
  6. 6. hexdump使用
  7. 7. 7z使用
  8. 8. binwalk使用
  9. 9. strings使用
  10. 10. base64使用
  11. 11. debin,ubuntu删除所有带 rc 标记的dpkg包
  12. 12. 批量计算文件夹中所有文件md5值
  13. 13. LSB检查
  14. 14. 查看文件夹下边的某个字符串
  15. 15. 监控目录变化
  16. 16. dd命令使用
  17. 17. shell文件去重
  18. 18. socat启动一道pwn题目
  19. 19. exiftool使用
  20. 20. curl发送请求
  21. 21. grep匹配字符串
  22. 22. 查找文件
  23. 23. ngrep监听80端口
  24. 24. scp命令使用
  25. 25. nc传送文件
  26. 26. tcpdump抓包
  27. 27. 临时DNS解析网站
  28. 28. 前端端口扫描
  29. 29. 大素数分解网站
  30. 30. centos防火墙