30th

《PowerShell 3.0 Advanced Admin handbook》已于今日上市

工作之余与埃及MVP Sherif Talaat合著的全英文书籍《PowerShell 3.0 Advanced Admin handbook》于今日由Packt Publishing正式出版上市,本书基于PowerShell3.0版本,历时8个月,从2012年8月16日Packt Publishing发邮件找我们约稿,经历1stDraft,2ndDraft, Rewrite,1stEdit,2ndEdit,Prefinal和Final很多次草稿,修改和校稿,全程跟国外合著者、编辑、reviewer通过两百多封邮件沟通,全书450页,是目前为止首本国内作者参与的关于PowerShell3.0最新编程开发技术的新书。
在书稿创作过程中见识了国外出版业的严谨和流程、质量控制苛刻,与合著者和编辑团队之间存在着三种不同的时差,全程仅使用Email进行沟通和协调,对作者的英语也是一个极大的挑战,学了十多年的填鸭式英语,发现要按照老外的思路写一点思路清晰的文字一开头也是非常的痛苦和折磨,还好顶住压力熬下来了。跟国内出版社的朋友沟通了一下,发现国外的出版环境已经很完善了,不像国内完全还处于刀耕火种的原始状态,也没有国内出版需要面对的各种审查和阉割,国外编辑团队分工很细,流程很完善,从开始到书稿完成出版,会有不同角色的编辑与作者沟通,但是有新角色进入时总会由熟悉的编辑介绍,而且同时只会有一到两位编辑与作者沟通,尽管角色众多但不会出现混乱的情况。国外的图书出版稿酬相比国内要高,国内通常只有12%,而国外能达到16%。国外的图书会同时推出纸质版本和电子版,且电子版是销售的主要销售渠道。国外的图书编辑和作者工作时间较为随意,能从他们收发邮件的时间段看出来,尽管存在6~7小时的时差,发信的时间有会在他们的工作时间也有半夜发过来的,在几个比较重要的阶段编辑会询问作者的休假计划,在埃及的合著者经常会有休假,可我等苦逼的天朝IT民工就没这么幸运了,但愿在不远的将来我们也可以有更宽松的工作环境和更多的休息时间。
附上出版过程中相关的TimeLine:
image
读者与作者技术交流,意见反馈请发邮件至Power[......]

继续阅读

26th

《Windows PowerShell 2.0应用编程最佳实践》已出版上市,同时将在台湾出版

        工作之余和微软MVP朋友高阳经过一年零2个月的合作编写,这本书终于与大家见面了,这本书是我们写作周期最长的一本书,在内容和质量上也花费了很多心血,全书650多页可算是厚厚的一大本,也是目前为止国内仅有的一本国人自己编写的关于微软powershell2.0最新编程开发技术的新书,并且得到了微软相关部门的大力支持。
本书已被台湾出版社审核选中,同时会在今年2个月后在台湾等地出版。
非常感谢微软mvp中国区最有价值专家主管——林思绮 为本书作序,还有 微软MVP徐磊、李战和于渊为本书做的出色书评。
读者与作者技术交流,意见反馈请发邮件至PowerShell#live.cn(发邮件请将#替换为@)
书名:《Windows PowerShell 2.0应用编程最佳实践》
出版社:电子工业出版社
ISBN:9787121101656 / 7121101653
上架时间:2010-2-1
出版日期:2010 年2月
字数:84.9万字
开本:16开
页码:655
版次:1-1
目录、前言与第18章下载:
前言 目录 第18章试读 
博文视点:http://www.broadview.com.cn/10165
中国互动出版网:http://www.china-pub.com/196373
华储网:http://www.huachu.com.cn/itbook/bookinfodetail.asp?lbbh=10112061&sort=qy
中国图书网网上书店http://www.bookschina.com/4565830.htm
亚马逊/卓越:http://www.amazon.cn/mn/detailApp?asin=b0037492uk&source=eqifa|506|1|
当当网:http://product.dangdang.com/product.aspx?product_id=20798549
 Windows PowerShell 2.0应用编程最佳实践 

内容简介
  windows powershell是微软为windows系统开发的shell及脚本语言技术,它是一种新的命令行外壳和脚本语[......]

继续阅读

9th

通过PowerShell获取TCP响应(类Telnet)

