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及脚本语言技术,它是一种新的命令行外壳和脚本语[......]

继续阅读

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[......]

继续阅读

2nd

通过PowerShell发送TCP请求

很多时候我们需要通过Socket发送特定的TCP请求给服务器的特定端口来实现探测服务器的指定端口所开启的服务。很多语言都有相应的方法实现上述需求,当然,PowerShell也不例外,比如我们要发送一个简单的http请求到指定的web服务器:
GET / HTTP/1.1 Host:cn.bing.com
这里我们想请求微软必应的中文首页,如果需要通过PowerShell向cn.bing.com服务器发送get请求,就需要创建一个System.Net.Sockets.TcpClient对象,向指定的服务器和端口发送请求。
具体代码如下:
=====文件名:Send-TcpRequest.ps1=====
########################################
# Send-TcpRequest.ps1
## Send a TCP request to a remote computer, and return the response.
## If you do not supply input to this script (via either the pipeline, or the
## -InputObject parameter,) the script operates in interactive mode.
##
## Example:
##
## $http = @"
## GET / HTTP/1.1
## Host:cn.bing.com
## `n`n
## "@
##
## $http | .\Send-TcpRequest cn.bing.com 80
########################################
param(
[string] $remoteHost = "localhost",
[int] $port = 80,
[switch] [......]

继续阅读

1st

PowerShell自定义修改远程桌面RDP端口

      应朋友的要求写了一个通过PowerShell修改远程桌面(Remote Desktop)端口的脚本,不复杂,启动脚本后有两个选项:1.自定义远程桌面;2.回复远程桌面的默认端口3389
      由于这里向防火墙增加和删除例外是使用Windows8和Windows2012内置的Cmdlet: New-NetFirewallRule和Remove-NetFirewallRule。所以本脚本当前仅适用于Windows8和Windows2012以上版本的Windows操作系统,使用时请注意适用的范围。如果想兼容其他版本的windows系统,请将对应的cmdlet替换为netsh命令,具体的使用方法请参见以下帮助文档http://technet.microsoft.com/library/hh831755.aspx
      在修改RDP端口的过程中,首先修改注册表“HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”下“PortNumber”的键值为指定的端口,接下来重启Remote Desktop Services服务,并将该端口对应的防火墙入站请求添加到防火墙例外中。
      在恢复默认RDP端口的过程中,首先将之前添加的防火墙例外清理掉,然后将注册表中对应键值的端口改回3389,最后重启Remote Desktop Services服务。
      需要强调的是重启远程桌面服务的过程中远程桌面将会短时间中断,需要重新连接,并将该端口对应的防火墙入站请求添加到防火墙例外中,此处添加的仅仅是操作系统层面的防火墙例外,如果读者使用的是类似Windows Azure之类的虚拟化方案一定要对应的增加外部防火墙的例外,[......]

继续阅读

29th

PowerShell尝试ssh登录

上篇文章介绍了通过PowerShell尝试登录ftp,本文中将会向大家介绍如何通过PowerShell尝试Linux SSH登录。由于Linux登录大多是通过SSH的模式进行登录的,渗透测试时扫描到22端口监听有SSH,可以通过社工收集管理员相关信息编制字典,如果能有脚本可以基于字典对Linux进行用户名和密码的尝试,将会在渗透测试时起到很重要的作用。
在PSNet程序集中继续进行扩展,在$env:PSSpace/PSNet/TCPOp/下创建Invoke-SSHLogin.ps1脚本用于在传入指定ssh地址、用户名和密码后返回是否登录成功。
在$env:PSSpace/PSNet/下创建Lib目录用于存放在脚本中需要使用的第三方库,由于在本文中需要引用Renci.SshNet.dll用户可以从http://sshnet.codeplex.com/releases/view/72214中下载程序,解压后将文件放置在$env:PSSpace/PSNet/Lib中用于后续的调用。
在$env:PSSpace/PSNet/PSNet.psm1添加对刚下载的程序集的引用,并添加对Invoke-SSHLogin.ps1脚本的引用,在PowerShell启动时同时加载并初始化函数。
[void][reflection.assembly]::LoadFrom((Resolve-Path "$env:PSSpace/PSNet/Lib/Renci.SshNet.dll")) . $env:PSSpace/PSNet/TCPOp/Invoke-SSHLogin.ps1
上述两条语句,第一条用于获取Dll文件的绝对位置,并将dll文件 引用到当前session中。
接下来定义此函数中的相关参数:
-Site参数用于指定要尝试密码的SSH主机域名或IP,此参数必须 -User参数用于指定登录时使用的用户名,此参数必须 -Pass参数用于指定登录时使用的密码,此参数必须
此脚本文件加载后的调用方式如下:
Invoke-SSHLogin -Site loc[......]

继续阅读

关于博主

个人介绍

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

我的MVP Profile

2011~2014年度MVP(PowerShell方向)

日历

  • 2014年九月
    « 二    
    1234567
    891011121314
    15161718192021
    22232425262728
    2930  

分类


关于博主

个人介绍

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

我的MVP Profile

2011~2014年度MVP(PowerShell方向)


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