找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15829|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. y4 N, V7 g, q$ H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 a5 J, H. a7 O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) T4 v3 g6 h( a$ K5 }usage: himr <address> <value>. sample: himr 0x80040000 0x0- R+ J: u* Q6 V* \! Z

8 w; h; A: T, \
+ P# K7 ]0 T% E1 r7 \不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 N/ y! q: R8 j, a7 Q/ C9 H9 Y
1 Z9 D1 |8 i  t
补充内容 (2012-3-8 09:42):
/ f2 M  Z" h/ Dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 o1 }# S  |' d4 P
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
9 t2 I; M+ |: _8 x. g  D" [2 Y1 g2 D" K1 W
himr <address> <value>. sample: himr 0x80040000 0x0. i* r8 A+ g. a# H$ Y

/ V1 c5 k1 q) k2 k+ V% B( i( z2 ~例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  N! T* X8 V9 T. B
himr 0x80040000 0x00
' s! ]0 e2 T; O5 N+ ~2 ^0 Ihimr 0x80040001 0x11
) g! O% h7 A# x# \5 @himr 0x80040002 0x22
/ m% ]% R5 w1 p0 _+ ^himr 0x80040003 0x33
; x& t9 l# Y7 X# c# khimr 0x80040004 0x44! P8 E- ]# F  c$ V. f. A1 o1 b
himr 0x80040005 0x55
' N5 u0 M6 H3 K) Y: W7 `! I) X/ m% U5 K# G. e7 r: l. A
SN也是类似。
- N% R3 U, `& ~4 K* S9 R( Q3 B( X, Q) W& e2 ]3 U
现在主要是,谁告诉我们MAC和SN的地址?" E: a/ k; M! ]; S. L$ h8 D- }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" a' F, F. r8 o1 v一直想找到运程修改MAC和SN的办法,苦于无解啊
; J( H% h0 ?  |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* a9 W8 R" a: W! `7 P* u
& b8 ^: G1 \; l4 I) X1 c( Y9 A修改的代码早有了。到今天不会编译。
5 q& z/ K, q. C7 R. i. ^) s0 c需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 q2 g" W$ j1 f
  2. #include <malloc.h>
    1 Y5 C( u9 j" K9 f* @0 a
  3. #include <sys/types.h>
    + O! Q3 {0 T2 q! L
  4. #include <sys/stat.h>
    2 M: O7 a5 c2 w9 V+ Q
  5. #include <sys/ioctl.h>; z2 F9 c9 |5 B  P  u/ h( t; ]
  6. #include <stdio.h>
    9 R- x1 g" N( v
  7. #include <string.h>
    1 K: M% h7 T! _3 L* V1 W
  8. + o7 Z+ S( y6 {
  9. typedef struct {
    ' ^* G( _, F7 |7 h# C
  10.         unsigned int        e2prom_cmd_sub_addr;+ R- }" K+ ]+ B( J' O& N
  11.         unsigned int        sub_addr_count;
    ( f( Q' U* a7 I" w1 }4 V
  12.         unsigned char*        e2prom_cmd_data;$ M  F6 w4 {, H4 d3 Q1 M" {
  13.         unsigned int        data_count;
    " J1 p9 n5 M. j% @& d! x
  14. } e2prom_s_cmd;, R  Y; c+ ?$ j; n+ F8 \; _
  15. 9 [4 ?$ Y# u  k, I+ f
  16. #define E2PROM_CMD_READ 1( @3 V- s% [' C" c, R
  17. #define E2PROM_CMD_WRITE 2
    1 j: P  p: a9 }) b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" Q  W  m! Y+ c/ |1 |: l/ ^, S
  19. # T# j4 t, s  x9 n5 A, p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 u0 t3 S( {+ S% f# b' S
  21. {6 K0 m( ]% B, s+ Q
  22.         int fd, ret;
    8 z( {3 q) f4 T, Z, G
  23.         e2prom_s_cmd arg;3 B& @. w( k! J6 p: n
  24.         unsigned char buf[0x18];& h8 L* Z$ O; E7 K& k9 L7 y0 {

  25. & ~, [! g5 l  g, i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 K1 j% f$ Y! s/ |' s) v, P! q
  27.         if (fd  < 0) {) X0 g2 G4 G- G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. ?$ f% ^4 k# L! T: N3 y
  29.                 return -1;
    : b" l* l% G# B) R0 g8 f
  30.         }; z6 X: ]6 Q9 B
  31.         arg.sub_addr_count      = 2;' x8 {- r% J# Y5 D* }
  32.         arg.data_count          = 0x18;: a5 v: S1 G, f; ^& q5 b
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 U( `5 U% m2 `
  34.         arg.e2prom_cmd_data     = buf;
    8 e2 P) ?& L, Z6 S% Y% H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % Y1 j0 E* i9 U/ y1 x
  36.         if (ret != 0) {
    : A6 A1 S% `* l1 X/ E0 l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 ~) s! u, I, g
  38.                 return -1;. Q' o* H! O$ ?7 D5 X$ ], f
  39.         }
    % n) s7 y1 I  r
  40.         memcpy(mac, buf, 6);0 n" R7 U/ p1 T3 `
  41.         memcpy(stbid, &buf[6], 18);
    ( c" Z) @$ ]$ h2 L
  42.         stbid[18] = '\0';) W2 Z/ q% R: b2 t

  43. 8 s( g3 y" b/ t; ?. c: ~9 u! v4 T
  44.         return 0;
    3 h$ p. z8 B2 V. n  n) ]' L- y
  45. }& l+ k* A* l# l6 I$ m
  46. , v# l2 a) F' ~1 b/ K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): w; v/ M# k* \4 M( R7 L8 |
  48. {
    8 r- j; Z7 `0 ^( f# ]
  49.         int fd, ret;/ A2 p# s. E1 f* z5 V
  50.         e2prom_s_cmd arg;
    % U+ \, |5 z6 Q- D; B
  51.         unsigned char buf[0x18];) q* _3 |" r- R9 l( I' u9 {

  52. 3 c1 h. x. ^5 J1 A7 q
  53.         memcpy(buf, mac, 6);
    * J; ^" E1 [3 u  z( G4 V7 s/ o
  54.         memcpy(&buf[6], stbid, 18);$ ~& j6 J6 y/ ~! f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ k  `% \$ g. A9 d2 j' ?$ p
  56.         if (fd  < 0) {# ~9 F: u* B5 r7 C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 j" K5 N' B" J% z
  58.                 return -1;
    ( Z" |: \8 g: c: Z2 \9 s/ Y' |
  59.         }6 l8 T0 B) Q8 E2 `
  60.         arg.sub_addr_count      = 2;
    5 i* r9 @8 V  m) z! j0 Z
  61.         arg.data_count          = 0x18;. E/ d; @$ D- d9 }  p
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 j: B2 G; ?9 ]0 }0 B8 z
  63.         arg.e2prom_cmd_data     = buf;# j, W% }- j* a2 `3 i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( q! R; U+ G; ^. n! c& A. v
  65.         if (ret != 0) {
    4 M- x# m! [5 G+ q2 ]) N' R: c" X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 L2 c! ]- W6 @: Y) A( z4 G
  67.                 return -1;
    , g  k% ^: D, f7 Z, g
  68.         }3 p- L  _% n- O9 d; D8 Z% i: u! x

  69. $ C. p4 B! m- o# Y
  70.         return 0;
    ( {0 e1 Y7 m4 U3 D/ Y4 U
  71. }
    " q. N5 p" T$ R0 c9 d9 C6 P
  72. " ^4 ~6 D% h2 d! w, }
  73. int main()
      Z0 @4 D& i& n$ T) A1 N
  74. {
    7 E& ~9 y$ `* l) j0 \
  75.         char c;: B4 D% t( ]8 C6 w
  76.         int i, macs[6];4 e& ^" F6 F4 L, O( |
  77.         unsigned char mac[6];
    # f* n6 T0 Z  m8 d0 Y. c
  78.         unsigned char stbid[256];. I" e! Z2 w. X8 a/ z6 h
  79. 1 v& M, b! j# T
  80.         if (readparam(mac, stbid) < 0)% P  X; g8 D9 a5 G1 W! f
  81.                 return 1;2 i9 ^% G, Q/ J" t

  82. 5 v! a* p* P: `% Z* J/ B( Q. \
  83.         printf("Current parameters: \n");
    + M- c4 \0 x* W) ?+ G
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% @: e6 Y, l' Q9 C, M) S
  85.         printf("  STBID: %s\n", stbid);" O2 `- z5 E9 @# a$ ~
  86.         ( a) K* m7 b( e+ w7 b% Y+ ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : s: A: x5 E6 U% e% x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( c$ v9 a; W% e3 I. h; d) x
  89.                 printf("Input MAC error\n");
    ! Y, U8 Z) \" u4 L) c  t& i5 A
  90.                 return 1;
    3 b8 S  Y4 s7 }0 b4 x9 s
  91.         }
    9 s# H- T  ?& Q5 y/ C1 a4 S, z  a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & B0 w$ f! ~# @
  93.         printf("\nPlease input new STBID: ");
    + E2 K: r/ U! |- e8 `
  94.         scanf("%s", stbid);
    2 v/ r$ E. e  ]3 ]7 L8 m, s
  95.         if (strlen(stbid) != 18) {
    : G5 g8 z. i! o% S8 T- I9 j
  96.                 printf("Invalid stbid\n");; n  C- T; g( J$ k1 T$ k# N
  97.                 return 1;
    $ O& B# k7 @& Y
  98.         }
    % @# I# c  M$ U. e+ W
  99.         printf("\nNew parameters: \n");  }5 i5 y7 Q8 F0 [7 _, f1 {: j7 K. j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 ]  B9 D8 D- ~) t7 Y
  101.         printf("  STBID: %s\n", stbid);
    # F! T+ \0 K+ K$ E* q
  102. , j; q! z+ A9 J& w' a; A4 n6 z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 C( S/ d$ C; ?/ z8 p
  104.         for (;;) {$ z) a- a$ D2 V' |3 A% f! X6 y
  105.                 c = getchar();, Y) n9 W; G" Q
  106.                 if (c == 'y' || c == 'Y')
    6 F6 R' e0 C4 u5 E, S& a
  107.                         break;2 H+ c- e4 X5 N8 z0 Y
  108.                 if (c == 'n' || c == 'N') {5 S- X9 ~) P+ j5 ?9 X/ A- L! L
  109.                         printf("\nAborted.\n");
    / ?% h7 q# B3 _7 d7 m
  110.                         return 1;
    " [; \  _  h% t
  111.                 }  S% s- j! |9 J) B; G
  112.         }
    1 E. }2 L; U6 W+ t/ M2 v" Q
  113.         if (writeparam(mac, stbid) == 0)
    1 {/ O6 ]( ]; }# R& s. W' H
  114.                 printf("Parameters changed.\n");
    2 P% K) I1 d- |; {
  115. 3 F! T% t. R% _3 N) A
  116.         return 0;
    5 n# Z! C3 R& O0 s7 h% Q
  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 ; L; E. I* K! o0 N/ J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 G* d2 Y2 a* C, W7 o# Z/ i
你用的编译命令行格式是什么?: a. k+ m4 J* [+ ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-20 10:48 , Processed in 0.170963 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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