Shorter mipsle shell_reverse_tcp
Add formatting blank lines and delete comment
Don't use a temporary registerfor the dup2 loop counter
Update msftidy to check for double quotes
Add Rex::Proto::PJL and PoC modules
Address @wchen-r7's comments
Address @jlee-r7's comments
Add filesystem commands and new PoC modules

This commit also refactors some of the code.
Refactor away leftover get_rdymsg
Remove newline from end_job to conform to spec
Replace magic numbers with constants
Refactor commands for modularity
Move {begin,end}_job from libs to modules
Make the module output prettier
Add rspec
retab
Ensure full coverage
Sercomm Exploit module fixes

Added targets for 8 specific targets that I've tested: Cisco WAP4410N,
Honeywell WAP-PL2 IP Camera, Netgear DG834, Netgear DG834G, Netgear
DG834PN, Netgear DGN1000, Netgear DSG835, Netgear WPNT834
Added functionality to the CmdStagerEcho mix-in to support encoding via
octal instead of hex based on the :enc_type option. This is because many
devices would not output hex encoded values properly.
Added options on a per-target basis for the PackFormat (endian pack()
values for communication), UploadPath (because /tmp wasn't always
writable), and PayloadEncode (previously mentioned octal encoding
option)
Note for some reason, some devices communicate over one endianness, but
then require a payload for the other endianess. I'm not sure what's
causing this, but if those specific combinations are not used, the
exploit fails. More research may be required for this.
Fixed bug that caused runtime error in module_rank.rb
Fixed the credential parsing and made output consistent

So in the previous refactor, we made the dedicated method to parse
usernames and passwords from the split up config values. However, that
didn't work, because on a single iteration of the loop, you only have
access to a possible username OR password. The other matching key will
be another iteration of the loop. Because of this, no credential pairs
were being reported.

The only way I can see around this (maybe because I'm a ruby newb) would
be to iterate over configs, and if the user or password regex matches,
add the matching value to a hash, which is identified by a key for both
user & pass. Then upon completion of the loop, it'd iterate over the
hash, finding keys that had both user & pass values.