通常情况下,为了检测指定的TCP端口是否存活,我们都是通过telnet指定的端口看是否有响应来确定,然而默认情况下win8以后的系统默认是不安装telnet的。设想一下如果你黑进了一个服务器,上面没装telnet,但是为了进一步渗透进内网,需要探测内部服务器特定端口是否打开,同时你还不愿意安装telnet,担心引起管理员注意。那么好吧,在这个情况下你需要我的这个脚本。由于它是原生态的PowerShell语句完成,木有telnet你也照样能检测TCP端口的情况了。
下面首先上代码,后面进行讲解:
=====文件名:Get-TCPResponse.ps1=====
Function Get-TCPResponse {
<# Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
.SYNOPSIS
Tests TCP port of remote or local system and returns a response header
if applicable
.DESCRIPTION
Tests TCP port of remote or local system and returns a response header
if applicable
If server has no default response, then Response property will be NULL
.PARAMETER Computername
Local or remote system to test connection
.PARAMETER Port
TCP Port to connect to
.PARAMETER TCPTimeout
[......]

继续阅读

8th

通过PowerShell获取Windows系统密码Hash

当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战果,你首先需要做的就是潜伏下来,收集更多的信息便于你判断,便于有更大的收获。用什么方法才能有尽可能高的权限,同时能更有效的隐藏自己,是留webshell,留后门,种木马还是Rootkit?webshell,哪怕是一句话木马都很容易被管理员清除,放了木马,也容易被有经验的管理员查出,不管是早期自己创建进程,进程被干掉就完了,还是注入进程的木马,或者是以服务自启动的木马,哪怕是替换次要的系统服务自己启动的木马,隐蔽性都太差了。不管后门留的如何完美,木马免杀做的多好,最终还是做不到不留任何痕迹。
那什么方法才能达到目的,又不容易被发现呢?以管理员的身份来管理服务器不就行了么?不管管理员是用3389、pcanywhere、还是radmin管理服务器,获取他的密码,以他的身份进入系统不就得了,如果是域管理员密码,整个域都会在你的控制之下了。获取密码的方法除了网络嗅探,还可以获取密码Hash后通过彩虹表进行攻击,本文将会介绍通过PowerShell获取Windows系统密码Hash的方法,有何密码Hash就离拿到密码不远了。
首先介绍一下windows密码Hash:
早期SMB协议在网络上传输明文口令。后来出现"LAN Manager Challenge/Response"验证机制,简称LM,它是如此简单以至很容易被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。Windows加密过的密码口令,我们称之为hash(中文:哈希),Windows的系统密码hash默认情况下一般由两部分组成:第一部分是LM-hash,第二部分是NTLM-hash。
NTLM-Hash与LM-Hash算法相比,明文口令大小写敏感,但无法根据NTLM-Hash判断原始明文口令是否小于8字节,摆脱了魔术字符串"KGS!@#$%"。MD4是真正的单向哈希函数,穷[......]

继续阅读

7th

通过PowerShell获取域名whois信息

Whois 简单来说,就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商、域名注册日期和过期日期等)。通过域名Whois服务器查询,可以查询域名归属者联系方式,以及注册和到期时间。通常情况下,whois信息均为真实信息,通过whois信息可以找到域名注册人的很多真实信息,像电话,邮箱,NS记录,是对网站进行社工非常好的信息来源,对于安全从业人员来说,快速获取whois信息,能够帮助自己掌握目标网站的很多有用信息。
而whois信息通常是保存在各级域名注册机构中,平常我们要查询whois信息都是通过godaddy、name.com、万网、新网等域名注册商网站通过查询页面提交域名进行查询,既慢又不能批量查询,太费劲了,这里我就把我珍藏很久的一个PS function贡献给大家,这个脚本支持140多种后缀的域名进行查询,尤其是一些生僻的域,找一个能支持这个域注册的注册商就不容易了,现在你不需要再为这个事情发愁了。
老规矩,先上代码,然后对关键操作进行解释:
=====文件名:Get-whois.ps1=====
function Get-WhoIs {
<# Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
# Does a raw WHOIS query and returns the results
# The simplest whois search
#.Example
# get-whois dnspod.com
#
# This example is one that forwards to a second whois server …
#.Example
# get-whois baidu.com -NoForward
#
# Returns the partial results you get when you don’t fol[......]

继续阅读

8th

更换mysql数据目录后出现ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) 的解决办法

服务器上的mysql默认数据目录为/var/lib/mysql/,同时服务器的/空间不是很大,而近期又有大量的日志需要导入进行分析,时常搞得/的空间捉襟见肘,晚上一狠心就想把mysql的数据目录转移到另外一块硬盘/data中。
于是关闭mysql服务:
service mysqld stop
转移mysql数据目录
mv /var/lib/mysql/ /data/
编辑my.cnf
vi /etc/my.cnf
修改其中的datadir和socket到新的路径
[mysqld] datadir=/data/fuhj/mysql socket=/data/fuhj/mysql/mysql.sock
本以为修改完启动mysql服务之后就没问题了。
service mysqld start
但是尽管启动服务没有问题,但是通过mysql客户端连接的时候却报错:
[root@hostXXX data]# mysql -u root -p Enter password: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
在网上搜了半天也没个所以然,一个个都是相互抄袭,各种拷贝,没有一个靠谱的。
自己分析了一下,提示说无法通过socket文件/var/lib/mysql/mysql.sock连接到mysql服务器,也就是说对于mysql程序来说,尽管我把socket文件从/var/lib/mysql/mysql.sock转移到了/data/mysql/mysql.sock我在my.cnf里指定了mysqld知道了,但是对于mysql还是会从默认的安装目录/var/lib/mysql/里找这个mysql.sock文件,找不着,就不知道从哪里启动了。
为了验证我的想法,我首先从转移后的路径做了个软连接指向到mysql的默认目录里,如果mysql程序能连上说明想法是正确的[......]

