mINFO - System info

By pwnflakes on Jun 03, 2017

mINFO is a system information script for mIRC comprised of a dll written with C/C++ and a MRC script. I decided to create it due to a popular script (darkengine) being no longer maintained. I started by cloning darkengine's functionality completely and going from there. Credit to "aprentice", the original creator of that project. I started this project in 2012, forgot about it, went back and finished it in 2014, and I figured I haven't really shared it further than a few friends, hence this post. It works on the same concept of a mIRC script performing dll calls for information. There are several improvements and added features from the original project, such as an easily customisable main output message, with a preview included. Windows Vista is the minimum supported OS (none of you should be on XP!). Visual C++ 2010 Redistributable needed. For those not wanting to use a DLL, there are scripts that can query WMI through mIRC script for a lot of this data.

mINFO1
mINFO2
mINFO3

DLL download available at http://pwnflak.es/minfo/ -- find me in #minfo at irc.equalify.me for support/ideas

; mINFO
;
; Software developed by PwnFlakes (c) 2012-2014
; 
; irc://irc.equalify.me/mINFO
; http://pwnflak.es/mINFO

; Set default output string, and mINFO.dll location
; ---
ON *:LOAD: {
  if (!%mINFO.dll) { set %mINFO.dll $qt($scriptdir $+ mINFO.dll) }
  if (!%mINFO.sysstr) { set %mINFO.sysstr OS: .winver. CPU: .cpuname. Video: .videocard. Sound: .soundcard. Memory: .memory_load. Uptime: .uptime_short. HD Space: .hd_total. }
  if (!%mINFO.NIC) { nicselect }
  echo -ae mINFO installed sucessfully...
}

; Operating System Information
; ----
alias osver { mim Operating System: $mi(winver) }
alias winuser { mim Windows User: $mi(win_username) }
alias uptime { mim Uptime: $mi(uptime_short) }
alias luptime { mim Uptime: $mi(uptime) }
alias winstall { mim Installed On: $mi(win_install_date) }
alias winall { mim OS Info: $mi(winver) $+  [ $+ $mi(win_username) $+ ] installed on  $+ $mi(win_install_date) }
alias pcname { mim Computer Name: $mi(computer_name) }

; Central Processing Unit Information
; ----
alias cpu { mim CPU: $mi(cpuname) }
alias cpuspeed { mim CPU Speed: $mi(cpuspeed) }
alias cpuload { mim CPU Load: $mi(cpuload) }
alias cpu_cores { mim CPU Cores: $mi(cpu_core_count) }
alias cputemp { mim CPU Temp: $mi(cputemp) }
alias cpusocket { mim CPU Socket: $mi(cpu_socket) }
alias extclock { mim External Clock: $mi(ext_clock) MHz }
alias l1cache { mim L1 Cache: $mi(l1_cache) KB }
alias l2cache { mim L2 Cache: $mi(l2_cache) KB }
alias l3cache { mim L3 Cache: $mi(l3_cache) KB }

; Video Information 
; ----
alias res { mim Resolution: $mi(screen_res) }
alias monitor { mim Monitor: $mi(monitor) }
alias videocard { mim Video Card: $mi(videocard) }
alias video { mim Video: $mi(monitor) on $mi(videocard) }

; Sound Information
; ----
alias soundcard { mim Sound Card: $mi(soundcard) }

; Internet Information
; ----
alias nicselect { $dllcall(%mINFO.dll, necessary, nicselect , ) }
alias bandwidth { mim Bandwidth: $dll(%mINFO.dll, bandwidth, %mINFO.NIC) }
alias adapterinfo { mim Connection: $dll(%mINFO.dll, adapterinfo, %mINFO.NIC) }
alias totalbw { mim Downloaded: $dll(%mINFO.dll, bw_total_down, %mINFO.NIC) MB  $+ $mik Uploaded: $dll(%mINFO.dll, bw_total_up, %mINFO.NIC) MB }
alias downstream { mim Downstream: $dll(%mINFO.dll, down_speed, %mINFO.NIC) Kb/s }
alias upstream { mim Upstream: $dll(%mINFO.dll, up_speed, %mINFO.NIC) Kb/s }
alias currentbw { mim Downstream: $dll(%mINFO.dll, down_speed, %mINFO.NIC) Kb/s  $+ $mik Upstream: $dll(%mINFO.dll, up_speed, %mINFO.NIC) Kb/s }

