听雨:来,跟我做个Python黑客吧!(1)端口扫描

0 黑帽子、灰帽子、白帽子、脚本小子

0.1 黑帽子

代表人物:欧阳锋
特点:武艺高强,阴狠手辣,专做恶事。
主要事迹:流毒无穷,毒死海上所有的鲨鱼(制造病毒);入侵皇宫,盗取武穆遗书(入侵行为,数据窃取);

0.2 灰帽子

代表人物:黄药师
特点:武艺高强,亦正亦邪,游走在法律边缘。
主要事迹:诡计骗取周伯通的《九阴真经》(网络钓鱼),精通五行术数(密码学),杀人报仇、劫富济贫(合情不合法)

0.3 白帽子

代表人物:洪七公
特点:武艺高强,惩恶扬善。
主要事迹:多次与欧阳锋斗争(对抗黑帽黑客),用药饼子驱蛇(反病毒)。

0.4 脚本小子

代表人物:杨康
特点:武艺低端,主要靠取巧和利用工具,做不了大恶
主要事迹:铁枪头杀残疾的欧阳克(漏洞攻击,利用工具),一掌拍在黄蓉的软猬甲上坑死自己(攻击时误入蜜罐)

1 端口扫描

1.1 什么是端口

端口,英文:PORT的中文翻译,是计算机与外部通信的途径在网络技术中,端口大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口。

1.2 常见的端口号

1 TCPMUX 主要在SGI Irix机器
5 REMOTE JOB ENTRY(RJE) 远程作业
7 ECHO 回声
18 Message Send Protocol(MSP) 报文发送协议
20 FTP-Data 文件传输协议
21 FTP-Control 文件传输协议
22 SSH Remote Login Protocol 远程登陆
23 Telnet 远程登陆
25 Simple Mail Transfer Protocol SMTP简单邮件传输协议
29 MSG ICP
37 TIME 时间
43 Host Name Server(NAMESERV) 主机名称服务
49 Login Host Protocol TACACS登录主机协议
53 Domain Name System(DNS) 域名系统
69 Trivial File Transfer Protocol 小型文件传输协议
70 Gopher Services 信息检索协议
79 Finger 查询远程主机在线用户等信息
80 HTTP 超文本传输协议
92 npp 网络打印协议
93 dcp 设备控制协议
103 X.400 Standard 电子邮件标准
108 SNA Gateway Access Server
109 POP2 邮件服务
110 POP3 客户端访问服务器端的邮件服务
115 Simple File Transfer Protocol SFTP简单文件传输协议
118 SQL Services
119 Newsgroup NNTP
137 NetBISO Name Service NetBIOS 名称解析
139 NetBIOS Datagram Service NetBIOS 会话服务
143 Interim Mail Access Protocol IMAP
150 NetBIOS Session Service
156 SQL Server
161 SNMP 简单网络管理协议
179 Border Gatewat Protocol(BGP) 边界网关协议
190 Gateway Access Control Protocol GACP
194 Internet Relay Chat IRC
197 Directory Location Service DLS
389 Lightweight Directory Access Protocol LDAP
396 Novell Netware over IP
443 HTTPS 安全超文本传输协议
444 Simple Network Paging Protocol SNPP
445 Microsoft-DS
458 Apple QuickTime
546 DHCP Client 动态主机配置协议 – 客户端
547 DHCP Server 动态主机跑配置协议 – 服务器端
563 SNEWS
569 MSN
1080 Socks

1.3 端口扫描的意义

扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息(比如:是否能用匿名登陆!是否有可写的FTP目录,是否能用TELNET)

2 python端口扫描器

2.1 代码

import socket, time, _thread

socket.setdefaulttimeout(2)

def socket_port(ip, port):
    try:
        if port >= 65535:
            print('端口扫描结束')

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = s.connect_ex((ip, port))
        if result == 0:
            lock.acquire()
            print(ip, ':', port, '端口开放')
            lock.release()
        s.close()
    except:
        print('端口扫描异常')


def ip_scan(ip):
    try:
        print('开始扫描 %s' % ip)
        start_time = time.time()
        for i in range(0, 65534):
            _thread.start_new_thread(socket_port, (ip, int(i)))
        print('扫描端口完成,总共用时 :%.2f' % (time.time() - start_time))
        input("Press Enter to Exit")
    except:
        print('扫描ip出错')


if __name__ == '__main__':
    url = input('Input the ip you want to scan:\n')
    lock = _thread.allocate_lock()
    ip_scan(url)

2.2 重点讲解

(1)

import socket, time, _thread

socket 模块实现了到 socket 通讯层的接口. 你可以使用该模块创建 客户端或是服务器的 socket .
time 实现与时间有关功能
_thread 实现多线程,提高程序运行效率(本次不做详细解释)

(2)

socket.setdefaulttimeout(2)

设定默认超时时间,用于减少等待提高效率

(3)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

创建socket对象。调用socket构造函数。格式:

socket = socket.socket( family, type )

family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。
type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。

(4)

result = s.connect_ex((ip, port))

s.connect() 主动初始化TCP 服务器连接
s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛异常

(5)

lock.acquire()
lock.release()

多线程用,这节课不做明确解释

(6)

s.close()

s.close() 关闭套接字

(7)

__name__ == '__main__':

在cmd 中直接运行.py文件,则__name__的值是'__main__'
而在import 一个.py文件后,__name__的值就不是'__main__'了;
从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件

(8)

_thread.start_new_thread(socket_port, (ip, int(i)))

多线程用,不做详细解释。


想上手实战的小白看过来,这里有网易云课堂上最畅销的 Python 课程:Python 实战:四周学会爬虫系统

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容

  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,594评论 2 57
  • 参考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麦子阅读 2,946评论 0 14
  • 引言 网络学习的核心内容就是网络协议的学习 网络协议:网络中进行数据交换而建立的规则、标准或者说是约定的集合因为不...
    _凉风_阅读 1,989评论 8 22
  • 相思无用 唯别而已 别期若有定 千般煎熬又何妨 莫道黯然销魂 何处柳暗花明
  • 在这样的社会环境下,我不敢开口,所有的话语都在没有正能量。年轻得没有方向没有目标,不敢有追求,没有文化,没有电脑,...
    走青小布衣阅读 219评论 0 0