继续阅读

17th

Linux下php5.3编译oracle客户端

因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路。
1.下载Oracle客户端程序包,其中包含OCI、OCCI和JDBC-OCI等相关文件。
1.1下载文件地址
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
根据操作系统的版本选择对应的软件,我需要的是X86_64选择
Instant Client for Linux x86-64
1.2需要下载的文件如下:
oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm
oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm
oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm
需要强调的一点是这里需要注册一个oracle的账户才能正常下载。

2.安装Oracle客户端程序包。
将程序包上传到服务器指定目录里

chmod +x *.rpm

#给RPM包赋执行权限 rpm -ivh oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm

#安装RPM包 echo "/usr/lib/oracle/11.1/client64/lib/" > /etc/ld.so.conf.d/oracle_client.conf

#将库路径加到默认加载中 /sbin/ldconfig

#重新加载动态链接库

3.安装OCI8的php扩展(这里指定php的安装路径为/usr/l[......]

继续阅读

9th

PowerShell实现文件下载(类wget)

对Linux熟悉的读者可能会对Linux通过wget下载文件有印象,这个工具功能很强大,在.NET环境下提到下载文件大多数人熟悉的是通过System.Net.WebClient进行下载,这个程序集能实现下载的功能,但是有缺陷,如果碰上类似于…/scripts/?dl=417这类的下载链接将无法正确识别文件名,下载的文件通常会被命名为dl=417这样古怪的名字,其实对应的文件名是在访问这个链接返回结果的HTTP头中包含的。事实上微软也提供了避免这些缺陷的程序集System.Net.HttpWebRequestHttpWebResponse,本文将会使用这两个程序集来实现PowerShell版wget的功能。
代码不怎么复杂,基本上就是创建HttpWebRequest对象,设定UserAgent和CookieContainer以免在遇到设置防盗链的服务器出现无法下载的情况。然后通过HttpWebRequest对象的GetResponse()方法从http头中获取目标文件的大小以及文件名,以便能在下载到文件时提示当前下载进度,在下载完文件后,列出当前目录下对应的文件。代码不复杂,有任何疑问的读者可以留言给我,进行交流,下面上代码:
=====文件名:Get-WebFile.ps1=====
function Get-WebFile {
<# Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
Downloads a file or page from the web
.Example
Get-WebFile http://mirrors.cnnic.cn/apache/couchdb/binary/win/1.4.0/setup-couchdb-1.4.0_R16B01.exe
Downloads the latest version of this file to the current directory
#>

[CmdletBinding(Default[......]

继续阅读

6th

PowerShell定时抓取屏幕图像

     昨天的博文写了定时记录操作系统行为,其实说白了就是抓取了击键的记录和对应窗口的标题栏,而很多应用程序标题栏又包含当时记录的文件路径和文件名,用这种方式可以大致记录操作了哪些程序,打开了哪些文件,以及敲击了哪些按键。事实上这样记录操作系统的行为显得相对单薄一点,因为记录的内容不太形象,对于新手来说太过于隐晦了,对于人类来说,图像会比文字更加有利于用户理解。当操作系统不方便装屏幕记录软件,但又需要看已经登录用户在干什么的时候,用PowerShell的脚本来实现定时抓取图像的方式记录操作,查看图像就知道登陆用户做了什么,当然你存放图片的目录要隐蔽,不要让用户发现了为好。
     当然对于在学校计算机系的屌丝们,这个功能也可以用来了解自己的女神有什么喜好了。什么?咋把脚本安装到女神的电脑里?咋把抓的图片返回给你?拜托,这么简单的问题,还需要我帮你找答案么?女神的电脑坏了,通常都会找一个熟悉电脑软硬件的计算机系的童鞋来修的,修的时候悄悄动点手脚。图片返回的问题呢,完全可以定时抓取,然后抓取一定数量之后打包发到指定邮箱,然后删除本地图片嘛。什么?不知道PowerShell咋发邮件…你妹的,用System.Net.Mail.MailMessage组件调用SMTP发送邮件你不会?我以前写过类似文章的…好吧,送佛送到西,自己去看吧《使用PowerShell通过Smtp发送邮件》。还有就是写的脚本务必要加密,至于加密方式方法嘛,改天吧,改天专门写一篇文章写关于PowerShell脚本加密,这种事情嘛,如果被女神发现鸟,那可是吃不了兜着走的事啊。还有出去别告诉别人,我给你出的这主意,还有隐私的东西,自己把握好度,如果警察蜀黍请你去喝茶了可就不好玩了。本故事纯属虚构,如有雷同纯属巧合,本人只提供创意,如果具体实施被女神打破头,或者被警察蜀黍请去喝茶了,本人概不负任何法律责任哈。嘿嘿,不多扯了,先上今天的定时抓取屏幕图像的方法。
     其实方法不复杂,写了一个抓[......]

继续阅读

5th

PowerShell定时记录操作系统行为

     作为系统管理员,有些时候是需要记录系统中的其他用户的一些操作行为的,例如:当系统管理员怀疑系统存在漏洞,且已经有被植入后门或者创建隐藏账户时,就需要对曾经登陆的用户进行监控,保存其打开或者操作过的文件。或者在另外一个场景,当黑客拿下一个普通权限的shell之后,想看看最近有哪些用户登陆过,操作过什么,以便根据用户习惯采取进一步行动获取更高权限,这个时候记录用户行为就显得很重要了。
      可能有读者觉得此时安装个监控软件不就行了么,拜托,你入侵别人的系统,你装个监控软件,你把管理员试做无物么?这个时候PowerShell这个vista及其之后Windows操作系统都自带的强大的命令行就有了用处,系统自带,不会被管理员发现异常,脚本不用编译,如果脚本内容再加个密,他们更猜不出是干什么用的,嘿嘿。如果要记录几个特性用于记录啥时候干了什么,无非要记录的有几样内容:操作,哪个文件或程序,时间。有这几个特点就基本上可以掌握用户的操作习惯了。
      代码不算太难就不逐句解释了,有啥问题的读者可以给我留言询问,基本上关键语句都有注释的。代码如下:
=====文件名:Get-TimedOperationRecord.ps1=====
function Get-TimedOperationRecord {
<#
Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
Logs keys pressed, time and the active window.
.Parameter LogPath
Specifies the path where pressed key details will be logged. By default, keystroke are logged to ‘$($Env:TEMP)\key.log’.
.Par[......]

继续阅读

3rd

PowerShell读取Windows产品密钥

之前大多数人可能用过VBS读取Windows产品密钥的VBS脚本,VBS脚本通常都比较隐晦、难懂,今天忙里偷闲,随手写了一个用于读取Windows产品密钥的PowerShell脚本。
代码如下:
=====文件名:Get-WindowsProductKey.ps1=====
function Get-WindowsProductKey([string]$computer)
{

$comments =@’
author:fuhj(powershell#live.cn ,http://fuhaijun.com)
example: Get-WindowsProductKey .
‘@
$reg = [WMIClass] ("\\" + $computer + "\root\default:StdRegProv")
$values = [byte[]]($reg.getbinaryvalue(2147483650,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","DigitalProductId").uvalue)
$lookup = [char[]]("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")
$keyStartIn[......]

继续阅读

关于博主

个人介绍

关注领域: PowerShell,互联网技术发展,下一代互联网安全、软件测试,数据库设计,擅长系统分析、架构设计与软件项目管理。
个人介绍:毕业于兰州大学,曾任职于多家IT企业,有多年软件开发、系统架构、系统运营经验。组织和参与过多个国家和部委大型信息系统的设计、开发、测试、优化和运营工作,具有多年项目管理和团队组织经验。
本博客内容版权归 天行健 所有,如需转载请发邮件至PowerShell#live.cn(replace “#” with “@” when you mail to me)

我的MVP Profile

2011~2014年度MVP(PowerShell方向)

日历

  • 2014年十月
    « 二    
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  

分类


关于博主

个人介绍

关注领域: PowerShell,互联网技术发展,下一代互联网安全、软件测试,数据库设计,擅长系统分析、架构设计与软件项目管理。
个人介绍:毕业于兰州大学,曾任职于多家IT企业,有多年软件开发、系统架构、系统运营经验。组织和参与过多个国家和部委大型信息系统的设计、开发、测试、优化和运营工作,具有多年项目管理和团队组织经验。
本博客内容版权归 天行健 所有,如需转载请发邮件至PowerShell#live.cn(replace “#” with “@” when you mail to me)

我的MVP Profile

2011~2014年度MVP(PowerShell方向)


天空网站统计分析系统 27 queries. 0.724 seconds.