; Hard Drive Information
; ----
alias harddrive_space { mim Hard Drives: $mi(harddrive_space) }
alias hdtotal { mim Total Free: $mi(hd_total) }
alias opticaldrive { mim Optical Drive: $mi(opticaldrive) }

; Memory Information
; ----
alias memload { mim Memory Load: $mi(memory_load) }
alias memavail { mim Available Memory: $mi(memory_avail) MB }
alias memtotal { mim Total Memory: $mi(memory_total) MB }
alias memused { mim Used Memory: $mi(memory_used) MB }
alias memratio { mim RAM: Used: $mi(memory_used) $+ / $+ $mi(memory_total) MB }
alias memall { mim RAM: Used $mi(memory_used) $+ / $+ $mi(memory_total) $+ MB ( $+ $mi(memory_load) Load $+ ) }
alias memslots { mim Memory Slots: $mi(memory_slots) }
alias memspeed { mim Memory Speed: $mi(memory_speed) }

; BIOS Information
; ----
alias biosversion { mim Bios Version: $mi(bios_version) }
alias biosvendor { mim Bios Vendor: $mi(bios_vendor) }
alias biosdate { mim Bios Date: $mi(bios_date) }
alias biosall { mim Bios: $mi(bios_vendor)  $+ $mik $+ Version: $mi(bios_version)  $+ $mik $+ Date: $mi(bios_date) }

; Mainboard Funcs
; ----
alias mobo_manu { mim Motherboard Vendor: $mi(mobo_vendor) }
alias mobo_name { mim Motherboard Name: $mi(mobo_name) }
alias mobo_ver { mim Motherboard Version: $mi(mobo_version) }
alias mobo_all { mim Motherboard: $mi(mobo_name)  $+ $mik $+ Vendor: $mi(mobo_vendor)  $+ $mik $+ Version: $mi(mobo_version) }

; Misc Functions
; ----
alias about { $mi(about) }
alias ver { msg $active mINFO $mi(version) }
alias sys { msg $active $regsubex(%mINFO.sysstr, /(?:\.)(.*?)(?:\.)/gi, $mi( $+ \t $+ )) }

