找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15741|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 ^2 o3 L6 K  B# J& \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# D; P' [1 d# r* L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 V5 {( F  b7 {4 r8 e$ ?- |usage: himr <address> <value>. sample: himr 0x80040000 0x0
  |% t1 {8 h3 B3 O: r" a7 l5 x' l+ d2 q  C% A/ p0 l. L
0 J+ d9 V7 q: [2 D' w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 a# a& a4 U6 N$ Y
+ x+ q, @2 \% P+ E0 c0 r! x
补充内容 (2012-3-8 09:42):
, Z3 V; I- y9 n5 c  Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 y( M2 b5 t9 z9 ^* ^! z/ v3 U( O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
* v) N  M" m( q8 n
4 i( U5 B' e2 ^3 f4 p; Fhimr <address> <value>. sample: himr 0x80040000 0x0
" @! r# O2 \0 C2 r, j9 R6 {- Y) r& x* s2 L/ v0 e  `8 J8 q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; |+ _+ ?" N/ p% P
himr 0x80040000 0x005 T+ H7 K, y) P% H- b+ l# w  Q  s+ k
himr 0x80040001 0x11
* {& e' |% e. n  C' chimr 0x80040002 0x22
6 e, p% Q8 }/ `) v0 Zhimr 0x80040003 0x338 v4 ~; E+ h; J8 m2 Q2 M! l# g
himr 0x80040004 0x44
3 j- q3 ^' h: b+ _! j  a! r  khimr 0x80040005 0x55
0 r; s+ S$ v5 Y( d% E0 t, g9 H$ u, h5 M) i$ \
SN也是类似。
) c: c" o8 \+ U7 x! a7 s' R0 k1 S
% n1 R. _. L. a; N3 C- x现在主要是,谁告诉我们MAC和SN的地址?# w& ?- v  l, u( y/ C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 a( z* z4 y( W) I一直想找到运程修改MAC和SN的办法,苦于无解啊
" }/ e$ Q8 W# B0 u
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , H, Y" u& \* z* X9 X3 J9 `

% l6 v1 D% o5 z+ A$ ?修改的代码早有了。到今天不会编译。
/ I# @; H5 X. O( u  s需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& ^' }* Y- k; s. A' t3 X' H
  2. #include <malloc.h>' _/ n' E' {, N5 g/ K6 p
  3. #include <sys/types.h>6 w+ v! e% }; E4 y
  4. #include <sys/stat.h>" P/ Y6 e* L( o6 A& I
  5. #include <sys/ioctl.h>* @# M) q' K4 G( F- e+ b, F' ^
  6. #include <stdio.h>& u7 w" Q7 O( v4 o
  7. #include <string.h>; J9 ?# f/ m! p- f4 Y- Z. ^
  8. # V* _  C, j. t! Z. u9 N) v
  9. typedef struct {$ t- U3 r- N& d( p4 ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    . B; b7 y: S' U
  11.         unsigned int        sub_addr_count;
    ! o9 J' r) k3 B9 n8 E- x0 r) f. N
  12.         unsigned char*        e2prom_cmd_data;& g/ H7 V1 M/ w' b3 x
  13.         unsigned int        data_count;  L! C3 _+ j1 z5 F
  14. } e2prom_s_cmd;7 c, k/ q7 h% ]9 h' B) T: c
  15. / T% I( b) P) [; I; h9 T
  16. #define E2PROM_CMD_READ 19 {! H7 T: h5 Q; W4 M" V; e6 n/ R7 c
  17. #define E2PROM_CMD_WRITE 2
    + Y) H6 k5 b! N2 d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% P4 K/ F8 q6 [; l

  19. 3 }: q. o5 d) S# r3 A& N. A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ o1 I9 h  }, q# |
  21. {: W  e2 B  v3 n8 v  N! a) i4 I
  22.         int fd, ret;
    * }) t/ K0 D+ P: Y3 w
  23.         e2prom_s_cmd arg;
    0 a2 I- U& [: J* W. r7 ^
  24.         unsigned char buf[0x18];
    ' M) C& m  @# g6 k1 C/ U# T8 F+ J/ ~
  25. 3 ]; g# ]: e' o9 O/ P. T& c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( _9 j/ `* a" G8 o8 O' R% _
  27.         if (fd  < 0) {
    & X1 W2 E+ ~% L2 r$ v
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ X8 o' s' i* w9 l9 Z: N% Z
  29.                 return -1;
    ) Z( g1 Z' D! r6 ^
  30.         }4 {6 H7 J4 N7 _. P' M) D: q
  31.         arg.sub_addr_count      = 2;/ W+ r; I4 s/ w3 \9 `
  32.         arg.data_count          = 0x18;
    ( x7 Z$ U3 r" C. }+ N, ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( ~3 P7 D2 g: F
  34.         arg.e2prom_cmd_data     = buf;
    $ b5 G, [" F" [% v- G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- o: X  f$ z. s/ d, [2 r
  36.         if (ret != 0) {; o$ J  D) J' Y+ g% V2 t/ T2 N* U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % Y9 E6 j1 F0 R" }8 b4 C
  38.                 return -1;
    7 r2 A- ^/ R9 F6 _1 k
  39.         }6 i* \6 W# @- u/ t. B
  40.         memcpy(mac, buf, 6);" b9 B) P% R; [+ P
  41.         memcpy(stbid, &buf[6], 18);6 V+ g* y% S4 n
  42.         stbid[18] = '\0';
    " I0 m" `8 v* H

  43. $ n7 @) }+ B& |" W0 g
  44.         return 0;2 }0 W! x8 E, e  v" @
  45. }
    & m5 `% j7 o1 z) |) J2 K# d

  46. 6 c, `4 d0 ]7 T! ~5 h& i- R& Y. {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 w' S: f  \) q
  48. {- \: R2 p& @9 |, G# s
  49.         int fd, ret;# c' \- ?* P+ J' A- Q/ q
  50.         e2prom_s_cmd arg;
    % s$ J% W% h& `2 `' P
  51.         unsigned char buf[0x18];: B7 d: |/ t8 X8 I# u% X

  52. : W1 [3 B' v" }) T1 R
  53.         memcpy(buf, mac, 6);/ R3 A3 Z) e2 r' J: M9 Z
  54.         memcpy(&buf[6], stbid, 18);
    5 |! Z- t* X. X; e$ h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 v2 `+ w1 r4 h, q* H' g. n
  56.         if (fd  < 0) {1 ~4 N- Y: s7 b6 u( O! s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 r2 K6 N: L. g3 S# H
  58.                 return -1;. H, w, j6 E1 y5 z# Q6 @, w
  59.         }
    : u- o, Y6 v2 @& _% s# j: z" x; G
  60.         arg.sub_addr_count      = 2;
    4 v% w$ }  ~- |0 B
  61.         arg.data_count          = 0x18;
    , }2 g5 R4 w/ F. W* w6 e7 E* v
  62.         arg.e2prom_cmd_sub_addr = 0x290;) n* K& C; g3 }& f4 I
  63.         arg.e2prom_cmd_data     = buf;2 e: H# |; L% H& t6 w* Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" \$ M4 l2 d2 y7 o: V
  65.         if (ret != 0) {( G- s  H) a! V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: R& k* T( q$ d  @9 o
  67.                 return -1;. s4 p, U. a9 C2 R
  68.         }
    # x. w( ^$ z- p7 I# q: s' a3 B$ z

  69. # q$ l" Q% T& {0 s- J0 r
  70.         return 0;
    - }0 z* t4 l* M2 J
  71. }! V/ s2 @1 V' k- e. u! ?
  72. + ?/ F# a' J0 E' Q( y" E6 l
  73. int main()+ B9 }0 }. I6 }! X8 a9 ^' n
  74. {4 e2 j- I2 q4 N2 }% `1 u6 D4 u
  75.         char c;* W$ @( f& C) Z3 n% z$ Y1 S  E
  76.         int i, macs[6];* c/ J8 w5 C/ F5 S) V3 \0 d; C* v
  77.         unsigned char mac[6];. Q% k; ?' F9 a( b6 B( \' |3 L5 r+ u
  78.         unsigned char stbid[256];
    : j. |  r9 T% N- |/ v0 G+ i( I

  79. 9 g! [% c+ a$ q; w$ G  n
  80.         if (readparam(mac, stbid) < 0)* s3 A( @& N8 G/ _# L. q+ Q2 g: N
  81.                 return 1;
    / _: d2 F" Q$ v- r
  82. 7 s) u6 i" }4 W6 i9 e, s( J9 G
  83.         printf("Current parameters: \n");8 m5 V9 W$ _/ W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) J& t* [: f- G/ F
  85.         printf("  STBID: %s\n", stbid);0 o7 p6 ]8 l, }! Q3 I: o
  86.        
    ; e% z, B6 P) s5 _! I' R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , B+ }5 R. h- P- V+ C9 T. ?9 j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 s- t7 F" \7 v7 P' v
  89.                 printf("Input MAC error\n");7 C+ y+ n2 V& X% K( M9 d' z2 U
  90.                 return 1;, A$ V: h) G( z/ k/ k
  91.         }
    1 f/ h0 u3 R6 K: K+ x3 X- I7 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ S  n$ N4 a( V8 {7 s% V
  93.         printf("\nPlease input new STBID: ");2 ^# W$ t7 j6 u1 P
  94.         scanf("%s", stbid);
    * R8 J( }+ U( P! T. G
  95.         if (strlen(stbid) != 18) {8 Z% P, o, L( \) b3 z
  96.                 printf("Invalid stbid\n");
    ; L* z6 s) X0 F& T7 O
  97.                 return 1;5 Y+ n, j: ]; O* d, S! A0 i
  98.         }. P: {0 F' w& E3 B  z. q" [
  99.         printf("\nNew parameters: \n");
    ! D9 m  F0 u8 N. v- m  Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % H2 |, c% ^8 w- ?1 ]% @+ {: d
  101.         printf("  STBID: %s\n", stbid);% k) z% k$ a( t+ r5 S: E* Y
  102. 2 L. l; B# C7 F3 V8 l- F' c
  103.         printf("\nDo you want to change paramemters? (y/N) ");; w4 R! v- F2 S; k  O
  104.         for (;;) {' W  g0 K9 E& q0 v
  105.                 c = getchar();
    6 o: Z, F9 q; f; X2 y; B
  106.                 if (c == 'y' || c == 'Y')
    ' D# G7 C+ f5 U. Y" C& K) w0 b+ q
  107.                         break;
    : ^* z. A6 w- [  U3 a' C/ f# U
  108.                 if (c == 'n' || c == 'N') {* i, K* h% }# r$ a
  109.                         printf("\nAborted.\n");
    2 W2 }( q& \$ m7 k# |
  110.                         return 1;
    8 Z% M! x, {3 n# ?4 e, n
  111.                 }( Z$ q) H, R& J3 i
  112.         }
    . `' D0 q5 F& M7 n- j
  113.         if (writeparam(mac, stbid) == 0) * {5 p- x0 H& T8 ^( e4 B
  114.                 printf("Parameters changed.\n");
    ' J" Q8 o" K/ f

  115. ' q  U; V+ q0 }
  116.         return 0;
    * y1 Y8 a0 j  Q, V9 j
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
  K% Z' z4 y" i  b2 ~3 D  `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; N. P9 W/ ]3 |9 P
你用的编译命令行格式是什么?0 O+ w4 Z7 K! p, A; Q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-11 08:53 , Processed in 0.035786 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表