۱۲-اسفند-۱۳۹۱, ۱۹:۳۱:۰۳
۱۲-اسفند-۱۳۹۱, ۲۰:۲۰:۳۴
(۱۲-اسفند-۱۳۹۱, ۱۹:۳۱:۰۳)The.Ghost نوشته است: [ -> ]با سلام خدمت دوستان عزیز.مگه میشه آدرس مک رو تغییر داد؟
می خواستم بدونم چه شکلی می تونم با دلفی مک آدرس کارت شبکه وایرلس را تغییر بدم؟؟؟؟؟
با تشکر.
نمی شه ها!
۱۲-اسفند-۱۳۹۱, ۲۳:۲۱:۲۹
آره مک آدرس رو نمیشه تغییر داد.
حالا چرا میخوای این کارو بکنی؟
حالا چرا میخوای این کارو بکنی؟
۱۳-اسفند-۱۳۹۱, ۰۱:۲۱:۳۵
@بهزاد و حسین:
نه دوستان! تغبیر مک به صورت دائمی نمیشه!
ایشون میخوان موقتی تغیر بدن که تمام بسته با اون مک فرستاده بشن
(این قابلیت هم مودمون است اگه دقت کنید)
نه دوستان! تغبیر مک به صورت دائمی نمیشه!
ایشون میخوان موقتی تغیر بدن که تمام بسته با اون مک فرستاده بشن
(این قابلیت هم مودمون است اگه دقت کنید)
۱۳-اسفند-۱۳۹۱, ۰۲:۳۶:۰۰
با اجازه همه دوستان این کار امکان پذیر هست نرم افزار هاش موجود هست می تونید دانلود کنید.
به نظر من مهم ترین چیز حتی از آی پی مخفی کردن و یا عوض کردن مک آدرس کارت شبکه هست، این به نظر من مهم تر تا مخفی کردن آی پی.
حالا من نیاز دارم که خودم این آدرس با دلفی عوض کنم نه با برنامه دیگه.
اینم چند تا کد هست که فقط به شما لیست تمام آدرس های مک شبکه را میده.
بازم خواستید دارم.
البته به نظر من وقتی مک آدرس کارت شبکه شما همیشه در حال عوض شدن هست پس هیچ کسی نمی تواند برای شما مشکلی پیش بیاره.
البته اینم قبول دارم همین طور که نرم افزار هایی هستند که آی پی و مک آدرس مخفی می کنند، نرم افزار هایی هم وجود دارند که آی پی و مک آدرس درست را نشان میدن.
به نظر من مهم ترین چیز حتی از آی پی مخفی کردن و یا عوض کردن مک آدرس کارت شبکه هست، این به نظر من مهم تر تا مخفی کردن آی پی.
حالا من نیاز دارم که خودم این آدرس با دلفی عوض کنم نه با برنامه دیگه.
اینم چند تا کد هست که فقط به شما لیست تمام آدرس های مک شبکه را میده.
کد:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
ActiveX,
ComObj,
Variants;
function VarToStrNil(Value:Variant):string; //Dummy function to onvert an variant value to string
begin
if VarIsNull(Value) then
Result:=''
else
Result:=VarToStr(Value);
end;
Procedure GetMacAddress;
var
objWMIService : OLEVariant;
colItems : OLEVariant;
colItem : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
wmiHost, root, wmiClass: string;
function GetWMIObject(const objectName: String): IDispatch;
var
chEaten: Integer;
BindCtx: IBindCtx;//for access to a bind context
Moniker: IMoniker;//Enables you to use a moniker object
begin
OleCheck(CreateBindCtx(0, bindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));//Converts a string into a moniker that identifies the object named by the string
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));//Binds to the specified object
end;
begin
wmiHost := '.';
root := 'root\CIMV2';
wmiClass := 'Win32_NetworkAdapterConfiguration';
objWMIService := GetWMIObject(Format('winmgmts:\\%s\%s',[wmiHost,root]));
colItems := objWMIService.ExecQuery(Format('SELECT * FROM %s',[wmiClass]),'WQL',0);
oEnum := IUnknown(colItems._NewEnum) as IEnumVariant;
while oEnum.Next(1, colItem, iValue) = 0 do
//if VarToStrNil(colItem.MACAddress)<>'' then //uncomment if you only want list the interfaces with mac adress
//if colItem.IPEnabled then // uncomment if you only want list the active interfaces
begin
WriteLn('Card Description '+VarToStrNil(colItem.Caption));
WriteLn('MACAddress '+VarToStrNil(colItem.MACAddress));
end;
end;
begin
try
CoInitialize(nil);
try
GetMacAddress;
Readln;
finally
CoUninitialize;
end;
except
on E:Exception do
Begin
Writeln(E.Classname, ': ', E.Message);
Readln;
End;
end;
end.
کد:
function MacAddress: string;
var
Lib: Cardinal;
Func: function(GUID: PGUID): Longint; stdcall;
GUID1, GUID2: TGUID;
begin
Result := '';
Lib := LoadLibrary('rpcrt4.dll');
if Lib <> 0 then
begin
@Func := GetProcAddress(Lib, 'UuidCreateSequential');
if Assigned(Func) then
begin
if (Func(@GUID1) = 0) and
(Func(@GUID2) = 0) and
(GUID1.D4[2] = GUID2.D4[2]) and
(GUID1.D4[3] = GUID2.D4[3]) and
(GUID1.D4[4] = GUID2.D4[4]) and
(GUID1.D4[5] = GUID2.D4[5]) and
(GUID1.D4[6] = GUID2.D4[6]) and
(GUID1.D4[7] = GUID2.D4[7]) then
begin
Result :=
IntToHex(GUID1.D4[2], 2) + '-' +
IntToHex(GUID1.D4[3], 2) + '-' +
IntToHex(GUID1.D4[4], 2) + '-' +
IntToHex(GUID1.D4[5], 2) + '-' +
IntToHex(GUID1.D4[6], 2) + '-' +
IntToHex(GUID1.D4[7], 2);
end;
end;
end;
end;
کد:
function GetMacAddress: string;
type
// This type is defined in MSDN sample code, but tests have found this is
// not needed (on XP Pro) and Adapter can be of type TAdapterStatus. This
// method use the type in case other OSs require it
TAStat = packed record
Adapt: Nb30.TAdapterStatus;
NameBuff: array[0..29] of Nb30.TNameBuffer;
end;
var
Adapter: TAStat; // info about a network adapter
AdapterList: Nb30.TLanaEnum; // numbers for current LAN adapters
Ncb: Nb30.TNCB; // network control block descriptor
I: Integer; // loops thru all adapters in list
// ---------------------------------------------------------------------------
function NetBiosSucceeded(const RetCode: AnsiChar): Boolean;
begin
// Check RetCode is good NetBios function return value
Result := UCHAR(RetCode) = Nb30.NRC_GOODRET;
end;
// ---------------------------------------------------------------------------
begin
// Assume not adapter
Result := '';
// Get list of adapters
FillChar(Ncb, SizeOf(Ncb), 0);
Ncb.ncb_command := AnsiChar(Nb30.NCBENUM);
Ncb.ncb_buffer := PAnsiChar(@AdapterList);
Ncb.ncb_length := SizeOf(AdapterList);
if not NetBiosSucceeded(Nb30.Netbios(@Ncb)) then
Exit;
// Get status of each adapter, exiting when first valid one reached
// MSDN cautions us not to assume lana[0] is valid
for I := 0 to Pred(Integer(AdapterList.length)) do
begin
// reset the adapter
FillChar(Ncb, SizeOf(Ncb), 0);
Ncb.ncb_command := AnsiChar(Nb30.NCBRESET);
Ncb.ncb_lana_num := AdapterList.lana[I];
if not NetBiosSucceeded(Nb30.Netbios(@Ncb)) then
Exit;
// get status of adapter
FillChar(Ncb, SizeOf(Ncb), 0);
Ncb.ncb_command := AnsiChar(Nb30.NCBASTAT);
Ncb.ncb_lana_num := AdapterList.lana[I];
Ncb.ncb_callname := '* ';
Ncb.ncb_buffer := PAnsiChar(@Adapter);
Ncb.ncb_length := SizeOf(Adapter);
if NetBiosSucceeded(Nb30.Netbios(@Ncb)) then
begin
// we have a MAC address: return it
with Adapter.Adapt do
Result := Format(
'%.2x-%.2x-%.2x-%.2x-%.2x-%.2x',
[
Ord(adapter_address[0]),
Ord(adapter_address[1]),
Ord(adapter_address[2]),
Ord(adapter_address[3]),
Ord(adapter_address[4]),
Ord(adapter_address[5])
]
);
Exit;
end;
end;
end;
کد:
type
TMacAddress = array [0..5] of Byte;
function inet_addr(const IPAddress: string): ULONG;
begin
Result := ULONG(WinSock.inet_addr(PAnsiChar(AnsiString(IPAddress))));
end;
function SendARP(DestIP, SrcIP: ULONG; pMacAddr: Pointer; var PhyAddrLen: ULONG): DWORD; stdcall; external 'Iphlpapi.dll';
function GetMacAddress2(const IPAddress: string): TMacAddress;
var
MaxMacAddrLen: ULONG;
begin
MaxMacAddrLen := SizeOf(Result);
if SendARP(inet_addr(IPAddress), 0, @Result, MaxMacAddrLen)<>NO_ERROR then begin
// raise EMacAddressError.CreateFmt('Unable to do SendARP on address: ''%s''', [IPAddress]);
end;
end;
بازم خواستید دارم.
البته به نظر من وقتی مک آدرس کارت شبکه شما همیشه در حال عوض شدن هست پس هیچ کسی نمی تواند برای شما مشکلی پیش بیاره.
البته اینم قبول دارم همین طور که نرم افزار هایی هستند که آی پی و مک آدرس مخفی می کنند، نرم افزار هایی هم وجود دارند که آی پی و مک آدرس درست را نشان میدن.