; Core Functions (do not modify)
; ----
alias fmi { flushini minfo.ini }
alias mi { return $dll(%mINFO.dll, $1,) }
alias mim { msg $active  $+ $mik $+  $+ $1- } 
alias mik { if ($isid == $true) { return $readini(minfo.ini,options,color) } | if ($isid == $false) { writeini minfo.ini options color $remove($1,) | flushini minfo.ini } }
alias necessary { }
alias systags { return .winver. .cpuname. .videocard. .soundcard. .memory_load. .uptime_short. .hd_total. }
alias defout { set %mINFO.sysstr OS: .winver. CPU: .cpuname. Video: .videocard. Sound: .soundcard. Memory: .memory_load. Uptime: .uptime_short. HD Space: .hd_total. }
alias minprev { clear @mInfo | echo @mInfo mINFO Output Preview | echo @mInfo   | echo @mInfo $1- | //echo @mInfo $regsubex($1-, /(?:\.)(.*?)(?:\.)/gi, $mi( $+ \t $+ )) }

; ---------------------------------------------------------------
; Script Menus
; ---------------------------------------------------------------

menu channel,query {
  -
  mINFO DLL
  .-
  .System Information:/sys
  .-
  Operating System
  ..Version:/osver
  ..Username:/winuser
  ..Computer Name:/pcname
  ..Install Date:/winstall
  ..-
  ..Show All:/winall
  Processor Details
  ..Name:/cpu
  ..Load:/cpuload
  ..Clock Speed:/cpuspeed
  ..External Clock Speed:/extclock
  ..-
  ..Socket:/cpusocket
  ..Total Cores:/cpu_cores
  ..-
  ..L1 Cache:/l1cache
  ..L2 Cache:/l2cache
  ..L3 Cache:/l3cache
  Memory
  ..Memory Load:/memload
  ..-
  ..Total Memory Used:/memratio
  ..Total Memory Slots:/memslots
  ..-
  ..All Physical:/memall
  ..-
  ..Memory Speed:/memspeed
  Hard Drive
  ..Total Space (Local):/hdtotal
  ..Optical Drive:/opticaldrive
  ..-
  ..Show All Drives: /harddrive_space
  Uptime
  ..System Uptime:/luptime
  ..-
  ..Record Uptime:/record
  Video
  ..Video Card:/videocard
  ..-
  ..Screen Resolution:/res
  ..Monitor(s):/monitor
  ..-
  ..Show All:/Video
  .Sound Card:/soundcard
  Internet
  ..Connection Info:/adapterinfo
  ..-
  ..Current Downstream Usage:/downstream
  ..Current Upstream Usage:/upstream
  ..Current Bandwidth Usage:/currentbw
  ..-
  ..Total Transferred:/totalbw
  ..-
  ..Select Adapter:/nicselect
  Motherboard
  ..Manufacturer:/mobo_manu
  ..Product Name:/mobo_name
  ..Version:/mobo_ver
  ..All:/mobo_all
  System Bios
  ..Vendor:/biosvendor
  ..Date:/biosdate
  ..Version:/biosversion
  ..All:/biosall
  .-
  ..Dialog:/mindialoga
  .-
  Help
  ..About:/about
  ..Version:/ver
}

; ---------------------------------------------------------------
; AIO DIalog
; ---------------------------------------------------------------

alias mindialoga {
  dialog -m mindialoga mindialoga
}

dialog mindialoga {
  title "mINFO :: Settings"
  size -1 -1 321 225
  option dbu
  tab "Settings", 1, 3 14 314 190
  combo 3, 7 47 306 10, tab 1 sort edit drop
  text "$systags", 4, 8 34 305 9, tab 1
  box "Preview", 6, 7 61 306 70, tab 1
  box "Preview Area", 7, 11 69 298 58, tab 1
  box "Misc Settings", 59, 7 136 306 60, tab 1
  text "mINFO.dll", 60, 12 145 30 8, tab 1 right
  edit "", 61, 44 144 230 10, disable tab 1
  button "Change", 62, 275 144 35 10, tab 1
  text "NIC", 63, 12 157 30 8, tab 1 right
  button "Change", 65, 275 156 35 10, tab 1
  edit "", 64, 44 156 230 10, disable tab 1
  tab "System Information", 2
  box "Internet/Network Interfaces", 24, 7 160 209 40, tab 2
  box "Peripherals", 15, 7 111 209 49, tab 2
  box "General Information", 10, 7 29 209 82, tab 2
  text "OS:", 11, 12 38 42 8, tab 2 right
  edit "", 12, 55 37 156 10, tab 2 read autohs
  text "Uptime:", 13, 12 48 42 8, tab 2 right
  edit "", 14, 55 47 156 10, tab 2 read autohs
  text "Install Date:", 16, 12 58 42 8, tab 2 right
  edit "", 17, 55 57 156 10, tab 2 read autohs
  text "CPU Info:", 18, 12 68 42 8, tab 2 right
  edit "", 19, 55 67 156 10, tab 2 read autohs
  text "Optical Drive:", 20, 12 78 42 8, tab 2 right
  edit "", 21, 55 77 156 10, tab 2 read autohs
  text "Memory Free:", 22, 12 88 42 8, tab 2 right
  edit "", 23, 55 87 156 10, tab 2 read autohs
  text "Hard Disk Usage:", 25, 12 98 42 8, tab 2 right
  text "Display:", 26, 12 119 42 8, tab 2 right
  edit "", 27, 55 118 156 10, tab 2 read autohs
  text "Monitor:", 28, 12 129 42 8, tab 2 right
  edit "", 29, 55 128 156 10, tab 2 read autohs
  text "Graphics Card:", 30, 12 139 42 8, tab 2 right
  edit "", 31, 55 138 156 10, tab 2 read autohs
  text "Sound Card:", 32, 12 149 42 8, tab 2 right
  edit "", 33, 55 148 156 10, tab 2 read autohs
  text "Network:", 34, 12 169 42 8, tab 2 right
  edit "", 35, 55 168 156 10, tab 2 read autohs
  text "Connection:", 36, 12 179 42 8, tab 2 right
  edit "", 37, 55 178 156 10, tab 2 read autohs
  button "Refresh", 39, 218 188 95 12, tab 2
  text "Bandwidth:", 41, 12 189 42 8, tab 2 right
  edit "", 40, 55 97 156 10, tab 2 read autohs
  edit "", 42, 55 188 156 10, tab 2 read autohs
  text "Version:", 46, 221 47 22 8, tab 2 right
  text "Date:", 47, 221 57 22 8, tab 2 right
  edit "", 48, 244 36 65 10, tab 2 read autohs
  edit "", 49, 244 46 65 10, tab 2 read autohs
  box "BIOS", 51, 218 29 95 41, tab 2
  text "Vendor:", 45, 221 37 22 8, tab 2 right
  edit "", 50, 244 56 65 10, tab 2 read autohs
  box "Motherboard", 44, 218 70 95 41, tab 2
  text "Model:", 53, 221 89 22 8, tab 2 right
  text "Version:", 55, 221 99 22 8, tab 2 right
  text "Vendor:", 52, 221 79 22 8, tab 2 right
  edit "", 54, 244 98 65 10, tab 2 read autohs
  edit "", 56, 244 88 65 10, tab 2 read autohs
  edit "", 57, 244 78 65 10, tab 2 read autohs
  text "mINFO :: System information for mIRC", 43, 3 5 313 8, disable center
  button "Save", 8, 235 208 37 12, ok
  button "Close", 9, 275 208 37 12, cancel
  text "mINFO Version", 5, 6 211 94 8, disable
  link "irc://irc.equalify.me/minfo/", 38, 128 214 67 8
  link "http://pwnflak.es/minfo/", 58, 130 206 62 8
}

on *:dialog:mindialoga:*:*: {
  var %dn = $dname, %de = $devent, %pw = @mInfo
  if (%de == init) {
    window -hk0do +dL @mInfo 0 0 0 0
    dll %mINFO.dll dock $window(%pw).hwnd
    did -ra $dname 4 $+([,$chr(32),$replace($systags,$chr(32),$+($chr(32),|,$chr(32))),$chr(32),])
    did -a %dn 5 $mi(version)
    did -ra %dn 61 $qt(%mINFO.dll)
    did -ra %dn 64 %mINFO.NIC
    did -a %dn 3 %mINFO.sysstr
    did -c %dn 3 $didwm($dname,3,%mINFO.sysstr)
    $minprev($did($dname,3).text)

    ;refreshmindialoga
  }
  elseif (%de == sclick) {
    if ($did == 8) {
      set %mINFO.sysstr $did(%dn,3).text
      echo -t mINFO :: Settings have been saved/updated.
    }
    elseif ($did == 39) {
      refreshmindialoga
    }
    elseif ($did == 62) {
      var %dllf = $sfile($scriptdir $+ scripts\mINFO.dll,Select mINFO.dll)
      if ($exists(%dllf)) { set %mINFO.dll $qt(%dllf) }
      did -ra %dn 61 $noqt(%mINFO.dll)
      did $iif($exists($qt(%mINFO.dll)),-b,-e) %dn 69
      did -ra %dn 62 $iif($exists($qt(%mINFO.dll)),Change,set)
    }
    elseif ($did == 65) {
      nicselect
      did -ra %dn 64 %mINFO.NIC
    }
    elseif ($did == 2) {
      did -ra %dn 12 $mi(winver)
      did -ra %dn 17 $mi(win_install_date)
      did -ra %dn 21 $mi(opticaldrive)
      did -ra %dn 27 $mi(screen_res)
      did -ra %dn 29 $mi(monitor)
      did -ra %dn 31 $mi(videocard)
      did -ra %dn 33 $mi(soundcard)
      did -ra %dn 48 $mi(bios_vendor)
      did -ra %dn 49 $mi(bios_version)
      did -ra %dn 50 $mi(bios_date)
      did -ra %dn 57 $mi(mobo_vendor)
      did -ra %dn 56 $mi(mobo_name)
      did -ra %dn 54 $mi(mobo_version)
      did -ra %dn 14 $mi(uptime)
      did -ra %dn 19 $mi(cpuname) ( $+ $mi(cpuload) Load)
      did -ra %dn 23 $mi(memory_all)
      did -ra %dn 40 $mi(hd_total)
      did -ra %dn 37 $dll(%mINFO.dll, bandwidth, %mINFO.NIC)
      did -ra %dn 35 %mINFO.NIC
      did -ra %dn 42 $dll(%mINFO.dll, bw_total_down, %mINFO.NIC) MB Uploaded: $dll(%mINFO.dll, bw_total_up, %mINFO.NIC) MB
    }
    elseif ($istok(38 58,$did,32)) { url $did(%dn,$did).text }
  }
  elseif (%de == edit) {
    if ($did == 3) {
      $minprev($did(%dn,3).text)
    }
  }
  elseif (%de == close) {
    window -c %pw
  }
}

alias -l refreshmindialoga {
  if ($dialog(mindialoga)) {
    did -ra mindialoga 14 $mi(uptime)
    did -ra mindialoga 19 $mi(cpuname) ( $+ $mi(cpuload) Load)
    did -ra mindialoga 27 $mi(screen_res)
    did -ra mindialoga 37 $dll(%minfo.dll, bandwidth, %mINFO.NIC)
    did -ra mindialoga 35 %mINFO.NIC
    did -ra mindialoga 42 $dll(%minfo.dll, bw_total_down, %mINFO.NIC) MBUploaded: $dll(%minfo.dll, bw_total_up, %mINFO.NIC) MB
    did -ra mindialoga 23 $mi(memory_all)
    did -ra mindialoga 40 $mi(hd_total)
  }
}

Comments

Sign in to comment.
ovelayer   -  Aug 04, 2018

link to download dll no longer works

 Respond  
rebel9   -  Jun 09, 2017

.

pwnflakes  -  Jul 10, 2017

There's no real benefit to not using a DLL, except for paranoid relief. The source for this will be going up soon anyway :) I've compared mINFO to the mSL+WMI methods and a DLL seems to be faster. Even DarkEngine was faster, and there is also a live preview in mINFO which you couldn't do with mSL alone. Also I think many will find the easily customisable quick string to their liking (.cpu. etc)

rebel9  -  Jul 10, 2017

I think you're caring too much about systeminfo to want to use a .dll for this. its 2017, we don't use that shit anymore, lol. Good work though I guess? wrong era for .dll's. Really, mirc is out of date, everyone is on irssi, weechat, hexchat, and webchats with hexip revealing themselves and irccloud with the notorious bug to grab ip's. Sir, get up to date! :D

pwnflakes  -  Jul 12, 2017

It's nothing to do with caring too much; some things you cannot retrieve through WMI, and certain things like the output preview also cannot be done afaik. Did you honestly just say we don't use DLL's anymore in 2017? I'm not sure what world you live in but dll's are integral to many things everywhere. Even if you just mean with mIRC plugins, mSL simply can't do everything lol.

mIRC is out of date but still arguably one of the best and most extensible clients for Windows. It still gets updates and is just as stable as the next client! Do you still use it at all? I'd love to share some things with you!

rebel9  -  Jul 15, 2017

Yes I use it, I can write mSL myself but if you have some things you could show me that are better than what I do, I'd be happy to take a look. irc.internetz.me +6697. i don't need all those extra things you can't retrieve through WMI is why it doesn't matter to me, and I pull a lot of information through my method.

Sign in to comment

Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.